Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Future<Result<List<T>>> requestPayload<T>({
- required HttpMethod method,
- required String path,
- required T Function(Object? json) fromJsonT,
- Map<String, dynamic>? data,
- String? contentType,
- Map<String, dynamic>? parameters,
- String? language,
- }) async {
- try {
- final Map<String, String> headers = language == null ? {} : {"Content-Language": language};
- final Response response = await request(
- path,
- data: data,
- queryParameters: parameters,
- options: Options(method: method.name, contentType: contentType, headers: headers.isEmpty ? null : headers),
- );
- final ApiResponse<T> apiResponse = ApiResponse.fromJson(response.data, (data) => fromJsonT(data));
- final Payload<T> result = apiResponse.result!;
- return Result.success(result.items);
- } on DioException catch (e) {
- final Response? errorResponse = e.response;
- ApiError? error;
- if (errorResponse != null) {
- final ApiResponse<ApiError> apiResponse = ApiResponse.fromJson(
- errorResponse.data,
- (data) => ApiError.fromJson(data as Map<String, dynamic>),
- );
- final Payload<ApiError>? errors = apiResponse.errors;
- error = errors?.items[0];
- }
- return Result.error(error?.toNetworkException() ?? const NetworkException());
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement