aman-kassa-flutter/lib/core/services/ApiService.dart

147 lines
5.8 KiB
Dart

import 'dart:convert';
import 'dart:io';
import 'package:aman_kassa_flutter/core/base/base_service.dart';
import 'package:aman_kassa_flutter/core/entity/Goods.dart';
import 'package:aman_kassa_flutter/core/models/message.dart';
import 'package:aman_kassa_flutter/core/models/response.dart';
import 'package:aman_kassa_flutter/core/models/smena.dart';
import '../models/auth_response.dart';
import 'package:http/http.dart' as http;
/// The service responsible for networking requests
class ApiService extends BaseService {
static const endpoint = 'https://kassa-test.aman.com.kz/ru/api/v2';
var client = new http.Client();
Future<AuthBody> authenticate(String email, String password, { bool statusCheck = true}) async {
Map<String, String> requestBody = <String, String>{
'email': email,
'password': password
};
String response = await requestFormData('/authenticate', requestBody, statusCheck: statusCheck );
AuthResponse aman = AuthResponse.fromJson(json.decode(response));
return aman.body;
}
Future<Response<Message>> isActive(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/test_auth', requestBody);
return Response.fromJson(json.decode(response), Message.fromJson);
}
Future<Response<Message>> logout(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/logout', requestBody);
return Response.fromJson(json.decode(response), Message.fromJson);
}
Future<Response<dynamic>> money(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/money', requestBody);
return Response.fromJsonDynamic(json.decode(response));
}
Future<Response<dynamic>> deposit(String token, String sum) async {
Map<String, String> requestBody = <String, String>{'api_token': token, 'summ': sum};
var response = await requestFormData('/deposit', requestBody);
return Response.fromJsonDynamic(json.decode(response));
}
Future<Response<dynamic>> withdrawal(String token, String sum) async {
Map<String, String> requestBody = <String, String>{'api_token': token, 'summ': sum};
var response = await requestFormData('/withdrawal', requestBody);
return Response.fromJsonDynamic(json.decode(response));
}
Future<Response<Smena>> smena(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/smena', requestBody);
return Response.fromJson(json.decode(response), Smena.fromJson);
}
Future<Response<Smena>> closeSmena(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/close_smena', requestBody);
return Response.fromJson(json.decode(response), Smena.fromJson);
}
Future<Response<Smena>> openSmena(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/open_smena', requestBody);
return Response.fromJson(json.decode(response), Smena.fromJson);
}
Future<Response<dynamic>> xReport(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/report_x', requestBody);
return Response.fromJsonDynamic(json.decode(response));
}
Future<Response<dynamic>> sell(String token, String checkData) async {
Map<String, String> requestBody = <String, String>{'api_token': token, 'data': checkData};
var response = await requestFormData('/sell', requestBody);
print(response);
return Response.fromJsonDynamic(json.decode(response));
}
Future<Response<dynamic>> sellReturn(String token, String checkData) async {
Map<String, String> requestBody = <String, String>{'api_token': token, 'data': checkData};
var response = await requestFormData('/sell_return', requestBody);
print(response);
return Response.fromJsonDynamic(json.decode(response));
}
Future<String> requestFormData(String point, Map<String, String> requestBody, { bool statusCheck = true } ) async {
Map<String, String> headers = <String, String>{
HttpHeaders.contentTypeHeader: "multipart/form-data",
HttpHeaders.cacheControlHeader: "no-cache"
};
var uri = Uri.parse('$endpoint$point');
var request = http.MultipartRequest('POST', uri)
..headers.addAll(headers)
..fields.addAll(requestBody);
var response = await request.send();
String body = await response.stream.bytesToString();
if(statusCheck) { //Проверка на авторизованный запрос, необязательный параметр
Response check = Response.fromJsonDynamic(json.decode(body));
if (!check.operation && check.status == 401) {
print('object');
}
}
return body;
}
Future<Response<dynamic>> getGoodsFromServer(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/goods', requestBody);
print(response);
return Response.fromJsonDynamic(json.decode(response));
}
Future<Response<dynamic>> getCategoryFromServer(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/goods_category', requestBody);
print(response);
return Response.fromJsonDynamic(json.decode(response));
}
Future<Response<dynamic>> getServiceFromServer(String token) async {
Map<String, String> requestBody = <String, String>{'api_token': token};
var response = await requestFormData('/services', requestBody);
print(response);
return Response.fromJsonDynamic(json.decode(response));
}
}