diff --git a/lib/binance.dart b/lib/binance.dart index cfdfcbf..1958a17 100644 --- a/lib/binance.dart +++ b/lib/binance.dart @@ -1,10 +1,10 @@ library binance; -export "data/rest_classes.dart"; -export "data/ws_classes.dart"; -export "data/enums.dart"; +export 'data/rest_classes.dart'; +export 'data/ws_classes.dart'; +export 'data/enums.dart'; -import "websocket.dart"; -import "rest.dart"; +import 'src/websocket.dart'; +import 'src/rest.dart'; class Binance with BinanceWebsocket, BinanceRest {} diff --git a/lib/rest.dart b/lib/src/rest.dart similarity index 70% rename from lib/rest.dart rename to lib/src/rest.dart index 8011056..34c6869 100644 --- a/lib/rest.dart +++ b/lib/src/rest.dart @@ -1,14 +1,14 @@ -import "package:http/http.dart" as http; -import "dart:convert" as convert; +import 'package:http/http.dart' as http; +import 'dart:convert' as convert; -import "data/rest_classes.dart"; -import 'data/enums.dart'; +import '../data/rest_classes.dart'; +import '../data/enums.dart'; const BASE = 'https://api.binance.com'; class BinanceRest { Future _public(String path, [Map params]) async { - final uri = Uri.https("api.binance.com", "/api/$path", params); + final uri = Uri.https('api.binance.com', '/api/$path', params); final response = await http.get(uri); return convert.jsonDecode(response.body); @@ -19,7 +19,7 @@ class BinanceRest { /// Return the current server time from /v1/time Future time() => _public('/v1/time') - .then((r) => DateTime.fromMillisecondsSinceEpoch(r["serverTime"])); + .then((r) => DateTime.fromMillisecondsSinceEpoch(r['serverTime'])); /// Returns general info about the exchange from /v1/exchangeInfo Future exchangeInfo() => @@ -27,12 +27,12 @@ class BinanceRest { /// Order book depth from /v1/depth Future depth(String symbol, [int limit = 100]) => - _public('/v1/depth', {"symbol": "$symbol", "limit": "$limit"}) + _public('/v1/depth', {'symbol': '$symbol', 'limit': '$limit'}) .then((r) => BookDepth.fromMap(r)); /// Recent trades from /v1/trades Future> recentTrades(String symbol, [int limit = 500]) => - _public('/v1/trades', {"symbol": "$symbol", "limit": "$limit"}) + _public('/v1/trades', {'symbol': '$symbol', 'limit': '$limit'}) .then((r) => List.from(r.map((m) => Trade.fromMap(m)))); /// Historical trades from /v1/aggTrades @@ -46,14 +46,14 @@ class BinanceRest { DateTime endTime, int limit = 500, }) async { - final params = {"symbol": "$symbol"}; + final params = {'symbol': '$symbol'}; - if (fromId != null) params["fromId"] = "$fromId"; + if (fromId != null) params['fromId'] = '$fromId'; if (startTime != null) - params["startTime"] = "${startTime?.millisecondsSinceEpoch}"; + params['startTime'] = '${startTime?.millisecondsSinceEpoch}'; if (endTime != null) - params["endTime"] = "${endTime?.millisecondsSinceEpoch}"; - if (limit != null) params["limit"] = "$limit"; + params['endTime'] = '${endTime?.millisecondsSinceEpoch}'; + if (limit != null) params['limit'] = '$limit'; final response = await _public('/v1/aggTrades', params); @@ -71,15 +71,15 @@ class BinanceRest { int limit = 500, }) async { final params = { - "symbol": "$symbol", - "interval": intervalMap[interval], - "limit": "$limit", + 'symbol': '$symbol', + 'interval': intervalMap[interval], + 'limit': '$limit', }; if (startTime != null) - params["startTime"] = startTime.millisecondsSinceEpoch.toString(); + params['startTime'] = startTime.millisecondsSinceEpoch.toString(); if (endTime != null) - params["endTime"] = endTime.millisecondsSinceEpoch.toString(); + params['endTime'] = endTime.millisecondsSinceEpoch.toString(); final response = await _public('/v1/klines', params); @@ -90,13 +90,13 @@ class BinanceRest { /// Current average price from /v3/avgPrice Future averagePrice(String symbol) => - _public("/v3/avgPrice", {"symbol": symbol}) + _public('/v3/avgPrice', {'symbol': symbol}) .then((r) => AveragedPrice.fromMap(r)); /// 24 hour ticker price change statistics Future dailyStats(String symbol) async { assert(symbol != null); - final response = await _public("/v1/ticker/24hr", {"symbol": symbol}); + final response = await _public('/v1/ticker/24hr', {'symbol': symbol}); return Stats.fromMap(response); } @@ -105,7 +105,7 @@ class BinanceRest { /// /// 24 hour ticker price change statistics for all coins Future> allDailyStats() async { - final response = await _public("/v1/ticker/24hr"); + final response = await _public('/v1/ticker/24hr'); return List.from(response.map((s) => Stats.fromMap(s))); } @@ -114,28 +114,28 @@ class BinanceRest { Future symbolPriceTicker(String symbol) async { assert(symbol != null); - final response = await _public("/v3/ticker/price", {"symbol": symbol}); + final response = await _public('/v3/ticker/price', {'symbol': symbol}); return TickerPrice.fromMap(response); } /// All price tickers from /v3/ticker/price Future> allSymbolPriceTickers() async { - final response = await _public("/v3/ticker/price"); + final response = await _public('/v3/ticker/price'); return List.from(response.map((s) => TickerPrice.fromMap(s))); } /// Symbol order book ticker from /v3/ticker/bookTicker Future bookTicker(String symbol) async { - final response = await _public("/v3/ticker/bookTicker", {"symbol": symbol}); + final response = await _public('/v3/ticker/bookTicker', {'symbol': symbol}); return BookTicker.fromMap(response); } /// All price tickers from /v3/ticker/price Future> allBookTickers() async { - final response = await _public("/v3/ticker/bookTicker"); + final response = await _public('/v3/ticker/bookTicker'); return List.from(response.map((s) => BookTicker.fromMap(s))); } diff --git a/lib/websocket.dart b/lib/src/websocket.dart similarity index 80% rename from lib/websocket.dart rename to lib/src/websocket.dart index 94b2128..8ba9023 100644 --- a/lib/websocket.dart +++ b/lib/src/websocket.dart @@ -1,12 +1,11 @@ -import "dart:convert" as convert; - +import 'dart:convert' as convert; import 'package:web_socket_channel/io.dart'; -import 'data/ws_classes.dart'; +import '../data/ws_classes.dart'; class BinanceWebsocket { IOWebSocketChannel _public(String channel) => IOWebSocketChannel.connect( - "wss://stream.binance.com:9443/ws/${channel}", + 'wss://stream.binance.com:9443/ws/${channel}', pingInterval: Duration(minutes: 1), ); @@ -15,7 +14,7 @@ class BinanceWebsocket { /// Reports aggregated trade events from @aggTrade Stream aggTrade(String symbol) { - final channel = _public("${symbol.toLowerCase()}@aggTrade"); + final channel = _public('${symbol.toLowerCase()}@aggTrade'); return channel.stream .map(_toMap) @@ -24,7 +23,7 @@ class BinanceWebsocket { /// Reports 24hr miniTicker events every second from @miniTicker Stream miniTicker(String symbol) { - final channel = _public("${symbol.toLowerCase()}@miniTicker"); + final channel = _public('${symbol.toLowerCase()}@miniTicker'); return channel.stream .map(_toMap) @@ -34,7 +33,7 @@ class BinanceWebsocket { /// Reports 24hr miniTicker events every second for every trading pair /// that changed in the last second Stream> allMiniTickers() { - final channel = _public("!miniTicker@arr"); + final channel = _public('!miniTicker@arr'); return channel.stream.map>(_toList).map>( (ev) => ev.map((m) => MiniTicker.fromMap(m)).toList()); @@ -42,7 +41,7 @@ class BinanceWebsocket { /// Reports 24hr ticker events every second from @ticker Stream ticker(String symbol) { - final channel = _public("${symbol.toLowerCase()}@ticker"); + final channel = _public('${symbol.toLowerCase()}@ticker'); return channel.stream .map(_toMap) @@ -52,7 +51,7 @@ class BinanceWebsocket { /// Reports 24hr miniTicker events every second for every trading pair /// that changed in the last second Stream> allTickers() { - final channel = _public("!ticker@arr"); + final channel = _public('!ticker@arr'); return channel.stream .map>(_toList) @@ -65,7 +64,7 @@ class BinanceWebsocket { Stream bookDepth(String symbol, [int levels = 5]) { assert(levels == 5 || levels == 10 || levels == 20); - final channel = _public("${symbol.toLowerCase()}@depth$levels"); + final channel = _public('${symbol.toLowerCase()}@depth$levels'); return channel.stream .map(_toMap) @@ -76,7 +75,7 @@ class BinanceWebsocket { /// /// This can be used to update an existing book with incremental changes Stream diffBookDepth(String symbol) { - final channel = _public("${symbol.toLowerCase()}@depth"); + final channel = _public('${symbol.toLowerCase()}@depth'); return channel.stream .map(_toMap) diff --git a/test/rest_test.dart b/test/rest_test.dart index 0b7862a..b936d5a 100644 --- a/test/rest_test.dart +++ b/test/rest_test.dart @@ -1,15 +1,16 @@ -import "package:test/test.dart"; +import 'package:test/test.dart'; import 'package:binance/binance.dart'; void main() { final rest = Binance(); - test("ping", () async { + + test('ping', () async { final result = await rest.ping(); expect(result, equals(true)); }); - test("time", () async { + test('time', () async { final serverTime = await rest.time(); final now = DateTime.now(); final tolerance = Duration(minutes: 1); @@ -17,7 +18,7 @@ void main() { expect(serverTime.difference(now), lessThan(tolerance)); }); - test("exchangeInfo", () async { + test('exchangeInfo', () async { final result = await rest.exchangeInfo(); final serverTime = result.serverTime; @@ -29,16 +30,16 @@ void main() { expect(result.symbols.length, greaterThan(100)); }); - test("depth", () async { - final result = await rest.depth("BTCUSDT", 100); + test('depth', () async { + final result = await rest.depth('BTCUSDT', 100); expect(result.lastUpdateId, isNotNull); expect(result.bids.length, equals(100)); expect(result.asks.length, equals(100)); }); - test("recentTrades", () async { - final result = await rest.recentTrades("BTCUSDT", 100); + test('recentTrades', () async { + final result = await rest.recentTrades('BTCUSDT', 100); expect(result.length, equals(100)); expect(result.first.id, isNotNull); @@ -49,9 +50,9 @@ void main() { expect(result.first.time, isNotNull); }); - test("aggregatedTrades", () async { + test('aggregatedTrades', () async { final result = await rest.aggregatedTrades( - "BTCUSDT", + 'BTCUSDT', limit: 100, startTime: DateTime.now().subtract(Duration(minutes: 10)), endTime: DateTime.now(), @@ -66,9 +67,9 @@ void main() { expect(result.first.time, isNotNull); }); - test("candlesticks", () async { + test('candlesticks', () async { final result = await rest.candlesticks( - "BTCUSDT", + 'BTCUSDT', Interval.oneMinute, limit: 100, ); @@ -80,21 +81,21 @@ void main() { expect(result.first.close, isNotNull); }); - test("averagePrice", () async { - final result = await rest.averagePrice("BTCUSDT"); + test('averagePrice', () async { + final result = await rest.averagePrice('BTCUSDT'); expect(result.mins, isNotNull); expect(result.price, isNotNull); }); - test("dailyStats", () async { - final result = await rest.dailyStats("BTCUSDT"); + test('dailyStats', () async { + final result = await rest.dailyStats('BTCUSDT'); - expect(result.symbol, equals("BTCUSDT")); + expect(result.symbol, equals('BTCUSDT')); expect(result.lastPrice, isNotNull); }); - test("allDailyStats", () async { + test('allDailyStats', () async { final result = await rest.allDailyStats(); expect(result.length, greaterThan(100)); @@ -102,14 +103,14 @@ void main() { expect(result.first.lastPrice, isNotNull); }); - test("symbolPriceTicker", () async { - final result = await rest.symbolPriceTicker("BTCUSDT"); + test('symbolPriceTicker', () async { + final result = await rest.symbolPriceTicker('BTCUSDT'); - expect(result.symbol, equals("BTCUSDT")); + expect(result.symbol, equals('BTCUSDT')); expect(result.price, isNotNull); }); - test("allSymbolPriceTickers", () async { + test('allSymbolPriceTickers', () async { final result = await rest.allSymbolPriceTickers(); expect(result.length, greaterThan(100)); @@ -117,14 +118,14 @@ void main() { expect(result.first.price, isNotNull); }); - test("bookTicker", () async { - final result = await rest.bookTicker("BTCUSDT"); + test('bookTicker', () async { + final result = await rest.bookTicker('BTCUSDT'); - expect(result.symbol, equals("BTCUSDT")); + expect(result.symbol, equals('BTCUSDT')); expect(result.bidPrice, isNotNull); }); - test("allBookTickers", () async { + test('allBookTickers', () async { final result = await rest.allBookTickers(); expect(result.length, greaterThan(100)); diff --git a/test/ws_test.dart b/test/websocket_test.dart similarity index 61% rename from test/ws_test.dart rename to test/websocket_test.dart index 1453ead..b98a033 100644 --- a/test/ws_test.dart +++ b/test/websocket_test.dart @@ -1,61 +1,62 @@ -import "package:test/test.dart"; +import 'package:test/test.dart'; import 'package:binance/binance.dart'; void main() { final websocket = Binance(); - test("aggTrade", () async { - final stream = await websocket.aggTrade("BTCUSDT"); + + test('aggTrade', () async { + final stream = await websocket.aggTrade('BTCUSDT'); stream.first.then(expectAsync1((e) { - expect(e.eventType, equals("aggTrade")); + expect(e.eventType, equals('aggTrade')); expect(e.eventTime, isNotNull); expect(e.id, isNotNull); })); }); - test("miniTicker", () async { - final stream = await websocket.miniTicker("BTCUSDT"); + test('miniTicker', () async { + final stream = await websocket.miniTicker('BTCUSDT'); stream.first.then(expectAsync1((e) { - expect(e.eventType, equals("24hrMiniTicker")); + expect(e.eventType, equals('24hrMiniTicker')); expect(e.eventTime, isNotNull); expect(e.close, isNotNull); })); }); - test("allMiniTickers", () async { + test('allMiniTickers', () async { final stream = await websocket.allMiniTickers(); stream.first.then(expectAsync1((e) { - expect(e.first.eventType, equals("24hrMiniTicker")); + expect(e.first.eventType, equals('24hrMiniTicker')); expect(e.first.eventTime, isNotNull); expect(e.first.close, isNotNull); })); }); - test("ticker", () async { - final stream = await websocket.ticker("BTCUSDT"); + test('ticker', () async { + final stream = await websocket.ticker('BTCUSDT'); stream.first.then(expectAsync1((e) { - expect(e.eventType, equals("24hrTicker")); + expect(e.eventType, equals('24hrTicker')); expect(e.eventTime, isNotNull); expect(e.close, isNotNull); })); }); - test("allTickers", () async { + test('allTickers', () async { final stream = await websocket.allTickers(); stream.first.then(expectAsync1((e) { - expect(e.first.eventType, equals("24hrTicker")); + expect(e.first.eventType, equals('24hrTicker')); expect(e.first.eventTime, isNotNull); expect(e.first.close, isNotNull); })); }); - test("bookDepth", () async { - final stream = await websocket.bookDepth("BTCUSDT", 5); + test('bookDepth', () async { + final stream = await websocket.bookDepth('BTCUSDT', 5); stream.first.then(expectAsync1((e) { expect(e.lastUpdateId, isNotNull); @@ -67,8 +68,8 @@ void main() { })); }); - test("diffBookDepth", () async { - final stream = await websocket.diffBookDepth("BTCUSDT"); + test('diffBookDepth', () async { + final stream = await websocket.diffBookDepth('BTCUSDT'); stream.first.then(expectAsync1((e) { expect(e.lastUpdateId, isNotNull);