Files
Utsav Ghimire 769527862b initial commit
2023-03-02 11:06:39 +05:45

72 lines
2.0 KiB
Dart

import 'package:dartz/dartz.dart';
import 'package:dio/dio.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter_project/configs/app_configs.dart';
import 'package:flutter_project/shared/data/remote/network_service.dart';
import 'package:flutter_project/shared/domain/models/response.dart' as response;
import 'package:flutter_project/shared/exceptions/http_exception.dart';
import 'package:flutter_project/shared/globals.dart';
import 'package:flutter_project/shared/mixins/exception_handler_mixin.dart';
class DioNetworkService extends NetworkService with ExceptionHandlerMixin {
final Dio dio;
DioNetworkService(this.dio) {
// this throws error while running test
if (!kTestMode) {
dio.options = dioBaseOptions;
if (kDebugMode) {
dio.interceptors
.add(LogInterceptor(requestBody: true, responseBody: true));
}
}
}
BaseOptions get dioBaseOptions => BaseOptions(
baseUrl: baseUrl,
headers: headers,
);
@override
String get baseUrl => AppConfigs.baseUrl;
@override
Map<String, Object> get headers => {
'accept': 'application/json',
'content-type': 'application/json',
};
@override
Map<String, dynamic>? updateHeader(Map<String, dynamic> data) {
final header = {...data, ...headers};
if (!kTestMode) {
dio.options.headers = header;
}
return header;
}
@override
Future<Either<AppException, response.Response>> post(String endpoint,
{Map<String, dynamic>? data}) {
final res = handleException(
() => dio.post(
endpoint,
data: data,
),
endpoint: endpoint,
);
return res;
}
@override
Future<Either<AppException, response.Response>> get(String endpoint,
{Map<String, dynamic>? queryParameters}) {
final res = handleException(
() => dio.get(
endpoint,
queryParameters: queryParameters,
),
endpoint: endpoint,
);
return res;
}
}