mirror of
https://github.com/foss42/apidash.git
synced 2025-05-28 12:18:06 +08:00
JSON Serialization and Deserialization for models
This commit is contained in:
@ -1,5 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
import 'package:apidash/utils/utils.dart' show mapToRows, rowsToMap;
|
||||
import 'kvrow_model.dart';
|
||||
import 'response_model.dart';
|
||||
|
||||
@ -26,7 +27,7 @@ class RequestModel {
|
||||
final List<KVRow>? requestHeaders;
|
||||
final List<KVRow>? requestParams;
|
||||
final ContentType requestBodyContentType;
|
||||
final dynamic requestBody;
|
||||
final String? requestBody;
|
||||
final int? responseStatus;
|
||||
final String? message;
|
||||
final ResponseModel? responseModel;
|
||||
@ -53,7 +54,7 @@ class RequestModel {
|
||||
List<KVRow>? requestHeaders,
|
||||
List<KVRow>? requestParams,
|
||||
ContentType? requestBodyContentType,
|
||||
dynamic requestBody,
|
||||
String? requestBody,
|
||||
int? responseStatus,
|
||||
String? message,
|
||||
ResponseModel? responseModel,
|
||||
@ -74,12 +75,74 @@ class RequestModel {
|
||||
);
|
||||
}
|
||||
|
||||
factory RequestModel.fromJson(Map<String, dynamic> data) {
|
||||
HTTPVerb method;
|
||||
ContentType requestBodyContentType;
|
||||
ResponseModel? responseModel;
|
||||
|
||||
final id = data["id"] as String;
|
||||
try {
|
||||
method = HTTPVerb.values.byName(data["method"] as String);
|
||||
} catch (e) {
|
||||
method = kDefaultHttpMethod;
|
||||
}
|
||||
final url = data["url"] as String;
|
||||
final requestHeaders =
|
||||
mapToRows(data["requestHeaders"] as Map<String, String>?);
|
||||
final requestParams =
|
||||
mapToRows(data["requestParams"] as Map<String, String>?);
|
||||
try {
|
||||
requestBodyContentType =
|
||||
ContentType.values.byName(data["requestBodyContentType"] as String);
|
||||
} catch (e) {
|
||||
requestBodyContentType = kDefaultContentType;
|
||||
}
|
||||
final requestBody = data["requestBody"] as String?;
|
||||
final responseStatus = data["responseStatus"] as int?;
|
||||
final message = data["message"] as String?;
|
||||
final responseModelJson = data["responseModel"] as Map<String, dynamic>?;
|
||||
if (responseModelJson != null) {
|
||||
responseModel = ResponseModel.fromJson(responseModelJson);
|
||||
} else {
|
||||
responseModel = null;
|
||||
}
|
||||
|
||||
return RequestModel(
|
||||
id: id,
|
||||
method: method,
|
||||
url: url,
|
||||
requestTabIndex: 0,
|
||||
requestHeaders: requestHeaders,
|
||||
requestParams: requestParams,
|
||||
requestBodyContentType: requestBodyContentType,
|
||||
requestBody: requestBody,
|
||||
responseStatus: responseStatus,
|
||||
message: message,
|
||||
responseModel: responseModel,
|
||||
);
|
||||
}
|
||||
|
||||
Map<String, dynamic> toJson() {
|
||||
return {
|
||||
"id": id,
|
||||
"method": method.name,
|
||||
"url": url,
|
||||
"requestHeaders": rowsToMap(requestHeaders),
|
||||
"requestParams": rowsToMap(requestParams),
|
||||
"requestBodyContentType": requestBodyContentType.name,
|
||||
"requestBody": requestBody,
|
||||
"responseStatus": responseStatus,
|
||||
"message": message,
|
||||
"responseModel": responseModel?.toJson(),
|
||||
};
|
||||
}
|
||||
|
||||
@override
|
||||
String toString() {
|
||||
return [
|
||||
id,
|
||||
method.name,
|
||||
"URL: $url",
|
||||
"Request Id: $id",
|
||||
"Request Method: ${method.name}",
|
||||
"Request URL: $url",
|
||||
"Request Tab Index: ${requestTabIndex.toString()}",
|
||||
"Request Headers: ${requestHeaders.toString()}",
|
||||
"Request Params: ${requestParams.toString()}",
|
||||
|
Reference in New Issue
Block a user