import 'dart:convert'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:http/http.dart'; import 'dart:developer'; 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 { static late final Map credentials; static late Future loadJson; static late String basicAuth; static late String address; static late Map headers; static bool initState = false; CloudServiceAPI(){ if(!initState) { loadJson = loadConfig(); initState = true; } } 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; } }