import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart'; Future> readJson() async { final data = await rootBundle.loadString('config/credentials.json'); var data_ = json.decode(data) as Map; debugPrint(data_.toString()); return data_; } class CloudServiceAPI{ late final Map credentials; late Future loadJson; late String basicAuth; late String address; late Map headers; CloudServiceAPI() { loadJson = loadConfig(); } Future loadConfig() async{ credentials = await readJson(); String username = credentials['username']; String password = credentials['password']; address = credentials['address']; basicAuth = 'Basic ${base64.encode(utf8.encode('$username:$password'))}'; headers = { 'authorization': basicAuth, 'content-type': 'application/json', 'accept': 'application/json' }; } Future getDevices() async { var url = Uri.https(address, '/api/devices'); Response r = await get(url, headers: headers); return json.decode(r.body) as List; } Future> getDeviceInfo(deviceID) async { var url = Uri.https(address, '/api/devices/$deviceID'); Response r = await get(url, headers: headers); return json.decode(r.body) as Map; } Future> getInformation() async { var url = Uri.https(address, '/api/app'); Response r = await get(url, headers: headers); return json.decode(r.body) as Map; } Future createDevice(id, primaryThumbprint, secondaryThumbprint) async{ var url = Uri.https(address, '/api/devices'); Response r = await post( url, headers: headers, body: jsonEncode({ 'id': id, 'primaryThumbprint' : primaryThumbprint, 'secondaryThumbprint' : secondaryThumbprint }) ); if (r.statusCode == 200){ return true; } debugPrint('Error createDevice: ${r.statusCode.toString()}'); return false; } }