update api
This commit is contained in:
parent
8a8462e1ea
commit
700b620c76
1 changed files with 159 additions and 1 deletions
160
lib/api.dart
160
lib/api.dart
|
@ -50,12 +50,14 @@ class API {
|
|||
return resp.body;
|
||||
}
|
||||
|
||||
// /items
|
||||
Future<List<dynamic>> getItems() async {
|
||||
var resp = jsonDecode(await getRequest("$instance/items"));
|
||||
var lst = resp["items"];
|
||||
return lst as List<dynamic>;
|
||||
}
|
||||
|
||||
// /item/<item>/<variant>/unique?<field>
|
||||
Future<List<String>> getUniqueField(
|
||||
String item, String variant, String field) async {
|
||||
var resp = jsonDecode(
|
||||
|
@ -83,13 +85,40 @@ class API {
|
|||
jsonDecode(await getRequest("$instance/transaction/$id")));
|
||||
}
|
||||
|
||||
Future<List<Transaction>> getTransactionsOfLocation(String location,
|
||||
{bool recursive = true}) async {
|
||||
var url = "$instance/location/$location/inventory";
|
||||
|
||||
if (recursive) {
|
||||
url += "?recursive=true";
|
||||
}
|
||||
|
||||
var resp = jsonDecode(await getRequest(url)) as List<dynamic>;
|
||||
|
||||
return resp.map((x) => Transaction(x)).toList();
|
||||
}
|
||||
|
||||
Future<List<Transaction>> getConsumedItems(String item, String variant,
|
||||
{String? destination}) async {
|
||||
var url = "$instance/item/$item/$variant/demand";
|
||||
if (destination != null) {
|
||||
url += "?destination=$destination";
|
||||
}
|
||||
var resp = jsonDecode(await getRequest(url)) as List<dynamic>;
|
||||
|
||||
return resp.map((x) => Transaction(x)).toList();
|
||||
}
|
||||
|
||||
// /item/<item_id>/inventory?<origin>
|
||||
Future<List<Transaction>> getInventory(String item) async {
|
||||
// todo : add origin param
|
||||
var resp = jsonDecode(await getRequest("$instance/item/$item/inventory"))
|
||||
as List<dynamic>;
|
||||
|
||||
return resp.map((x) => Transaction(x)).toList();
|
||||
}
|
||||
|
||||
// /item/<item_id>/<variant_id>/inventory
|
||||
Future<List<Transaction>> getInventoryOfVariant(
|
||||
String item, String variant) async {
|
||||
var resp =
|
||||
|
@ -99,6 +128,7 @@ class API {
|
|||
return resp.map((x) => Transaction(x)).toList();
|
||||
}
|
||||
|
||||
// /supply
|
||||
Future<String> supplyItem(String item, String variant, String price,
|
||||
String? origin, String? location) async {
|
||||
if (origin!.isEmpty) {
|
||||
|
@ -117,17 +147,18 @@ class API {
|
|||
"location": location
|
||||
});
|
||||
var resp = jsonDecode(req);
|
||||
print(resp);
|
||||
|
||||
return resp["uuid"];
|
||||
}
|
||||
|
||||
// /demand
|
||||
Future<void> consumeItem(
|
||||
String transaction, String destination, String price) async {
|
||||
await postRequest("$instance/demand",
|
||||
{"uuid": transaction, "destination": destination, "price": price});
|
||||
}
|
||||
|
||||
// /item/<item_id>/<variant_id>/stat
|
||||
Future<ItemVariantStat> getStat(String item, String variant) async {
|
||||
return ItemVariantStat(
|
||||
jsonDecode(await getRequest("$instance/item/$item/$variant/stat")));
|
||||
|
@ -136,6 +167,102 @@ class API {
|
|||
String getImageURL(String item) {
|
||||
return "$instance/$item/image";
|
||||
}
|
||||
|
||||
// /item/<item_id>/<variant_id>/price_history?<origin>
|
||||
Future<List<Price>> getPriceHistory(String item, String variant,
|
||||
{String? origin}) async {
|
||||
var url = "$instance/item/$item/$variant/price_history";
|
||||
|
||||
if (origin != null) {
|
||||
url += "?origin=$origin";
|
||||
}
|
||||
|
||||
var resp = jsonDecode(await getRequest(url)) as List<dynamic>;
|
||||
|
||||
return resp.map((x) => Price(x)).toList();
|
||||
}
|
||||
|
||||
// Flows
|
||||
|
||||
// /flows
|
||||
Future<Map<String, FlowInfo>> getFlows() async {
|
||||
var resp =
|
||||
jsonDecode(await getRequest("$instance/flows")) as Map<String, dynamic>;
|
||||
|
||||
return resp.map((key, value) => MapEntry(key, FlowInfo(value)));
|
||||
}
|
||||
|
||||
// /flow/<id>/info
|
||||
Future<FlowInfo> getFlowInfo(String id) async {
|
||||
return FlowInfo(jsonDecode(await getRequest("$instance/flow/$id/info")));
|
||||
}
|
||||
|
||||
// /flow/<id>
|
||||
Future<String> startFlow(String id, {List<String>? input}) async {
|
||||
var resp =
|
||||
jsonDecode(await postRequest("$instance/flow/$id", {"input": input}));
|
||||
|
||||
return resp["uuid"];
|
||||
}
|
||||
|
||||
// /flow/<id>/end
|
||||
Future<List<String>?> endFlow(String id, {Map<String, int>? produced}) async {
|
||||
var resp = jsonDecode(
|
||||
await postRequest("$instance/$id/end", {"produced": produced}));
|
||||
|
||||
if (produced != null) {
|
||||
return resp["produced"] as List<String>;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
// /flow/<id>/continue
|
||||
Future<String> continueFlow(String id, {List<String>? input}) async {
|
||||
var resp = jsonDecode(
|
||||
await postRequest("$instance/flow/$id/continue", {"input": input}));
|
||||
|
||||
return resp["uuid"];
|
||||
}
|
||||
|
||||
Future<List<Transaction>> getExpiredItems() async {
|
||||
var resp = jsonDecode(await getRequest("$instance/items/expired"))
|
||||
as List<dynamic>;
|
||||
return resp.map((x) => Transaction(x)).toList();
|
||||
}
|
||||
|
||||
Future<List<MinItem>> getItemsUnderMin() async {
|
||||
var resp =
|
||||
jsonDecode(await getRequest("$instance/items/min")) as List<dynamic>;
|
||||
|
||||
return resp.map((x) => MinItem(x)).toList();
|
||||
}
|
||||
|
||||
Future<void> moveTransaction(String id, String new_location) async {
|
||||
jsonDecode(await postRequest(
|
||||
"$instance/transaction/$id/move", {"to": new_location}));
|
||||
}
|
||||
|
||||
Future<Location> getLocation(String id) async {
|
||||
var resp = jsonDecode(await getRequest("$instance/location/$id"));
|
||||
return Location(resp);
|
||||
}
|
||||
}
|
||||
|
||||
class FlowInfo {
|
||||
late String id;
|
||||
late String name;
|
||||
late List<String> depends;
|
||||
late String? next;
|
||||
late List<String>? produces;
|
||||
|
||||
FlowInfo(Map<String, dynamic> json) {
|
||||
id = json["id"];
|
||||
name = json["name"];
|
||||
depends = json["depends"] as List<String>;
|
||||
next = json["next"];
|
||||
produces = json["produces"];
|
||||
}
|
||||
}
|
||||
|
||||
class Item {
|
||||
|
@ -225,3 +352,34 @@ class ItemVariantStat {
|
|||
total_price = json["total_price"];
|
||||
}
|
||||
}
|
||||
|
||||
class Location {
|
||||
late String id;
|
||||
late String name;
|
||||
late String? parent;
|
||||
late LocationCondition? conditions;
|
||||
|
||||
Location(Map<String, dynamic> json) {
|
||||
id = json["id"];
|
||||
name = json["name"];
|
||||
parent = json["parent"];
|
||||
conditions = json["conditions"] != null ? (json["conditions"]) : null;
|
||||
}
|
||||
}
|
||||
|
||||
class LocationCondition {
|
||||
late String temperature;
|
||||
|
||||
LocationCondition(Map<String, dynamic> json) {
|
||||
temperature = json["temperature"];
|
||||
}
|
||||
}
|
||||
|
||||
class MinItem {
|
||||
late String item_variant;
|
||||
late int need;
|
||||
MinItem(Map<String, dynamic> json) {
|
||||
item_variant = json["item_variant"];
|
||||
need = json["need"];
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue