Skip to content

Commit

Permalink
feat: add a login method to fetch token by username and password
Browse files Browse the repository at this point in the history
  • Loading branch information
nekofar committed Jul 21, 2021
1 parent 39c6e85 commit ec8d313
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 12 deletions.
47 changes: 37 additions & 10 deletions lib/nobitex.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,46 @@ import 'dart:io';
import 'package:http/http.dart' as http;

class Nobitex {
final String basePath;

final String token;

Nobitex({this.basePath = 'api.nobitex.ir', this.token = ''});
String basePath;

String? token;

Nobitex({this.basePath = 'api.nobitex.ir', this.token});

login(
{required String username,
required String password,
String? totp}) async {
var url = Uri.https(basePath, '/auth/login/');

var response = await http.post(url, headers: {
'X-TOTP': totp ?? ''
}, body: {
'username': username,
'password': password,
'remember': 'yes',
'captcha': 'api'
});

var result = jsonDecode(response.body);
if (result['status'] == null) {
return null;
} else {
if (result['status'] == 'success') {
token = result['key'];
} else {
return null;
}
}
}

/// Returns your profile information, bank card, bank account, verifications,
/// profile settings and summary of your transaction statistics.
getProfile() async {
var url = Uri.https(basePath, '/users/profile');

var response = await http.post(url,
headers: {HttpHeaders.authorizationHeader: 'Token ' + token});
headers: {HttpHeaders.authorizationHeader: 'Token ' + token!});

return jsonDecode(response.body);
}
Expand All @@ -28,7 +55,7 @@ class Nobitex {
var url = Uri.https(basePath, '/users/wallets/list');

var response = await http.post(url,
headers: {HttpHeaders.authorizationHeader: 'Token ' + token});
headers: {HttpHeaders.authorizationHeader: 'Token ' + token!});

return jsonDecode(response.body);
}
Expand All @@ -38,7 +65,7 @@ class Nobitex {
var url = Uri.https(basePath, '/users/wallets/deposits/list');

var response = await http.post(url,
headers: {HttpHeaders.authorizationHeader: 'Token ' + token});
headers: {HttpHeaders.authorizationHeader: 'Token ' + token!});

return jsonDecode(response.body);
}
Expand All @@ -48,7 +75,7 @@ class Nobitex {
var url = Uri.https(basePath, '/users/wallets/generate-address');

var response = await http.post(url,
headers: {HttpHeaders.authorizationHeader: 'Token ' + token},
headers: {HttpHeaders.authorizationHeader: 'Token ' + token!},
body: {'wallet': wallet});

return jsonDecode(response.body);
Expand All @@ -59,7 +86,7 @@ class Nobitex {
var url = Uri.https(basePath, '/users/wallets/balance');

var response = await http.post(url,
headers: {HttpHeaders.authorizationHeader: 'Token ' + token},
headers: {HttpHeaders.authorizationHeader: 'Token ' + token!},
body: {'currency': currency});

return jsonDecode(response.body);
Expand Down
10 changes: 8 additions & 2 deletions test/nobitex_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ import 'package:nobitex/nobitex.dart';
void main() {
load();

final nobitex = Nobitex(token: env['NOBITEX_TOKEN'] as String);
final nobitex = Nobitex(basePath: 'testnetapi.nobitex.ir');

setUp(() async {
await nobitex.login(
username: env['NOBITEX_USERNAME'].toString(),
password: env['NOBITEX_PASSWORD'].toString());
});

group('tests for Nobitex', () {
test('test getProfile', () async {
Expand All @@ -29,7 +35,7 @@ void main() {

test('test getWalletAddress', () async {
var data = await nobitex.getWalletAddress(
wallet: env['NOBITEX_WALLET'] as String);
wallet: env['NOBITEX_WALLET'].toString());

expect(data!.containsKey('address'), true);
});
Expand Down

0 comments on commit ec8d313

Please sign in to comment.