mirror of
https://github.com/foss42/apidash.git
synced 2025-05-25 18:27:02 +08:00
feat: ability to override content type
This commit is contained in:
@ -305,6 +305,8 @@ const kTypeVideo = 'video';
|
||||
|
||||
const kSubTypeDefaultViewOptions = 'all';
|
||||
|
||||
const kContentType = 'Content-Type';
|
||||
|
||||
const kContentTypeMap = {
|
||||
ContentType.json: "$kTypeApplication/$kSubTypeJson",
|
||||
ContentType.text: "$kTypeText/$kSubTypePlain",
|
||||
|
@ -1,4 +1,5 @@
|
||||
import 'dart:math';
|
||||
import 'package:apidash/utils/header_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
||||
import 'package:davi/davi.dart';
|
||||
@ -78,6 +79,23 @@ class EditRequestHeadersState extends ConsumerState<EditRequestHeaders> {
|
||||
grow: 1,
|
||||
cellBuilder: (_, row) {
|
||||
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(
|
||||
keyId: "$activeId-$idx-headers-v-$seed",
|
||||
initialValue: rows[idx].value,
|
||||
|
@ -15,6 +15,7 @@ Map<String, String> headers = {
|
||||
"Indicates the encoding transformations that have been applied to the entity body of the response.",
|
||||
"Content-Security-Policy":
|
||||
"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.",
|
||||
"Cross-Origin-Embedder-Policy":
|
||||
"Controls whether a document is allowed to be embedded in another document.",
|
||||
@ -70,3 +71,13 @@ List<String> getHeaderSuggestions(String pattern) {
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
||||
List<String> headerValues = ['application/json', 'text/plain'];
|
||||
|
||||
List<String> getHeaderValueSuggestions(String pattern) {
|
||||
return headerValues
|
||||
.where(
|
||||
(element) => element.contains(pattern.toLowerCase()),
|
||||
)
|
||||
.toList();
|
||||
}
|
||||
|
@ -1,3 +1,5 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:apidash/utils/header_utils.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:apidash/consts.dart';
|
||||
@ -10,12 +12,14 @@ class HeaderField extends StatefulWidget {
|
||||
this.hintText,
|
||||
this.initialValue,
|
||||
this.onChanged,
|
||||
this.headerSuggestionsCallback,
|
||||
this.colorScheme,
|
||||
});
|
||||
final String keyId;
|
||||
final String? hintText;
|
||||
final String? initialValue;
|
||||
final void Function(String)? onChanged;
|
||||
final FutureOr<Iterable<String>> Function(String)? headerSuggestionsCallback;
|
||||
final ColorScheme? colorScheme;
|
||||
|
||||
@override
|
||||
@ -67,7 +71,7 @@ class _HeaderFieldState extends State<HeaderField> {
|
||||
title: Text(suggestion),
|
||||
);
|
||||
},
|
||||
suggestionsCallback: headerSuggestionCallback,
|
||||
suggestionsCallback: widget.headerSuggestionsCallback ?? headerSuggestionCallback,
|
||||
suggestionsBoxDecoration: suggestionBoxDecorations(context),
|
||||
textFieldConfiguration: TextFieldConfiguration(
|
||||
onChanged: widget.onChanged,
|
||||
|
Reference in New Issue
Block a user