mirror of
https://github.com/foss42/apidash.git
synced 2025-07-01 05:30:54 +08:00
Update http client usage in request http service
This commit is contained in:
@ -1,11 +1,12 @@
|
|||||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||||
import 'settings_providers.dart';
|
import 'package:http/http.dart' as http;
|
||||||
import 'ui_providers.dart';
|
|
||||||
|
import '../consts.dart';
|
||||||
import '../models/models.dart';
|
import '../models/models.dart';
|
||||||
import '../services/services.dart' show hiveHandler, HiveHandler, request;
|
import '../services/services.dart' show hiveHandler, HiveHandler, request;
|
||||||
import '../utils/utils.dart' show getNewUuid, collectionToHAR;
|
import '../utils/utils.dart' show getNewUuid, collectionToHAR;
|
||||||
import '../consts.dart';
|
import 'settings_providers.dart';
|
||||||
import 'package:http/http.dart' as http;
|
import 'ui_providers.dart';
|
||||||
|
|
||||||
final selectedIdStateProvider = StateProvider<String?>((ref) => null);
|
final selectedIdStateProvider = StateProvider<String?>((ref) => null);
|
||||||
|
|
||||||
@ -24,13 +25,16 @@ final requestSequenceProvider = StateProvider<List<String>>((ref) {
|
|||||||
return ids ?? [];
|
return ids ?? [];
|
||||||
});
|
});
|
||||||
|
|
||||||
|
final client = http.Client();
|
||||||
|
|
||||||
final StateNotifierProvider<CollectionStateNotifier, Map<String, RequestModel>?>
|
final StateNotifierProvider<CollectionStateNotifier, Map<String, RequestModel>?>
|
||||||
collectionStateNotifierProvider =
|
collectionStateNotifierProvider = StateNotifierProvider(
|
||||||
StateNotifierProvider((ref) => CollectionStateNotifier(ref, hiveHandler));
|
(ref) => CollectionStateNotifier(ref, hiveHandler, client));
|
||||||
|
|
||||||
class CollectionStateNotifier
|
class CollectionStateNotifier
|
||||||
extends StateNotifier<Map<String, RequestModel>?> {
|
extends StateNotifier<Map<String, RequestModel>?> {
|
||||||
CollectionStateNotifier(this.ref, this.hiveHandler) : super(null) {
|
CollectionStateNotifier(this.ref, this.hiveHandler, this.httpClient)
|
||||||
|
: super(null) {
|
||||||
var status = loadData();
|
var status = loadData();
|
||||||
Future.microtask(() {
|
Future.microtask(() {
|
||||||
if (status) {
|
if (status) {
|
||||||
@ -46,6 +50,7 @@ class CollectionStateNotifier
|
|||||||
final Ref ref;
|
final Ref ref;
|
||||||
final HiveHandler hiveHandler;
|
final HiveHandler hiveHandler;
|
||||||
final baseResponseModel = const ResponseModel();
|
final baseResponseModel = const ResponseModel();
|
||||||
|
final http.Client httpClient;
|
||||||
|
|
||||||
bool hasId(String id) => state?.keys.contains(id) ?? false;
|
bool hasId(String id) => state?.keys.contains(id) ?? false;
|
||||||
|
|
||||||
@ -187,6 +192,7 @@ class CollectionStateNotifier
|
|||||||
(http.Response?, Duration?, String?)? responseRec = await request(
|
(http.Response?, Duration?, String?)? responseRec = await request(
|
||||||
requestModel,
|
requestModel,
|
||||||
defaultUriScheme: defaultUriScheme,
|
defaultUriScheme: defaultUriScheme,
|
||||||
|
client: httpClient,
|
||||||
);
|
);
|
||||||
late final RequestModel newRequestModel;
|
late final RequestModel newRequestModel;
|
||||||
if (responseRec.$1 == null) {
|
if (responseRec.$1 == null) {
|
||||||
|
@ -1,14 +1,16 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
import 'package:http/http.dart' as http;
|
|
||||||
import 'package:apidash/utils/utils.dart';
|
|
||||||
import 'package:apidash/models/models.dart';
|
|
||||||
import 'package:apidash/consts.dart';
|
import 'package:apidash/consts.dart';
|
||||||
|
import 'package:apidash/models/models.dart';
|
||||||
|
import 'package:apidash/utils/utils.dart';
|
||||||
|
import 'package:http/http.dart' as http;
|
||||||
|
|
||||||
Future<(http.Response?, Duration?, String?)> request(
|
Future<(http.Response?, Duration?, String?)> request(
|
||||||
RequestModel requestModel, {
|
RequestModel requestModel, {
|
||||||
String defaultUriScheme = kDefaultUriScheme,
|
String defaultUriScheme = kDefaultUriScheme,
|
||||||
|
required http.Client client,
|
||||||
}) async {
|
}) async {
|
||||||
(Uri?, String?) uriRec = getValidRequestUri(
|
(Uri?, String?) uriRec = getValidRequestUri(
|
||||||
requestModel.url,
|
requestModel.url,
|
||||||
@ -66,23 +68,25 @@ Future<(http.Response?, Duration?, String?)> request(
|
|||||||
}
|
}
|
||||||
switch (requestModel.method) {
|
switch (requestModel.method) {
|
||||||
case HTTPVerb.get:
|
case HTTPVerb.get:
|
||||||
response = await http.get(requestUrl, headers: headers);
|
response = await client.get(requestUrl, headers: headers);
|
||||||
break;
|
break;
|
||||||
case HTTPVerb.head:
|
case HTTPVerb.head:
|
||||||
response = await http.head(requestUrl, headers: headers);
|
response = await client.head(requestUrl, headers: headers);
|
||||||
break;
|
break;
|
||||||
case HTTPVerb.post:
|
case HTTPVerb.post:
|
||||||
response = await http.post(requestUrl, headers: headers, body: body);
|
response =
|
||||||
|
await client.post(requestUrl, headers: headers, body: body);
|
||||||
break;
|
break;
|
||||||
case HTTPVerb.put:
|
case HTTPVerb.put:
|
||||||
response = await http.put(requestUrl, headers: headers, body: body);
|
response = await client.put(requestUrl, headers: headers, body: body);
|
||||||
break;
|
break;
|
||||||
case HTTPVerb.patch:
|
case HTTPVerb.patch:
|
||||||
response = await http.patch(requestUrl, headers: headers, body: body);
|
response =
|
||||||
|
await client.patch(requestUrl, headers: headers, body: body);
|
||||||
break;
|
break;
|
||||||
case HTTPVerb.delete:
|
case HTTPVerb.delete:
|
||||||
response =
|
response =
|
||||||
await http.delete(requestUrl, headers: headers, body: body);
|
await client.delete(requestUrl, headers: headers, body: body);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
stopwatch.stop();
|
stopwatch.stop();
|
||||||
|
Reference in New Issue
Block a user