yourkarma/JWT

View on GitHub
Example/JWTDesktopSwift/JWTDesktopSwift/ViewController+Model.swift

Summary

Maintainability
A
30 mins
Test Coverage
//
//  ViewController+Model.swift
//  JWTDesktopSwift
//
//  Created by Lobanov Dmitry on 30.10.2017.
//  Copyright © 2017 JWTIO. All rights reserved.
//

import Foundation
import JWT
import JWTDesktopSwiftToolkit

extension ViewController {
    class Model {
        var appearance: TokenTextAppearance = .init()
        var decoder: TokenDecoder = .init()
        var signatureValidation: SignatureValidationType = .unknown
    }
    
    enum DataSeedType {
        case hs256
        case rs256
        struct DataSeed {
            var algorithmName: String
            var secret: String
            var token: String
        }
        var dataSeed: DataSeed {
            switch self {
            case .hs256:
                let algorithmName = JWTAlgorithmNameHS256
                let secret = "secret"
                let token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ"
                return .init(algorithmName: algorithmName, secret: secret, token: token)
            case .rs256:
                let algorithmName = JWTAlgorithmNameRS256
                let secret = "-----BEGIN PUBLIC KEY-----MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoPryo3IisfK3a028bwgso/CW5kB84mk6Y7rO76FxJRTWnOAla0Uf0OpIID7go4Qck66yT4/uPpiOQIR0oW0plTekkDP75EG3d/2mtzhiCtELV4F1r9b/InCN5dYYK8USNkKXgjbeVyatdUvCtokz10/ibNZ9qikgKf58qXnn2anGvpE6ded5FOUEukOjr7KSAfD0KDNYWgZcG7HZBxn/3N7ND9D0ATu2vxlJsNGOkH6WL1EmObo/QygBXzuZm5o0N0W15EXpWVbl4Ye7xqPnvc1i2DTKxNUcyhXfDbLw1ee2d9T/WU5895Ko2bQ/O/zPwUSobM3m+fPMW8kp5914kwIDAQAB-----END PUBLIC KEY-----"
                let token = "eyJraWQiOiJqd3RfdWF0X2tleXMiLCJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiI1MDAxIiwiaXNzIjoiQ0xNIiwiZXhwIjoxNTA4MjQ5NTU3LCJqdGkiOiI2MjcyM2E4Yi0zOTZmLTQxYmYtOTljMi02NWRkMzk2MDNiNjQifQ.Cej8RJ6e2HEU27rh_TyHZBoMI1jErmhOfSFY4SRzRoijSP628hM82XxjDX24HsKqIsK1xeeGI1yg1bed4RPhnmDGt4jAY73nqguZ1oqZ2DTcfZ5olxCXyLLaytl2XH7-62M_mFUcGj7I2mwts1DQkHWnFky2i4uJXlksHFkUg2xZoGEjVHo0bxCxgQ5yQiOpxC5VodN5rAPM3A5yMG6EijOp-dvUThjoJ4RFTGKozw_x_Qg6RLGDusNcmLIMbHasTsyZAZle6RFkwO0Sij1k6z6_xssbOl-Q57m7CeYgVHMORdzy4Smkmh-0gzeiLsGbCL4fhgdHydpIFajW-eOXMw"
                return .init(algorithmName: algorithmName, secret: secret, token: token)
            }
        }
    }
}

// JWT
extension ViewController.Model {
    var availableAlgorithms: [JWTAlgorithm] {
        JWTAlgorithmFactory.algorithms
    }
    var availableAlgorithmsNames: [String] {
        self.availableAlgorithms.map(\.name)
    }
}