Skip to content

Commit 75b2a1b

Browse files
agwoosignalagordn52
authored andcommitted
Merged in feature/WFA-11-api-settings-options (pull request #11)
Feature/WFA-11 api settings options Approved-by: Anthony Gordon <ants52@aol.com>
2 parents 1c633bc + b8239f3 commit 75b2a1b

File tree

3 files changed

+299
-0
lines changed

3 files changed

+299
-0
lines changed
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
// To parse this JSON data, do
2+
//
3+
// final settingOption = settingOptionFromJson(jsonString);
4+
5+
import 'dart:convert';
6+
7+
List<SettingOption> settingOptionFromJson(String str) =>
8+
List<SettingOption>.from(
9+
json.decode(str).map((x) => SettingOption.fromJson(x)));
10+
11+
String settingOptionToJson(List<SettingOption> data) =>
12+
json.encode(List<dynamic>.from(data.map((x) => x.toJson())));
13+
14+
class SettingOption {
15+
SettingOption({
16+
this.id,
17+
this.label,
18+
this.description,
19+
this.type,
20+
this.settingOptionDefault,
21+
this.tip,
22+
this.value,
23+
this.links,
24+
this.options,
25+
});
26+
27+
String id;
28+
String label;
29+
String description;
30+
String type;
31+
String settingOptionDefault;
32+
String tip;
33+
String value;
34+
Links links;
35+
Map<String, String> options;
36+
37+
factory SettingOption.fromJson(Map<String, dynamic> json) => SettingOption(
38+
id: json["id"],
39+
label: json["label"],
40+
description: json["description"],
41+
type: json["type"],
42+
settingOptionDefault: json["default"],
43+
tip: json["tip"] == null ? null : json["tip"],
44+
value: json["value"],
45+
links: Links.fromJson(json["_links"]),
46+
options: json["options"] == null
47+
? null
48+
: Map.from(json["options"])
49+
.map((k, v) => MapEntry<String, String>(k, v)),
50+
);
51+
52+
Map<String, dynamic> toJson() => {
53+
"id": id,
54+
"label": label,
55+
"description": description,
56+
"type": type,
57+
"default": settingOptionDefault,
58+
"tip": tip == null ? null : tip,
59+
"value": value,
60+
"_links": links.toJson(),
61+
"options": options == null
62+
? null
63+
: Map.from(options).map((k, v) => MapEntry<String, dynamic>(k, v)),
64+
};
65+
}
66+
67+
class Links {
68+
Links({
69+
this.self,
70+
this.collection,
71+
});
72+
73+
List<Collection> self;
74+
List<Collection> collection;
75+
76+
factory Links.fromJson(Map<String, dynamic> json) => Links(
77+
self: List<Collection>.from(
78+
json["self"].map((x) => Collection.fromJson(x))),
79+
collection: List<Collection>.from(
80+
json["collection"].map((x) => Collection.fromJson(x))),
81+
);
82+
83+
Map<String, dynamic> toJson() => {
84+
"self": List<dynamic>.from(self.map((x) => x.toJson())),
85+
"collection": List<dynamic>.from(collection.map((x) => x.toJson())),
86+
};
87+
}
88+
89+
class Collection {
90+
Collection({
91+
this.href,
92+
});
93+
94+
String href;
95+
96+
factory Collection.fromJson(Map<String, dynamic> json) => Collection(
97+
href: json["href"],
98+
);
99+
100+
Map<String, dynamic> toJson() => {
101+
"href": href,
102+
};
103+
}
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
// To parse this JSON data, do
2+
//
3+
// final settingOptionBatch = settingOptionBatchFromJson(jsonString);
4+
5+
import 'dart:convert';
6+
7+
SettingOptionBatch settingOptionBatchFromJson(String str) =>
8+
SettingOptionBatch.fromJson(json.decode(str));
9+
10+
String settingOptionBatchToJson(SettingOptionBatch data) =>
11+
json.encode(data.toJson());
12+
13+
class SettingOptionBatch {
14+
SettingOptionBatch({
15+
this.update,
16+
});
17+
18+
List<Update> update;
19+
20+
factory SettingOptionBatch.fromJson(Map<String, dynamic> json) =>
21+
SettingOptionBatch(
22+
update:
23+
List<Update>.from(json["update"].map((x) => Update.fromJson(x))),
24+
);
25+
26+
Map<String, dynamic> toJson() => {
27+
"update": List<dynamic>.from(update.map((x) => x.toJson())),
28+
};
29+
}
30+
31+
class Update {
32+
Update({
33+
this.id,
34+
this.label,
35+
this.description,
36+
this.type,
37+
this.updateDefault,
38+
this.options,
39+
this.tip,
40+
this.value,
41+
this.links,
42+
});
43+
44+
String id;
45+
String label;
46+
String description;
47+
String type;
48+
String updateDefault;
49+
Map<String, String> options;
50+
String tip;
51+
String value;
52+
Links links;
53+
54+
factory Update.fromJson(Map<String, dynamic> json) => Update(
55+
id: json["id"],
56+
label: json["label"],
57+
description: json["description"],
58+
type: json["type"],
59+
updateDefault: json["default"],
60+
options: json["options"] == null
61+
? null
62+
: Map.from(json["options"])
63+
.map((k, v) => MapEntry<String, String>(k, v)),
64+
tip: json["tip"] == null ? null : json["tip"],
65+
value: json["value"],
66+
links: Links.fromJson(json["_links"]),
67+
);
68+
69+
Map<String, dynamic> toJson() => {
70+
"id": id,
71+
"label": label,
72+
"description": description,
73+
"type": type,
74+
"default": updateDefault,
75+
"options": options == null
76+
? null
77+
: Map.from(options).map((k, v) => MapEntry<String, dynamic>(k, v)),
78+
"tip": tip == null ? null : tip,
79+
"value": value,
80+
"_links": links.toJson(),
81+
};
82+
}
83+
84+
class Links {
85+
Links({
86+
this.self,
87+
this.collection,
88+
});
89+
90+
List<Collection> self;
91+
List<Collection> collection;
92+
93+
factory Links.fromJson(Map<String, dynamic> json) => Links(
94+
self: List<Collection>.from(
95+
json["self"].map((x) => Collection.fromJson(x))),
96+
collection: List<Collection>.from(
97+
json["collection"].map((x) => Collection.fromJson(x))),
98+
);
99+
100+
Map<String, dynamic> toJson() => {
101+
"self": List<dynamic>.from(self.map((x) => x.toJson())),
102+
"collection": List<dynamic>.from(collection.map((x) => x.toJson())),
103+
};
104+
}
105+
106+
class Collection {
107+
Collection({
108+
this.href,
109+
});
110+
111+
String href;
112+
113+
factory Collection.fromJson(Map<String, dynamic> json) => Collection(
114+
href: json["href"],
115+
);
116+
117+
Map<String, dynamic> toJson() => {
118+
"href": href,
119+
};
120+
}

lib/woosignal.dart

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ import 'package:woosignal/models/response/payment_gateway.dart';
4747
import 'package:woosignal/models/response/SaleReport.dart';
4848
import 'package:woosignal/models/response/top_seller_report.dart';
4949
import 'package:woosignal/models/response/system_status.dart';
50+
import 'package:woosignal/models/response/setting_option.dart';
51+
import 'package:woosignal/models/response/setting_option_batch.dart';
5052

5153
class WooSignal {
5254
ApiProvider _apiProvider;
@@ -1545,4 +1547,78 @@ class WooSignal {
15451547
return orderBatch;
15461548
}
15471549
}
1550+
1551+
// Doc link: https://woosignal.com/docs/api/1.0/setting-options
1552+
// Retrieve a setting option
1553+
// This API lets you retrieve and view a specific setting option.
1554+
1555+
Future<SettingOption> retrieveSettingOptions(
1556+
{@required String groupid, @required String id}) async {
1557+
Map<String, dynamic> payload = {};
1558+
1559+
_printLog("Parameters: " + payload.toString());
1560+
payload = _standardPayload(
1561+
"get", payload, "settings/${groupid.toString()}/${id.toString()}");
1562+
1563+
SettingOption settingOption;
1564+
await _apiProvider.post("/request", payload).then((json) {
1565+
settingOption = SettingOption.fromJson(json);
1566+
});
1567+
_printLog(settingOption.toString());
1568+
return settingOption;
1569+
}
1570+
1571+
// Retrieve a setting option
1572+
// This API lets you retrieve and view a specific setting option.
1573+
Future<List<SettingOption>> getSettingOptions({String groupId}) async {
1574+
Map<String, dynamic> payload = {};
1575+
1576+
_printLog("Parameters: " + payload.toString());
1577+
payload =
1578+
_standardPayload("get", payload, "settings/${groupId.toString()}");
1579+
1580+
List<SettingOption> settingOptions = [];
1581+
await _apiProvider.post("/request", payload).then((json) {
1582+
settingOptions =
1583+
(json as List).map((i) => SettingOption.fromJson(i)).toList();
1584+
});
1585+
_printLog(settingOptions.toString());
1586+
return settingOptions;
1587+
}
1588+
1589+
// Update a setting option
1590+
// This API lets you make changes to a setting option.
1591+
Future<SettingOption> updateSettinOptions(String groupid, String id,
1592+
{Map<String, dynamic> data}) async {
1593+
Map<String, dynamic> payload = data;
1594+
1595+
_printLog(payload.toString());
1596+
payload = _standardPayload(
1597+
"put", payload, "settings/${groupid.toString()}/${id.toString}");
1598+
1599+
SettingOption settingOption;
1600+
await _apiProvider.post("/request", payload).then((json) {
1601+
settingOption = SettingOption.fromJson(json);
1602+
});
1603+
_printLog(settingOption.toString());
1604+
return settingOption;
1605+
}
1606+
// Batch update setting options
1607+
// This API helps you to batch update multiple setting options.
1608+
1609+
// Note: By default it's limited to up to 100 objects to be created, updated or deleted.
1610+
Future<SettingOptionBatch> batchSettingOptions(
1611+
{Map<String, dynamic> data}) async {
1612+
Map<String, dynamic> payload = data;
1613+
1614+
_printLog(payload.toString());
1615+
payload = _standardPayload("post", payload, "settings/general/batch");
1616+
1617+
SettingOptionBatch batchsettingOption;
1618+
await _apiProvider.post("/request", payload).then((json) {
1619+
batchsettingOption = SettingOptionBatch.fromJson(json);
1620+
});
1621+
_printLog(batchsettingOption.toString());
1622+
return batchsettingOption;
1623+
}
15481624
}

0 commit comments

Comments
 (0)