Implementation
Map<String, Function> apiMethods = {
'refreshAccessToken': (Map<String, dynamic> args) async {
return TokenRefreshResponse.fromResponse(await _dio.post(
"$apiBaseUrl/moses/token/refresh/",
data: {'refresh': args['refreshToken']},
options: Options(validateStatus: (status) => status! < 500)));
},
'authenticate': (Map<String, dynamic> args) async {
Response response = await _dio.post(
"$apiBaseUrl/moses/token/obtain/",
data: {
'phone_number': args['phoneNumber'],
'password': args['password'],
'otp': args['otp'] ?? ""
},
options: Options(validateStatus: (status) => status! < 500),
);
return LoginResponse.fromResponse(response);
},
'checkOtpStatus': (Map<String, dynamic> args) async {
String phoneNumber = Uri.encodeQueryComponent(args['phoneNumber']);
Response response = await _dio.get(
"$apiBaseUrl/moses/is_mfa_enabled_for_phone_number/?phone_number.dart=$phoneNumber",
options: Options(validateStatus: (status) => status! < 500));
return OtpStatusResponse.fromResponse(response);
},
'register': (Map<String, dynamic> args) async {
Response response = await _dio.post(
"$apiBaseUrl/moses/users/",
data: {
'phone_number': args['phoneNumber'],
'password': args['password'],
'first_name': args['firstName'],
'last_name': args['lastName'],
'email': args['email']
},
options: Options(validateStatus: (status) => status! < 500),
);
return RegisterResponse.fromResponse(response);
},
'resetPassword': (Map<String, dynamic> args) async {
Response response = await _dio.post(
"$apiBaseUrl/moses/password/reset/",
data: args['email'] == null
? {'phone_number.dart': args['phoneNumber']}
: {'email': args['email']},
options: Options(validateStatus: (status) => status! < 500),
);
return PasswordResetResponse.fromResponse(response);
},
'getAuthenticatedUserData': (Map<String, dynamic> args) async {
return UserDataResponse.fromResponse(await _dio.get(
"$apiBaseUrl/moses/users/me/",
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'getProfileByPhoneOrEmail': (Map<String, dynamic> args) async {
return UserDataResponse.fromResponse(await _dio.get(
"$apiBaseUrl/moses/get_by_phone_or_email/?value=${Uri.encodeComponent(args['value'])}",
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args["accessToken"]}'})));
},
'updateProfile': (Map<String, dynamic> args) async {
return UserDataResponse.fromResponse(await _dio.patch(
"$apiBaseUrl/moses/users/me/",
data: {"phone_number.dart": args['phoneNumber'], "email": args['email']},
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'confirmEmail': (Map<String, dynamic> args) async {
return ConfirmEmailResponse.fromResponse(await _dio.post(
"$apiBaseUrl/moses/confirm_email/",
data: {
"pin": args['emailPin'],
"candidate_pin": args['emailCandidatePin']
},
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'addMenuSectionEntryToMenuSectionEntriesList': (Map<String, dynamic> args) async {
return AddMenuSectionEntryToFavoritesResponse.fromResponse(
await _dio.post("$apiBaseUrl/catalogue/menusectionentrieslistentry/",
data: {
"menu_section_entry_id": args['menuSectionEntryId'],
"menu_section_entries_list": args['menuSectionEntriesListId']
},
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'},
)));
},
'removeMenuSectionEntryFromMenuSectionEntriesList': (Map<String, dynamic> args) async {
return RemoveMenuSectionEntryFromFavoritesResponse.fromResponse(
await _dio.delete(
"$apiBaseUrl/catalogue/menusectionentrieslistentry/${args['menuSectionEntriesListEntryId']}/",
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'},
)));
},
'confirmPhoneNumber': (Map<String, dynamic> args) async {
return ConfirmPhoneNumberResponse.fromResponse(await _dio.post(
"$apiBaseUrl/moses/confirm_phone_number/",
data: {
"pin": args['emailPin'],
"candidate_pin": args['emailCandidatePin']
},
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'updatePassword': (Map<String, dynamic> args) async {
return UpdatePasswordResponse.fromResponse(await _dio.post(
"$apiBaseUrl/moses/password/",
data: {
"current_password": args['oldPassword'],
"new_password": args['newPassword']
},
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'setMFAEnabled': (Map<String, dynamic> args) async {
return MFASwitchResponse.fromResponse(await _dio.post(
"$apiBaseUrl/moses/mfa/",
data: {"action": args['action'], "mfa_secret_key": args['secretKey']},
options: Options(validateStatus: (status) => status! < 500, headers: {
'Authorization': 'Bearer ${args['accessToken']}',
'OTP': args['otp']
}),
));
},
'getCompany': (Map<String, dynamic> args) async {
return CompanyResponse.fromResponse(await _dio.get(
"$apiBaseUrl/company/company/${args['companyId']}",
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'getMarketplaceRootMenuSection': (Map<String, dynamic> args) async {
String url =
"$apiBaseUrl/catalogue/menusection/for_marketplace/?marketplace=${args['marketplaceId']}";
if (args['companyId'] != null) {
url += "&company=${args['companyId']}";
}
return MenuSectionResponse.fromResponse(await _dio.get(
url,
options: Options(validateStatus: (status) => status! < 500),
));
},
'getOrders': (Map<String, dynamic> args) async {
return OrdersListResponse.fromResponse(await _dio.get(
"$apiBaseUrl/trade/order/",
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'createOrder': (Map<String, dynamic> args) async {
return OrderCreateResponse.fromResponse(await _dio.post(
"$apiBaseUrl/trade/order/",
data: {
"order_entries": args['entries'],
"promocodes": args['promocodes'],
},
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'rateOfferMap': (Map<String, dynamic> args) async {
return OrderCreateResponse.fromResponse(await _dio.post(
"$apiBaseUrl/trade/offerrating/",
data: {"offer": args['offerId'], "value": args['value']},
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'getTransactions': (Map<String, dynamic> args) async {
return TransactionsResponse.fromResponse(await _dio.get(
"$apiBaseUrl/logistics/transaction/",
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'createTransaction': (Map<String, dynamic> args) async {
Map<String, dynamic> data = {
"source": args['sourceNode'],
"target": args['targetNode'],
if (args['orderEntry'] != null) "order_entry": args['orderEntry'],
if (args['orderEntryToPayFor'] != null)
"order_entry_to_pay_for": args['orderEntryToPayFor'],
if (args['orderEntryToCompensateFor'] != null)
"order_entry_to_compensate_for": args['orderEntryToCompensateFor'],
"entries": args['transactionEntries'],
"extra_data": args['extraData'],
"external_ledger_transactions": args['externalLedgerTransactions'],
"pipelines": args['pipelineIds'],
};
return TransactionCreateResponse.fromResponse(await _dio.post(
"$apiBaseUrl/logistics/transaction/",
data: data,
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'getNodes': (Map<String, dynamic> args) async {
return NodesListResponse.fromResponse(await _dio.get(
"$apiBaseUrl/logistics/transactionnode/",
options: Options(
validateStatus: (status) => status! < 500,
headers: {'Authorization': 'Bearer ${args['accessToken']}'}),
));
},
'getMenuSectionEntries': (Map<String, dynamic> args) async {
Map<String, String> queryParams = {};
if (args['menuSectionEntriesListId'] != null) {
queryParams['menu_section_entries_list'] =
args['menuSectionEntriesListId'];
}
if (args['menuSectionId'] != null) {
queryParams['menu_section'] = args['menuSectionId'];
}
if (args['searchQuery'] != null) {
queryParams['q'] = args['searchQuery'];
}
Map<String, String> headers = {};
if (args['accessToken'] != null) {
headers['Authorization'] = 'Bearer ${args['accessToken']}';
}
String queryParamsString = queryParams.entries
.map((entry) => "${entry.key}=${entry.value}")
.join("&");
return MenuSectionEntriesResponse.fromResponse(await _dio.get(
"$apiBaseUrl/catalogue/menusectionentry/?$queryParamsString",
options:
Options(validateStatus: (status) => status! < 500, headers: headers),
));
}
};