An API wrapper for bitFlyer that supports all providing API.
https://lightning.bitflyer.jp/docs
Fetch a market list.
import SwiftFlyer let request = GetMarketListRequest() ApiSession.shared.send(request) { result in switch result { case .success(let markets): print(markets) case .failed(let e): // Error handling break } }Response:
[ SwiftFlyer.Market(productCode: SwiftFlyer.ProductCode.btc_jpy, alias: nil), SwiftFlyer.Market(productCode: SwiftFlyer.ProductCode.fx_btc_jpy, alias: nil), SwiftFlyer.Market(productCode: SwiftFlyer.ProductCode.eth_btc, alias: nil), SwiftFlyer.Market(productCode: SwiftFlyer.ProductCode.bch_btc, alias: nil) ] Generate API keys: https://lightning.bitflyer.jp/developer
Check your balance.
import SwiftFlyer ... // For access private API. BitFlyer.apiKey = // Your API Key BitFlyer.apiSecretKey = // Your API Secret Key let request = GetBalanceRequest() ApiSession.shared.send(request) { result in switch result { case .success(let markets): print(markets) case .failed(let e): // Error handling break } }Response:
[ SwiftFlyer.Balance(amount: 0.0, available: 0.0, currencyCode: SwiftFlyer.CurrencyCode.jpy), SwiftFlyer.Balance(amount: 0.0, available: 0.0, currencyCode: SwiftFlyer.CurrencyCode.btc), SwiftFlyer.Balance(amount: 0.0, available: 0.0, currencyCode: SwiftFlyer.CurrencyCode.bch), SwiftFlyer.Balance(amount: 0.0, available: 0., currencyCode: SwiftFlyer.CurrencyCode.eth), SwiftFlyer.Balance(amount: 0.0, available: 0.0, currencyCode: SwiftFlyer.CurrencyCode.etc), SwiftFlyer.Balance(amount: 0.0, available: 0.0, currencyCode: SwiftFlyer.CurrencyCode.ltc), SwiftFlyer.Balance(amount: 0.0, available: 0.0, currencyCode: SwiftFlyer.CurrencyCode.mona) ] Use RealTImeAPI in your project.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { // If you want retrive realtime information, set channels and call `subscribe` of RealTimeAPI. typealias Channel = RealTimeAPI.SubscribeChannel // Set channels for subscribing realtime api from bitFlyer RealTimeAPI by using JSON RPC over WebSocket. let subscribeChannels: [String] = [ Channel.SnapShot.boardSnap_fx_btc_jpy.targetChannel, Channel.Board.board_fx_btc_jpy.targetChannel, Channel.Ticker.ticker_fx_btc_jpy.targetChannel, Channel.Execution.execution_fx_btc_jpy.targetChannel ] // Start observing realtime API. RealTimeAPI.shared.subscribe(with: subscribeChannels) ... }After subscribe realtime API, you should implement RealTimeAPIDelegate into your class.
class ViewController: UIViewController { private let realtime: RealTimeAPI = .shared override func viewDidLoad() { super.viewDidLoad() // Set realtime API delegate for get your setted object. realtime.delegate = self } } extension UIViewController: RealTimeAPIDelegate { public func didReceiveSnapShot(_ snapshot: Board) { print(snapshot) } public func didReceiveBoardDiff(_ board: Board) { print(board) } public func didReceiveTicker(_ ticker: Ticker) { print(ticker) } public func didReceiveExecution(_ executions: [Execution]) { print(executions) } }XCode 9+
Swift 4+
$ pod repo update And add this to your Podfile:
pod 'SwiftFlyer'and
$ pod install
Add this to your Cartfile:
github "rinov/SwiftFlyer"
and
$ carthage update
- Add timeout to each requests and common settings.
- Provide HMAC 256 algorithm instead of CryptoSwift.
- Detect exceeding of API call.
USE THE SOFTWARE AT YOUR OWN RISK.
THE AUTHORS NO RESPONSIBILITY FOR YOUR TRADING RESULTS.
Ryo Ishikawa, rinov@rinov.jp
SwiftFlyer is available under the MIT license. See the LICENSE file for more info.