Untitled

mail@pastecode.io avatar
unknown
plain_text
7 months ago
1.5 kB
5
Indexable
Never
import 'BaseApiServices.dart';
import 'dart:convert';
import 'dart:io';
import 'package:http/http.dart' as http;

import 'app_exception.dart';

class NetworkApiService extends BaseApiServices {
  @override
  Future authApiResponse(String url, dynamic data) async {
    dynamic responseJson;
    var headers = {'Content-Type': 'application/x-www-form-urlencoded'};
    var request = http.Request('POST', Uri.parse(url));
    request.bodyFields = {
      'params': json.encode(data),
    };
    request.headers.addAll(headers);
    try {
      final response = await http
          .put(Uri.parse(url), body: data, headers: headers)
          .timeout(const Duration(seconds: 30));

      responseJson = returnResponse(response);
    } on SocketException {
      //socket Exception is not internet
      throw FetchDataException("No Internet Connection");
    }

    return responseJson;
  }

  dynamic returnResponse(http.Response response) {
    switch (response.statusCode) {
      case 200:
      case 201:
        dynamic responseJson = jsonDecode(response.body);
        return responseJson;
      case 400:
        Map errorMessage = jsonDecode(response.body);
        throw BadRequestException(errorMessage["message"].toString());
      case 500:
      case 404:
        throw UnAuthorisedException(response.body.toString());
      default:
        throw FetchDataException(
            "Error occurred while communicating with server with status code ${response.statusCode}");
    }
  }
}