Skip to content

Commit

Permalink
folder structure and single quotes
Browse files Browse the repository at this point in the history
  • Loading branch information
lukepighetti committed Feb 15, 2019
1 parent d7e612c commit 687f78f
Show file tree
Hide file tree
Showing 5 changed files with 86 additions and 85 deletions.
10 changes: 5 additions & 5 deletions lib/binance.dart
Original file line number Diff line number Diff line change
@@ -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 {}
50 changes: 25 additions & 25 deletions lib/rest.dart → lib/src/rest.dart
Original file line number Diff line number Diff line change
@@ -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<dynamic> _public(String path, [Map<String, String> 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);
Expand All @@ -19,20 +19,20 @@ class BinanceRest {

/// Return the current server time from /v1/time
Future<DateTime> 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> exchangeInfo() =>
_public('/v1/exchangeInfo').then((r) => ExchangeInfo.fromMap(r));

/// Order book depth from /v1/depth
Future<BookDepth> 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<List<Trade>> recentTrades(String symbol, [int limit = 500]) =>
_public('/v1/trades', {"symbol": "$symbol", "limit": "$limit"})
_public('/v1/trades', {'symbol': '$symbol', 'limit': '$limit'})
.then((r) => List<Trade>.from(r.map((m) => Trade.fromMap(m))));

/// Historical trades from /v1/aggTrades
Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -90,13 +90,13 @@ class BinanceRest {

/// Current average price from /v3/avgPrice
Future<AveragedPrice> 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<Stats> 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);
}
Expand All @@ -105,7 +105,7 @@ class BinanceRest {
///
/// 24 hour ticker price change statistics for all coins
Future<List<Stats>> allDailyStats() async {
final response = await _public("/v1/ticker/24hr");
final response = await _public('/v1/ticker/24hr');

return List<Stats>.from(response.map((s) => Stats.fromMap(s)));
}
Expand All @@ -114,28 +114,28 @@ class BinanceRest {
Future<TickerPrice> 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<List<TickerPrice>> allSymbolPriceTickers() async {
final response = await _public("/v3/ticker/price");
final response = await _public('/v3/ticker/price');

return List<TickerPrice>.from(response.map((s) => TickerPrice.fromMap(s)));
}

/// Symbol order book ticker from /v3/ticker/bookTicker
Future<BookTicker> 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<List<BookTicker>> allBookTickers() async {
final response = await _public("/v3/ticker/bookTicker");
final response = await _public('/v3/ticker/bookTicker');

return List<BookTicker>.from(response.map((s) => BookTicker.fromMap(s)));
}
Expand Down
21 changes: 10 additions & 11 deletions lib/websocket.dart → lib/src/websocket.dart
Original file line number Diff line number Diff line change
@@ -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),
);

Expand All @@ -15,7 +14,7 @@ class BinanceWebsocket {

/// Reports aggregated trade events from <symbol>@aggTrade
Stream<WsAggregatedTrade> aggTrade(String symbol) {
final channel = _public("${symbol.toLowerCase()}@aggTrade");
final channel = _public('${symbol.toLowerCase()}@aggTrade');

return channel.stream
.map<Map>(_toMap)
Expand All @@ -24,7 +23,7 @@ class BinanceWebsocket {

/// Reports 24hr miniTicker events every second from <symbol>@miniTicker
Stream<MiniTicker> miniTicker(String symbol) {
final channel = _public("${symbol.toLowerCase()}@miniTicker");
final channel = _public('${symbol.toLowerCase()}@miniTicker');

return channel.stream
.map<Map>(_toMap)
Expand All @@ -34,15 +33,15 @@ class BinanceWebsocket {
/// Reports 24hr miniTicker events every second for every trading pair
/// that changed in the last second
Stream<List<MiniTicker>> allMiniTickers() {
final channel = _public("!miniTicker@arr");
final channel = _public('!miniTicker@arr');

return channel.stream.map<List<Map>>(_toList).map<List<MiniTicker>>(
(ev) => ev.map((m) => MiniTicker.fromMap(m)).toList());
}

/// Reports 24hr ticker events every second from <symbol>@ticker
Stream<Ticker> ticker(String symbol) {
final channel = _public("${symbol.toLowerCase()}@ticker");
final channel = _public('${symbol.toLowerCase()}@ticker');

return channel.stream
.map<Map>(_toMap)
Expand All @@ -52,7 +51,7 @@ class BinanceWebsocket {
/// Reports 24hr miniTicker events every second for every trading pair
/// that changed in the last second
Stream<List<Ticker>> allTickers() {
final channel = _public("!ticker@arr");
final channel = _public('!ticker@arr');

return channel.stream
.map<List<Map>>(_toList)
Expand All @@ -65,7 +64,7 @@ class BinanceWebsocket {
Stream<BookDepth> 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<Map>(_toMap)
Expand All @@ -76,7 +75,7 @@ class BinanceWebsocket {
///
/// This can be used to update an existing book with incremental changes
Stream<DiffBookDepth> diffBookDepth(String symbol) {
final channel = _public("${symbol.toLowerCase()}@depth");
final channel = _public('${symbol.toLowerCase()}@depth');

return channel.stream
.map<Map>(_toMap)
Expand Down
53 changes: 27 additions & 26 deletions test/rest_test.dart
Original file line number Diff line number Diff line change
@@ -1,23 +1,24 @@
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);

expect(serverTime.difference(now), lessThan(tolerance));
});

test("exchangeInfo", () async {
test('exchangeInfo', () async {
final result = await rest.exchangeInfo();

final serverTime = result.serverTime;
Expand All @@ -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);
Expand All @@ -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(),
Expand All @@ -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,
);
Expand All @@ -80,51 +81,51 @@ 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));
expect(result.first.symbol, isNotNull);
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));
expect(result.first.symbol, isNotNull);
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));
Expand Down
Loading

0 comments on commit 687f78f

Please sign in to comment.