chore : change app archticle

This commit is contained in:
2025-05-12 16:55:55 +03:30
parent 114f8a1ada
commit e11ef1990c
56 changed files with 873 additions and 1247 deletions

View File

@@ -1,16 +1,12 @@
import 'dart:typed_data';
import 'package:dio/dio.dart';
import 'package:pretty_dio_logger/pretty_dio_logger.dart';
import 'package:rasadyar_core/infrastructure/remote/interfaces/i_form_data.dart';
import 'package:rasadyar_core/infrastructure/remote/interfaces/i_http_response.dart';
import 'package:rasadyar_core/infrastructure/remote/interfaces/i_remote.dart';
import 'dio_form_data.dart';
import 'dio_response.dart';
import 'interfaces/i_http_client.dart';
class DioRemote implements IRemote, IHttpClient {
class DioRemote implements IHttpClient {
final String baseUrl;
late final Dio _dio;
@@ -24,31 +20,31 @@ class DioRemote implements IRemote, IHttpClient {
}
@override
Future<IHttpResponse> get(
String path, {
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onReceiveProgress,
}) async {
final response = await _dio.get(
Future<DioResponse<T>> get<T>(
String path, {
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onReceiveProgress,
}) async {
final response = await _dio.get<T>(
path,
queryParameters: queryParameters,
options: Options(headers: headers),
onReceiveProgress: onReceiveProgress,
);
return DioHttpResponse(response);
return DioResponse<T>(response);
}
@override
Future<IHttpResponse> post(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
}) async {
final response = await _dio.post(
Future<DioResponse<T>> post<T>(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
}) async {
final response = await _dio.post<T>(
path,
data: data,
queryParameters: queryParameters,
@@ -56,19 +52,19 @@ class DioRemote implements IRemote, IHttpClient {
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
);
return DioHttpResponse(response);
return DioResponse<T>(response);
}
@override
Future<IHttpResponse> put(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
}) async {
final response = await _dio.put(
Future<DioResponse<T>> put<T>(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
}) async {
final response = await _dio.put<T>(
path,
data: data,
queryParameters: queryParameters,
@@ -76,51 +72,51 @@ class DioRemote implements IRemote, IHttpClient {
onSendProgress: onSendProgress,
onReceiveProgress: onReceiveProgress,
);
return DioHttpResponse(response);
return DioResponse<T>(response);
}
@override
Future<IHttpResponse> delete(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
}) async {
final response = await _dio.delete(
Future<DioResponse<T>> delete<T>(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
}) async {
final response = await _dio.delete<T>(
path,
data: data,
queryParameters: queryParameters,
options: Options(headers: headers),
);
return DioHttpResponse(response);
return DioResponse<T>(response);
}
@override
Future<IHttpResponse<Uint8List>> download(
String url, {
ProgressCallback? onReceiveProgress,
}) async {
Future<DioResponse<Uint8List>> download<Uint8List>(
String url, {
ProgressCallback? onReceiveProgress,
}) async {
final response = await _dio.get<Uint8List>(
url,
options: Options(responseType: ResponseType.bytes),
onReceiveProgress: onReceiveProgress,
);
return DioHttpResponse(response);
return DioResponse(response);
}
@override
Future<IHttpResponse> upload(
String path, {
required IFormData formData,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
}) async {
final response = await _dio.post(
Future<DioResponse<T>> upload<T>(
String path, {
required IFormData formData,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
}) async {
final response = await _dio.post<T>(
path,
data: (formData as DioFormData).raw,
options: Options(headers: headers, contentType: 'multipart/form-data'),
onSendProgress: onSendProgress,
);
return DioHttpResponse(response);
return DioResponse<T>(response);
}
}

View File

@@ -1,10 +1,10 @@
import 'interfaces/i_http_response.dart';
import 'package:dio/dio.dart';
class DioHttpResponse<T> implements IHttpResponse<T> {
class DioResponse<T> implements IHttpResponse<T> {
final Response<T> _response;
DioHttpResponse(this._response);
DioResponse(this._response);
@override
T? get data => _response.data;
@@ -13,8 +13,7 @@ class DioHttpResponse<T> implements IHttpResponse<T> {
int get statusCode => _response.statusCode ?? 0;
@override
Map<String, List<String>> get headers =>
_response.headers.map.map((k, v) => MapEntry(k, v));
Map<String, dynamic>? get headers => _response.headers.map;
@override
bool get isSuccessful => statusCode >= 200 && statusCode < 300;

View File

@@ -1,51 +1,54 @@
import 'dart:typed_data';
import 'package:dio/dio.dart';
import 'package:rasadyar_core/infrastructure/remote/dio_form_data.dart';
import 'i_http_response.dart';
import 'i_form_data.dart';
import 'i_http_response.dart';
abstract class IHttpClient {
Future<IHttpResponse> get(
Future<void> init();
Future<IHttpResponse<T>> get<T>(
String path, {
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onReceiveProgress,
});
Future<IHttpResponse> post(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
});
Future<IHttpResponse> put(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
});
Future<IHttpResponse<T>> post<T>(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
});
Future<IHttpResponse> delete(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
});
Future<IHttpResponse<T>> put<T>(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
ProgressCallback? onReceiveProgress,
});
Future<IHttpResponse<Uint8List>> download(
String url, {
ProgressCallback? onReceiveProgress,
});
Future<IHttpResponse<T>> delete<T>(
String path, {
dynamic data,
Map<String, dynamic>? queryParameters,
Map<String, String>? headers,
});
Future<IHttpResponse> upload(
String path, {
required IFormData formData,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
});
Future<IHttpResponse<T>> download<T>(
String url, {
ProgressCallback? onReceiveProgress,
});
Future<IHttpResponse<T>> upload<T>(
String path, {
required IFormData formData,
Map<String, String>? headers,
ProgressCallback? onSendProgress,
});
}

View File

@@ -1,6 +1,6 @@
abstract class IHttpResponse<T> {
T? get data;
int get statusCode;
Map<String, List<String>> get headers;
Map<String, dynamic>? get headers;
bool get isSuccessful;
}