apiSignIn function
Implementation
Future<int> apiSignIn(String username, password) async {
var pemBytes = await rootBundle.load("assets/cert.pem");
var context = SecurityContext()
..setTrustedCertificatesBytes(pemBytes.buffer.asUint8List(), password: '');
var client = HttpClient(context: context)
..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
try {
var request = await client
.postUrl(Uri.parse('https://api.gracehopper.xyz/v1/auth/sign-in'));
// Set headers
request.headers.add('Content-Type', 'application/json');
// Create JSON body
var body = jsonEncode({'username': username, 'password': password});
// Set body
request.write(body);
var response = await request.close();
var responseBody = await response.transform(utf8.decoder).join();
var responseBodyDictionary = jsonDecode(responseBody);
// print(responseBody);
String? cookieHeader = response.headers['set-cookie']?[0];
cookieHeader == null ? cookieHeader = "" : cookieHeader = cookieHeader;
List<String> cookies = cookieHeader.split('; ');
String apiAuthCookie = cookies[0].split('=')[1];
// print(apiAuthCookie);
assignToken(apiAuthCookie);
assignId(responseBodyDictionary["data"]["id"]);
await apiUser();
return responseBodyDictionary["status"]["error_code"];
} catch (e) {
// print(e.toString());
return -1;
} finally {
client.close();
}
}