Files
spaceTraders_API/lib/providers/ship_provider.dart
2023-06-05 16:58:30 +02:00

116 lines
6.5 KiB
Dart

import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:space_traders/models/ship_model.dart';
class ShipProvider {
Future<List<ShipModel>> listShips() async {
final url = 'https://api.spacetraders.io/v2/my/ships';
final token ='eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiVEZBIiwidmVyc2lvbiI6InYyIiwicmVzZXRfZGF0ZSI6IjIwMjMtMDYtMDMiLCJpYXQiOjE2ODU5NTMwODksInN1YiI6ImFnZW50LXRva2VuIn0.PPGF4B1ZtgqyWXBuGiLR71aHo9XJw9cA5OxP8xxriVuje3RDjdDstP3nEt0NiXSk4yP6N15DHJqIFe9BHH2sG1yVxcYXOvXQeoYMfnfg-HzdsmCv_tZmyC7Ey0go9HiMbt0WeNyNQYgJBonA5XicmfoqAXiggI51kMAdxq-zerwQAfBvfgDLmIqb1QwD0cMEy-VugkWe-CUUQDAXdarDnFRYlqP2lVLdtBdWVArpMYYFniR-Id5FQjOCiCyrtJ5pYPs6Ih0O9Lab9JU9_lncCqrG_FllVOwyvrE2kV8ScSKpotKhfI0_qV3FL2T_z25ZBEvfad0WFqmiubiRGuo0XQ';
final resp = await http.get(
Uri.parse(url),
headers: {'Authorization': 'Bearer $token'},
);
final decodedData = json.decode(utf8.decode(resp.bodyBytes));
final List<ShipModel> fleet = [];
final List<dynamic> data = decodedData['data'];
data.forEach((ship) {
final shipTemp = ShipModel.fromJson(ship);
fleet.add(shipTemp);
});
return fleet;
}
static Future<ShipModel> getShip(String shipSymbol) async {
final url = 'https://api.spacetraders.io/v2/my/ships/$shipSymbol';
final token ='eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiVEZBIiwidmVyc2lvbiI6InYyIiwicmVzZXRfZGF0ZSI6IjIwMjMtMDYtMDMiLCJpYXQiOjE2ODU5NTMwODksInN1YiI6ImFnZW50LXRva2VuIn0.PPGF4B1ZtgqyWXBuGiLR71aHo9XJw9cA5OxP8xxriVuje3RDjdDstP3nEt0NiXSk4yP6N15DHJqIFe9BHH2sG1yVxcYXOvXQeoYMfnfg-HzdsmCv_tZmyC7Ey0go9HiMbt0WeNyNQYgJBonA5XicmfoqAXiggI51kMAdxq-zerwQAfBvfgDLmIqb1QwD0cMEy-VugkWe-CUUQDAXdarDnFRYlqP2lVLdtBdWVArpMYYFniR-Id5FQjOCiCyrtJ5pYPs6Ih0O9Lab9JU9_lncCqrG_FllVOwyvrE2kV8ScSKpotKhfI0_qV3FL2T_z25ZBEvfad0WFqmiubiRGuo0XQ';
final resp = await http.get(
Uri.parse(url),
headers: {'Authorization': 'Bearer $token'},
);
final decodedData = json.decode(utf8.decode(resp.bodyBytes));
return ShipModel.fromJson(decodedData['data']);
}
static Future<Nav> dockShip(String shipSymbol) async {
final url = 'https://api.spacetraders.io/v2/my/ships/$shipSymbol/dock';
final token ='eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiVEZBIiwidmVyc2lvbiI6InYyIiwicmVzZXRfZGF0ZSI6IjIwMjMtMDYtMDMiLCJpYXQiOjE2ODU5NTMwODksInN1YiI6ImFnZW50LXRva2VuIn0.PPGF4B1ZtgqyWXBuGiLR71aHo9XJw9cA5OxP8xxriVuje3RDjdDstP3nEt0NiXSk4yP6N15DHJqIFe9BHH2sG1yVxcYXOvXQeoYMfnfg-HzdsmCv_tZmyC7Ey0go9HiMbt0WeNyNQYgJBonA5XicmfoqAXiggI51kMAdxq-zerwQAfBvfgDLmIqb1QwD0cMEy-VugkWe-CUUQDAXdarDnFRYlqP2lVLdtBdWVArpMYYFniR-Id5FQjOCiCyrtJ5pYPs6Ih0O9Lab9JU9_lncCqrG_FllVOwyvrE2kV8ScSKpotKhfI0_qV3FL2T_z25ZBEvfad0WFqmiubiRGuo0XQ';
final resp = await http.post(
Uri.parse(url),
headers: {'Authorization': 'Bearer $token'},
);
final decodedData = json.decode(utf8.decode(resp.bodyBytes));
return Nav.fromJson(decodedData['data']['nav']);
}
static Future<Nav> orbitShip(String shipSymbol) async {
final url = 'https://api.spacetraders.io/v2/my/ships/$shipSymbol/orbit';
final token ='eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiVEZBIiwidmVyc2lvbiI6InYyIiwicmVzZXRfZGF0ZSI6IjIwMjMtMDYtMDMiLCJpYXQiOjE2ODU5NTMwODksInN1YiI6ImFnZW50LXRva2VuIn0.PPGF4B1ZtgqyWXBuGiLR71aHo9XJw9cA5OxP8xxriVuje3RDjdDstP3nEt0NiXSk4yP6N15DHJqIFe9BHH2sG1yVxcYXOvXQeoYMfnfg-HzdsmCv_tZmyC7Ey0go9HiMbt0WeNyNQYgJBonA5XicmfoqAXiggI51kMAdxq-zerwQAfBvfgDLmIqb1QwD0cMEy-VugkWe-CUUQDAXdarDnFRYlqP2lVLdtBdWVArpMYYFniR-Id5FQjOCiCyrtJ5pYPs6Ih0O9Lab9JU9_lncCqrG_FllVOwyvrE2kV8ScSKpotKhfI0_qV3FL2T_z25ZBEvfad0WFqmiubiRGuo0XQ';
final resp = await http.post(
Uri.parse(url),
headers: {'Authorization': 'Bearer $token'},
);
final decodedData = json.decode(utf8.decode(resp.bodyBytes));
return Nav.fromJson(decodedData['data']['nav']);
}
static Future<int> extract(String shipSymbol) async {
final url = 'https://api.spacetraders.io/v2/my/ships/$shipSymbol/extract';
final token ='eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiVEZBIiwidmVyc2lvbiI6InYyIiwicmVzZXRfZGF0ZSI6IjIwMjMtMDYtMDMiLCJpYXQiOjE2ODU5NTMwODksInN1YiI6ImFnZW50LXRva2VuIn0.PPGF4B1ZtgqyWXBuGiLR71aHo9XJw9cA5OxP8xxriVuje3RDjdDstP3nEt0NiXSk4yP6N15DHJqIFe9BHH2sG1yVxcYXOvXQeoYMfnfg-HzdsmCv_tZmyC7Ey0go9HiMbt0WeNyNQYgJBonA5XicmfoqAXiggI51kMAdxq-zerwQAfBvfgDLmIqb1QwD0cMEy-VugkWe-CUUQDAXdarDnFRYlqP2lVLdtBdWVArpMYYFniR-Id5FQjOCiCyrtJ5pYPs6Ih0O9Lab9JU9_lncCqrG_FllVOwyvrE2kV8ScSKpotKhfI0_qV3FL2T_z25ZBEvfad0WFqmiubiRGuo0XQ';
final resp = await http.post(
Uri.parse(url),
headers: {'Authorization': 'Bearer $token'},
);
final decodedData = json.decode(utf8.decode(resp.bodyBytes));
print(decodedData);
return decodedData['data']['cooldown']['remainingSeconds'];
}
static Future<Cargo> sell(String shipSymbol, String symbol, int units) async {
final url = 'https://api.spacetraders.io/v2/my/ships/$shipSymbol/sell';
final token ='eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZGVudGlmaWVyIjoiVEZBIiwidmVyc2lvbiI6InYyIiwicmVzZXRfZGF0ZSI6IjIwMjMtMDYtMDMiLCJpYXQiOjE2ODU5NTMwODksInN1YiI6ImFnZW50LXRva2VuIn0.PPGF4B1ZtgqyWXBuGiLR71aHo9XJw9cA5OxP8xxriVuje3RDjdDstP3nEt0NiXSk4yP6N15DHJqIFe9BHH2sG1yVxcYXOvXQeoYMfnfg-HzdsmCv_tZmyC7Ey0go9HiMbt0WeNyNQYgJBonA5XicmfoqAXiggI51kMAdxq-zerwQAfBvfgDLmIqb1QwD0cMEy-VugkWe-CUUQDAXdarDnFRYlqP2lVLdtBdWVArpMYYFniR-Id5FQjOCiCyrtJ5pYPs6Ih0O9Lab9JU9_lncCqrG_FllVOwyvrE2kV8ScSKpotKhfI0_qV3FL2T_z25ZBEvfad0WFqmiubiRGuo0XQ';
Map<String, String> headers = {
'Authorization': 'Bearer $token',
'Content-Type': 'application/json',
};
String newsymbol = symbol.toUpperCase().replaceAll(' ', '_');
if(newsymbol == 'FRESH_WATER')
newsymbol = 'ICE_WATER';
Map<String, dynamic> body = {
'symbol': '$newsymbol',
'units': units,
};
String jsonString = jsonEncode(body);
print(jsonString);
final resp = await http.post(
Uri.parse(url),
headers: headers,
body: jsonString,
);
final decodedData = json.decode(utf8.decode(resp.bodyBytes));
print(decodedData);
return Cargo.fromJson(decodedData['data']['cargo']);
}
}