import 'dart:convert'; import 'package:doctor_app_flutter/config/config.dart'; import 'package:doctor_app_flutter/config/shared_pref_kay.dart'; import 'package:doctor_app_flutter/interceptor/http_interceptor.dart'; import 'package:doctor_app_flutter/models/doctor_profile_model.dart'; import 'package:doctor_app_flutter/util/helpers.dart'; import 'package:http/http.dart'; /* *@author: Mohammad Aljammal *@Date:28/5/2020 *@param: url, onSuccess callBack, onFailure callBack *@return: *@desc: */ ///Example /* await BaseAppClient.post('', onSuccess: (dynamic response, int statusCode) {}, onFailure: (String error, int statusCode) {}, body: null); * */ class BaseAppClient { static Client client = HttpInterceptor().getClient(); static post( String endPoint, { Map body, Function(dynamic response, int statusCode) onSuccess, Function(String error, int statusCode) onFailure, }) async { String url = BASE_URL + endPoint; try { Map profile = await sharedPref.getObj(DOCTOR_PROFILE); String token = await sharedPref.getString(TOKEN); DoctorProfileModel doctorProfile = DoctorProfileModel.fromJson(profile); body['DoctorID'] = doctorProfile.doctorID; body['EditedBy'] = doctorProfile.doctorID; body['ProjectID'] = doctorProfile.projectID; body['ClinicID'] = doctorProfile.clinicID; body['TokenID'] = token; body['LanguageID'] = LANGUAGE_ID; body['stamp'] = STAMP; body['IPAdress'] = IP_ADDRESS; body['VersionID'] = VERSION_ID; body['Channel'] = CHANNEL; body['SessionID'] = SESSION_ID; body['IsLoginForDoctorApp'] = IS_LOGIN_FOR_DOCTOR_APP; body['PatientOutSA'] = PATIENT_OUT_SA; if (await Helpers.checkConnection()) { final response = await client.post(url, body: json.encode(body)); final int statusCode = response.statusCode; if (statusCode < 200 || statusCode >= 400 || json == null) { onFailure('Error While Fetching data', statusCode); } else { var parsed = json.decode(response.body.toString()); if (parsed['MessageStatus'] == 1) { onSuccess(parsed, statusCode); } else { onFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], statusCode); } } } else { onFailure('Please Check The Internet Connection', -1); } } catch (e) { print(e); onFailure(e.toString(), -1); } } }