2022-06-13 11:41:46 +00:00
|
|
|
import 'dart:convert';
|
|
|
|
|
|
|
|
import 'package:http/http.dart' as http;
|
|
|
|
|
|
|
|
class FioAddressProvider {
|
|
|
|
static const apiAuthority = 'fio.blockpane.com';
|
|
|
|
static const availCheck = '/v1/chain/avail_check';
|
|
|
|
static const getAddress = '/v1/chain/get_pub_address';
|
|
|
|
|
|
|
|
static Future<bool> checkAvail(String fioAddress) async {
|
|
|
|
bool isFioRegistered = false;
|
|
|
|
final headers = {'Content-Type': 'application/json'};
|
|
|
|
final body = <String, String>{"fio_name": fioAddress};
|
|
|
|
|
|
|
|
final uri = Uri.https(apiAuthority, availCheck);
|
|
|
|
final response =
|
|
|
|
await http.post(uri, headers: headers, body: json.encode(body));
|
|
|
|
|
|
|
|
if (response.statusCode != 200) {
|
|
|
|
return isFioRegistered;
|
|
|
|
}
|
|
|
|
|
|
|
|
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
|
|
|
|
isFioRegistered = responseJSON['is_registered'] as int == 1;
|
|
|
|
|
|
|
|
return isFioRegistered;
|
|
|
|
}
|
|
|
|
|
|
|
|
static Future<String> getPubAddress(String fioAddress, String token) async {
|
|
|
|
final headers = {'Content-Type': 'application/json'};
|
|
|
|
final body = <String, String>{
|
|
|
|
"fio_address": fioAddress,
|
|
|
|
"chain_code": token.toUpperCase(),
|
|
|
|
"token_code": token.toUpperCase(),
|
|
|
|
};
|
|
|
|
|
|
|
|
final uri = Uri.https(apiAuthority, getAddress);
|
|
|
|
final response =
|
|
|
|
await http.post(uri, headers: headers, body: json.encode(body));
|
|
|
|
|
|
|
|
if (response.statusCode == 400) {
|
|
|
|
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
|
|
|
|
final error = responseJSON['error'] as String;
|
|
|
|
final message = responseJSON['message'] as String;
|
|
|
|
throw Exception('${error}\n$message');
|
|
|
|
}
|
|
|
|
|
|
|
|
if (response.statusCode != 200) {
|
2022-10-12 17:09:57 +00:00
|
|
|
throw Exception('Unexpected response http status: ${response.statusCode}');
|
2022-06-13 11:41:46 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
final responseJSON = json.decode(response.body) as Map<String, dynamic>;
|
|
|
|
final String pubAddress = responseJSON['public_address'] as String;
|
|
|
|
|
|
|
|
return pubAddress;
|
|
|
|
}
|
|
|
|
}
|