feat: ability to override content type

This commit is contained in:
APPALA REDDI
2023-12-30 12:35:10 +05:30
parent 3423eb7d8f
commit e0fe907d19
4 changed files with 36 additions and 1 deletions

View File

@ -305,6 +305,8 @@ const kTypeVideo = 'video';
const kSubTypeDefaultViewOptions = 'all'; const kSubTypeDefaultViewOptions = 'all';
const kContentType = 'Content-Type';
const kContentTypeMap = { const kContentTypeMap = {
ContentType.json: "$kTypeApplication/$kSubTypeJson", ContentType.json: "$kTypeApplication/$kSubTypeJson",
ContentType.text: "$kTypeText/$kSubTypePlain", ContentType.text: "$kTypeText/$kSubTypePlain",

View File

@ -1,4 +1,5 @@
import 'dart:math'; import 'dart:math';
import 'package:apidash/utils/header_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:davi/davi.dart'; import 'package:davi/davi.dart';
@ -78,6 +79,23 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
grow: 1, grow: 1,
cellBuilder: (_, row) { cellBuilder: (_, row) {
int idx = row.index; int idx = row.index;
if (row.data.name == kContentType) {
return HeaderField(
keyId: "$activeId-$idx-headers-v-$seed",
initialValue: rows[idx].value,
hintText: " Add Header Value",
onChanged: (value) {
rows[idx] = rows[idx].copyWith(value: value);
_onFieldChange(activeId!);
},
headerSuggestionsCallback: (pattern) {
return getHeaderValueSuggestions(pattern);
},
colorScheme: Theme.of(context).colorScheme,
);
}
return CellField( return CellField(
keyId: "$activeId-$idx-headers-v-$seed", keyId: "$activeId-$idx-headers-v-$seed",
initialValue: rows[idx].value, initialValue: rows[idx].value,

View File

@ -15,6 +15,7 @@ Map<String, String> headers = {
"Indicates the encoding transformations that have been applied to the entity body of the response.", "Indicates the encoding transformations that have been applied to the entity body of the response.",
"Content-Security-Policy": "Content-Security-Policy":
"Controls the sources from which content can be loaded on a web page to mitigate various types of attacks.", "Controls the sources from which content can be loaded on a web page to mitigate various types of attacks.",
"Content-Type": "Indicates the original media type of the resource (prior to any content encoding applied for sending)",
"Cookie": "Used to send previously stored cookies back to the server.", "Cookie": "Used to send previously stored cookies back to the server.",
"Cross-Origin-Embedder-Policy": "Cross-Origin-Embedder-Policy":
"Controls whether a document is allowed to be embedded in another document.", "Controls whether a document is allowed to be embedded in another document.",
@ -70,3 +71,13 @@ List<String> getHeaderSuggestions(String pattern) {
) )
.toList(); .toList();
} }
List<String> headerValues = ['application/json', 'text/plain'];
List<String> getHeaderValueSuggestions(String pattern) {
return headerValues
.where(
(element) => element.contains(pattern.toLowerCase()),
)
.toList();
}

View File

@ -1,3 +1,5 @@
import 'dart:async';
import 'package:apidash/utils/header_utils.dart'; import 'package:apidash/utils/header_utils.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:apidash/consts.dart'; import 'package:apidash/consts.dart';
@ -10,12 +12,14 @@ class HeaderField extends StatefulWidget {
this.hintText, this.hintText,
this.initialValue, this.initialValue,
this.onChanged, this.onChanged,
this.headerSuggestionsCallback,
this.colorScheme, this.colorScheme,
}); });
final String keyId; final String keyId;
final String? hintText; final String? hintText;
final String? initialValue; final String? initialValue;
final void Function(String)? onChanged; final void Function(String)? onChanged;
final FutureOr<Iterable<String>> Function(String)? headerSuggestionsCallback;
final ColorScheme? colorScheme; final ColorScheme? colorScheme;
@override @override
@ -67,7 +71,7 @@ class _HeaderFieldState extends State<HeaderField> {
title: Text(suggestion), title: Text(suggestion),
); );
}, },
suggestionsCallback: headerSuggestionCallback, suggestionsCallback: widget.headerSuggestionsCallback ?? headerSuggestionCallback,
suggestionsBoxDecoration: suggestionBoxDecorations(context), suggestionsBoxDecoration: suggestionBoxDecorations(context),
textFieldConfiguration: TextFieldConfiguration( textFieldConfiguration: TextFieldConfiguration(
onChanged: widget.onChanged, onChanged: widget.onChanged,