114 lines
6.4 KiB
Dart
114 lines
6.4 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(' ', '_');
|
|
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']);
|
|
}
|
|
}
|