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 authenticate(String email, String password, { bool statusCheck = true}) async { Map requestBody = { 'email': email, 'password': password }; String response = await requestFormData('/authenticate', requestBody, statusCheck: statusCheck ); AuthResponse aman = AuthResponse.fromJson(json.decode(response)); return aman.body; } Future> isActive(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/test_auth', requestBody); return Response.fromJson(json.decode(response), Message.fromJson); } Future> logout(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/logout', requestBody); return Response.fromJson(json.decode(response), Message.fromJson); } Future> money(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/money', requestBody); return Response.fromJsonDynamic(json.decode(response)); } Future> deposit(String token, String sum) async { Map requestBody = {'api_token': token, 'summ': sum}; var response = await requestFormData('/deposit', requestBody); return Response.fromJsonDynamic(json.decode(response)); } Future> withdrawal(String token, String sum) async { Map requestBody = {'api_token': token, 'summ': sum}; var response = await requestFormData('/withdrawal', requestBody); return Response.fromJsonDynamic(json.decode(response)); } Future> smena(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/smena', requestBody); return Response.fromJson(json.decode(response), Smena.fromJson); } Future> closeSmena(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/close_smena', requestBody); return Response.fromJson(json.decode(response), Smena.fromJson); } Future> openSmena(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/open_smena', requestBody); return Response.fromJson(json.decode(response), Smena.fromJson); } Future> xReport(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/report_x', requestBody); return Response.fromJsonDynamic(json.decode(response)); } Future> sell(String token, String checkData) async { Map requestBody = {'api_token': token, 'data': checkData}; var response = await requestFormData('/sell', requestBody); print(response); return Response.fromJsonDynamic(json.decode(response)); } Future> sellReturn(String token, String checkData) async { Map requestBody = {'api_token': token, 'data': checkData}; var response = await requestFormData('/sell_return', requestBody); print(response); return Response.fromJsonDynamic(json.decode(response)); } Future requestFormData(String point, Map requestBody, { bool statusCheck = true } ) async { Map headers = { 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> getGoodsFromServer(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/goods', requestBody); print(response); return Response.fromJsonDynamic(json.decode(response)); } Future> getCategoryFromServer(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/goods_category', requestBody); print(response); return Response.fromJsonDynamic(json.decode(response)); } Future> getServiceFromServer(String token) async { Map requestBody = {'api_token': token}; var response = await requestFormData('/services', requestBody); print(response); return Response.fromJsonDynamic(json.decode(response)); } }