mirror of
https://github.com/foss42/apidash.git
synced 2025-05-28 12:18:06 +08:00
feat: ability to override content type
This commit is contained in:
@ -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",
|
||||||
|
@ -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,
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
@ -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,
|
||||||
|
Reference in New Issue
Block a user