XYOracleNetwork/sdk-core-swift

View on GitHub
Sources/sdk-core-swift/network/XyoChoicePacket.swift

Summary

Maintainability
B
4 hrs
Test Coverage
//
//  XyoChoicePacket.swift
//  sdk-core-swift
//
//  Created by Carter Harrison on 1/29/19.
//  Copyright © 2019 XYO Network. All rights reserved.
//

import Foundation

public struct XyoChoicePacket {
    private let data : [UInt8]

    init(data : [UInt8]) {
        self.data = data
    }
    
    func getChoice () throws -> [UInt8] {
        if (data.count == 0) {
            throw XyoObjectError.OUTOFINDEX
        }
        
        let sizeOfChoice = getSizeOfChoice()
        
        if (sizeOfChoice + 1 > data.count || sizeOfChoice == 0) {
            throw XyoObjectError.OUTOFINDEX
        }
        
        return XyoBuffer(data: data).copyRangeOf(from: 1, toEnd: sizeOfChoice + 1).toByteArray()
    }
    
    func getResponse () throws -> [UInt8] {
        if (data.count == 0) {
            throw XyoObjectError.OUTOFINDEX
        }
        
        let sizeOfChoice = getSizeOfChoice()
        
        if (sizeOfChoice + 1 > data.count || sizeOfChoice == 0) {
            throw XyoObjectError.OUTOFINDEX
        }
        
        return XyoBuffer(data: data).copyRangeOf(from: sizeOfChoice + 1, toEnd: data.count).toByteArray()
    }
    
    private func getSizeOfChoice () -> Int {
        return Int(XyoBuffer(data: data).getUInt8(offset: 0))
    }
}