mirror of
https://github.com/SideStore/SideStore.git
synced 2026-02-09 06:43:25 +01:00
70 lines
1.4 KiB
Swift
70 lines
1.4 KiB
Swift
|
|
//
|
||
|
|
// Patron.swift
|
||
|
|
// AltStore
|
||
|
|
//
|
||
|
|
// Created by Riley Testut on 8/21/19.
|
||
|
|
// Copyright © 2019 Riley Testut. All rights reserved.
|
||
|
|
//
|
||
|
|
|
||
|
|
import Foundation
|
||
|
|
|
||
|
|
extension PatreonAPI
|
||
|
|
{
|
||
|
|
struct PatronResponse: Decodable
|
||
|
|
{
|
||
|
|
struct Attributes: Decodable
|
||
|
|
{
|
||
|
|
var full_name: String
|
||
|
|
var patron_status: String
|
||
|
|
}
|
||
|
|
|
||
|
|
struct Relationships: Decodable
|
||
|
|
{
|
||
|
|
struct Tiers: Decodable
|
||
|
|
{
|
||
|
|
struct TierID: Decodable
|
||
|
|
{
|
||
|
|
var id: String
|
||
|
|
var type: String
|
||
|
|
}
|
||
|
|
|
||
|
|
var data: [TierID]
|
||
|
|
}
|
||
|
|
|
||
|
|
var currently_entitled_tiers: Tiers
|
||
|
|
}
|
||
|
|
|
||
|
|
var id: String
|
||
|
|
var attributes: Attributes
|
||
|
|
|
||
|
|
var relationships: Relationships?
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
extension Patron
|
||
|
|
{
|
||
|
|
enum Status: String, Decodable
|
||
|
|
{
|
||
|
|
case active = "active_patron"
|
||
|
|
case declined = "declined_patron"
|
||
|
|
case former = "former_patron"
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
class Patron
|
||
|
|
{
|
||
|
|
var name: String
|
||
|
|
var identifier: String
|
||
|
|
|
||
|
|
var status: Status
|
||
|
|
|
||
|
|
var benefits: Set<Benefit> = []
|
||
|
|
|
||
|
|
init(response: PatreonAPI.PatronResponse)
|
||
|
|
{
|
||
|
|
self.name = response.attributes.full_name
|
||
|
|
self.identifier = response.id
|
||
|
|
self.status = Status(rawValue: response.attributes.patron_status) ?? .former
|
||
|
|
}
|
||
|
|
}
|