mirror of
https://github.com/foss42/apidash.git
synced 2025-05-31 14:23:45 +08:00
Adding http services along with provider + model modifications
This commit is contained in:
@ -1,4 +1,8 @@
|
||||
import 'dart:io';
|
||||
import 'dart:convert';
|
||||
import 'package:collection/collection.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:http/http.dart';
|
||||
import 'kvrow_model.dart';
|
||||
import '../consts.dart';
|
||||
|
||||
@ -13,6 +17,9 @@ class RequestModel {
|
||||
this.requestParams,
|
||||
this.requestBodyContentType = DEFAULT_BODY_CONTENT_TYPE,
|
||||
this.requestBody,
|
||||
this.responseStatus,
|
||||
this.message,
|
||||
this.responseModel,
|
||||
});
|
||||
|
||||
final String id;
|
||||
@ -23,6 +30,9 @@ class RequestModel {
|
||||
final List<KVRow>? requestParams;
|
||||
final ContentType requestBodyContentType;
|
||||
final dynamic requestBody;
|
||||
final int? responseStatus;
|
||||
final String? message;
|
||||
final ResponseModel? responseModel;
|
||||
|
||||
RequestModel duplicate({
|
||||
required String id,
|
||||
@ -47,6 +57,9 @@ class RequestModel {
|
||||
List<KVRow>? requestParams,
|
||||
ContentType? requestBodyContentType,
|
||||
dynamic requestBody,
|
||||
int? responseStatus,
|
||||
String? message,
|
||||
ResponseModel? responseModel,
|
||||
}) {
|
||||
return RequestModel(
|
||||
id: id ?? this.id,
|
||||
@ -58,6 +71,9 @@ class RequestModel {
|
||||
requestBodyContentType:
|
||||
requestBodyContentType ?? this.requestBodyContentType,
|
||||
requestBody: requestBody ?? this.requestBody,
|
||||
responseStatus: responseStatus ?? this.responseStatus,
|
||||
message: message ?? this.message,
|
||||
responseModel: responseModel ?? this.responseModel,
|
||||
);
|
||||
}
|
||||
|
||||
@ -72,6 +88,59 @@ class RequestModel {
|
||||
"Request Params: ${requestParams.toString()}",
|
||||
"Request Body Content Type: ${requestBodyContentType.toString()}",
|
||||
"Request Body: ${requestBody.toString()}",
|
||||
"Response Status: $responseStatus",
|
||||
"Response Message: $message",
|
||||
"Response: ${responseModel.toString()}"
|
||||
].join("\n");
|
||||
}
|
||||
}
|
||||
|
||||
@immutable
|
||||
class ResponseModel {
|
||||
const ResponseModel({
|
||||
this.statusCode,
|
||||
this.headers,
|
||||
this.requestHeaders,
|
||||
this.contentType,
|
||||
this.body,
|
||||
this.time,
|
||||
});
|
||||
|
||||
final int? statusCode;
|
||||
final Map<String, String>? headers;
|
||||
final Map<String, String>? requestHeaders;
|
||||
final String? contentType;
|
||||
final String? body;
|
||||
final Duration? time;
|
||||
|
||||
ResponseModel fromResponse({
|
||||
required Response response,
|
||||
Duration? time,
|
||||
}) {
|
||||
var contentType = response.headers[HttpHeaders.contentTypeHeader];
|
||||
final responseHeaders = mergeMaps(
|
||||
{HttpHeaders.contentLengthHeader: response.contentLength.toString()},
|
||||
response.headers);
|
||||
return ResponseModel(
|
||||
statusCode: response.statusCode,
|
||||
headers: responseHeaders,
|
||||
requestHeaders: response.request?.headers,
|
||||
contentType: contentType,
|
||||
body: contentType == JSON_MIMETYPE
|
||||
? utf8.decode(response.bodyBytes)
|
||||
: response.body,
|
||||
time: time,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return [
|
||||
"Response Status: $statusCode",
|
||||
"Response Time: $time",
|
||||
"Response Headers: ${headers.toString()}",
|
||||
"Response Request Headers: ${requestHeaders.toString()}",
|
||||
"Response Body: $body",
|
||||
].join("\n");
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user