Merge branch 'main' of https://github.com/foss42/apidash into add-go-http-codegen

This commit is contained in:
Apoorv Dwivedi
2024-03-10 00:44:47 +05:30
46 changed files with 690 additions and 334 deletions

View File

@ -53,7 +53,9 @@ class DartHttpCodeGen {
declareVar('uri').assign(refer('Uri.parse').call([literalString(url)])); declareVar('uri').assign(refer('Uri.parse').call([literalString(url)]));
Expression? dataExp; Expression? dataExp;
if (kMethodsWithBody.contains(method) && (body?.isNotEmpty ?? false)) { if (kMethodsWithBody.contains(method) &&
(body?.isNotEmpty ?? false) &&
contentType != ContentType.formdata) {
final strContent = CodeExpression(Code('r\'\'\'$body\'\'\'')); final strContent = CodeExpression(Code('r\'\'\'$body\'\'\''));
dataExp = declareVar('body', type: refer('String')).assign(strContent); dataExp = declareVar('body', type: refer('String')).assign(strContent);
if (!hasContentTypeHeader) { if (!hasContentTypeHeader) {

View File

@ -7,7 +7,7 @@ import 'package:apidash/consts.dart';
class KotlinOkHttpCodeGen { class KotlinOkHttpCodeGen {
final String kTemplateStart = """import okhttp3.OkHttpClient final String kTemplateStart = """import okhttp3.OkHttpClient
import okhttp3.Request{{importForQuery}}{{importForBody}} import okhttp3.Request{{importForQuery}}{{importForBody}}{{importForFormData}}
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
@ -23,6 +23,10 @@ import okhttp3.HttpUrl.Companion.toHttpUrl""";
import okhttp3.RequestBody.Companion.toRequestBody import okhttp3.RequestBody.Companion.toRequestBody
import okhttp3.MediaType.Companion.toMediaType"""; import okhttp3.MediaType.Companion.toMediaType""";
final String kStringImportForFormData = """
import okhttp3.MultipartBody""";
final String kTemplateUrl = ''' final String kTemplateUrl = '''
val url = "{{url}}" val url = "{{url}}"
@ -77,6 +81,7 @@ import okhttp3.MediaType.Companion.toMediaType""";
String result = ""; String result = "";
bool hasQuery = false; bool hasQuery = false;
bool hasBody = false; bool hasBody = false;
bool hasFormData = false;
String url = requestModel.url; String url = requestModel.url;
if (!url.contains("://") && url.isNotEmpty) { if (!url.contains("://") && url.isNotEmpty) {
@ -109,6 +114,7 @@ import okhttp3.MediaType.Companion.toMediaType""";
var method = requestModel.method; var method = requestModel.method;
var requestBody = requestModel.requestBody; var requestBody = requestModel.requestBody;
if (requestModel.isFormDataRequest) { if (requestModel.isFormDataRequest) {
hasFormData = true;
var formDataTemplate = jj.Template(kFormDataBody); var formDataTemplate = jj.Template(kFormDataBody);
result += formDataTemplate.render({ result += formDataTemplate.render({
@ -128,7 +134,8 @@ import okhttp3.MediaType.Companion.toMediaType""";
var templateStart = jj.Template(kTemplateStart); var templateStart = jj.Template(kTemplateStart);
var stringStart = templateStart.render({ var stringStart = templateStart.render({
"importForQuery": hasQuery ? kStringImportForQuery : "", "importForQuery": hasQuery ? kStringImportForQuery : "",
"importForBody": hasBody ? kStringImportForBody : "" "importForBody": hasBody ? kStringImportForBody : "",
"importForFormData": hasFormData ? kStringImportForFormData : ""
}); });
result = stringStart + result; result = stringStart + result;

View File

@ -130,7 +130,9 @@ body = b'\r\n'.join(dataList)
var method = requestModel.method; var method = requestModel.method;
var requestBody = requestModel.requestBody; var requestBody = requestModel.requestBody;
if (kMethodsWithBody.contains(method) && requestBody != null) { if (kMethodsWithBody.contains(method) &&
requestBody != null &&
!requestModel.isFormDataRequest) {
var contentLength = utf8.encode(requestBody).length; var contentLength = utf8.encode(requestBody).length;
if (contentLength > 0) { if (contentLength > 0) {
hasBody = true; hasBody = true;

View File

@ -140,7 +140,7 @@ print('Response Body:', response.text)
hasJsonBody = true; hasJsonBody = true;
var templateBody = jj.Template(kTemplateJson); var templateBody = jj.Template(kTemplateJson);
result += templateBody.render({"body": requestBody}); result += templateBody.render({"body": requestBody});
} else { } else if (!requestModel.isFormDataRequest) {
hasBody = true; hasBody = true;
var templateBody = jj.Template(kTemplateBody); var templateBody = jj.Template(kTemplateBody);
result += templateBody.render({"body": requestBody}); result += templateBody.render({"body": requestBody});

View File

@ -500,7 +500,8 @@ const kRaiseIssue =
const kCsvError = const kCsvError =
"There seems to be an issue rendering this CSV. Please raise an issue in API Dash GitHub repo so that we can resolve it."; "There seems to be an issue rendering this CSV. Please raise an issue in API Dash GitHub repo so that we can resolve it.";
const kHintTextUrlCard = "Enter API endpoint like api.foss42.com/country/codes"; const kHintTextUrlCard =
"Enter API endpoint like api.apidash.dev/country/codes";
const kLabelPlusNew = "+ New"; const kLabelPlusNew = "+ New";
const kLabelSend = "Send"; const kLabelSend = "Send";
const kLabelSending = "Sending.."; const kLabelSending = "Sending..";

View File

@ -29,6 +29,7 @@ class RequestModel {
this.responseStatus, this.responseStatus,
this.message, this.message,
this.responseModel, this.responseModel,
this.isWorking = false,
}); });
final String id; final String id;
@ -47,6 +48,7 @@ class RequestModel {
final int? responseStatus; final int? responseStatus;
final String? message; final String? message;
final ResponseModel? responseModel; final ResponseModel? responseModel;
final bool isWorking;
List<NameValueModel>? get enabledRequestHeaders => List<NameValueModel>? get enabledRequestHeaders =>
getEnabledRows(requestHeaders, isHeaderEnabledList); getEnabledRows(requestHeaders, isHeaderEnabledList);
@ -106,6 +108,7 @@ class RequestModel {
int? responseStatus, int? responseStatus,
String? message, String? message,
ResponseModel? responseModel, ResponseModel? responseModel,
bool? isWorking,
}) { }) {
var headers = requestHeaders ?? this.requestHeaders; var headers = requestHeaders ?? this.requestHeaders;
var params = requestParams ?? this.requestParams; var params = requestParams ?? this.requestParams;
@ -129,6 +132,7 @@ class RequestModel {
responseStatus: responseStatus ?? this.responseStatus, responseStatus: responseStatus ?? this.responseStatus,
message: message ?? this.message, message: message ?? this.message,
responseModel: responseModel ?? this.responseModel, responseModel: responseModel ?? this.responseModel,
isWorking: isWorking ?? this.isWorking,
); );
} }

View File

@ -156,11 +156,20 @@ class CollectionStateNotifier
} }
Future<void> sendRequest(String id) async { Future<void> sendRequest(String id) async {
ref.read(sentRequestIdStateProvider.notifier).state = id;
ref.read(codePaneVisibleStateProvider.notifier).state = false; ref.read(codePaneVisibleStateProvider.notifier).state = false;
final defaultUriScheme = final defaultUriScheme = ref.read(
ref.read(settingsProvider.select((value) => value.defaultUriScheme)); settingsProvider.select(
(value) => value.defaultUriScheme,
),
);
RequestModel requestModel = state![id]!; RequestModel requestModel = state![id]!;
// set current model's isWorking to true and update state
var map = {...state!};
map[id] = requestModel.copyWith(isWorking: true);
state = map;
(http.Response?, Duration?, String?)? responseRec = await request( (http.Response?, Duration?, String?)? responseRec = await request(
requestModel, requestModel,
defaultUriScheme: defaultUriScheme, defaultUriScheme: defaultUriScheme,
@ -172,6 +181,7 @@ class CollectionStateNotifier
newRequestModel = requestModel.copyWith( newRequestModel = requestModel.copyWith(
responseStatus: -1, responseStatus: -1,
message: responseRec.$3, message: responseRec.$3,
isWorking: false,
); );
} else { } else {
final responseModel = baseResponseModel.fromResponse( final responseModel = baseResponseModel.fromResponse(
@ -183,10 +193,12 @@ class CollectionStateNotifier
responseStatus: statusCode, responseStatus: statusCode,
message: kResponseCodeReasons[statusCode], message: kResponseCodeReasons[statusCode],
responseModel: responseModel, responseModel: responseModel,
isWorking: false,
); );
} }
ref.read(sentRequestIdStateProvider.notifier).state = null;
var map = {...state!}; // update state with response data
map = {...state!};
map[id] = newRequestModel; map[id] = newRequestModel;
state = map; state = map;
} }

View File

@ -3,7 +3,6 @@ import 'package:flutter_riverpod/flutter_riverpod.dart';
final navRailIndexStateProvider = StateProvider<int>((ref) => 0); final navRailIndexStateProvider = StateProvider<int>((ref) => 0);
final selectedIdEditStateProvider = StateProvider<String?>((ref) => null); final selectedIdEditStateProvider = StateProvider<String?>((ref) => null);
final sentRequestIdStateProvider = StateProvider<String?>((ref) => null);
final codePaneVisibleStateProvider = StateProvider<bool>((ref) => false); final codePaneVisibleStateProvider = StateProvider<bool>((ref) => false);
final saveDataStateProvider = StateProvider<bool>((ref) => false); final saveDataStateProvider = StateProvider<bool>((ref) => false);
final clearDataStateProvider = StateProvider<bool>((ref) => false); final clearDataStateProvider = StateProvider<bool>((ref) => false);

View File

@ -9,13 +9,14 @@ class ResponsePane extends ConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final selectedId = ref.watch(selectedIdStateProvider); final isWorking = ref.watch(
final sentRequestId = ref.watch(sentRequestIdStateProvider); selectedRequestModelProvider.select((value) => value?.isWorking)) ??
false;
final responseStatus = ref.watch( final responseStatus = ref.watch(
selectedRequestModelProvider.select((value) => value?.responseStatus)); selectedRequestModelProvider.select((value) => value?.responseStatus));
final message = ref final message = ref
.watch(selectedRequestModelProvider.select((value) => value?.message)); .watch(selectedRequestModelProvider.select((value) => value?.message));
if (sentRequestId != null && sentRequestId == selectedId) { if (isWorking) {
return const SendingWidget(); return const SendingWidget();
} }
if (responseStatus == null) { if (responseStatus == null) {

View File

@ -1,4 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:apidash/providers/collection_providers.dart';
import 'package:apidash/consts.dart'; import 'package:apidash/consts.dart';
import 'details_card/details_card.dart'; import 'details_card/details_card.dart';
import 'url_card.dart'; import 'url_card.dart';
@ -10,6 +12,7 @@ class RequestEditor extends StatelessWidget {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return const Column( return const Column(
children: [ children: [
RequestEditorTopBar(),
EditorPaneRequestURLCard(), EditorPaneRequestURLCard(),
kVSpacer10, kVSpacer10,
Expanded( Expanded(
@ -19,3 +22,91 @@ class RequestEditor extends StatelessWidget {
); );
} }
} }
class RequestEditorTopBar extends ConsumerWidget {
const RequestEditorTopBar({super.key});
@override
Widget build(BuildContext context, WidgetRef ref) {
final id = ref.watch(selectedIdStateProvider);
final name =
ref.watch(selectedRequestModelProvider.select((value) => value?.name));
return Padding(
padding: const EdgeInsets.only(
left: 12.0,
top: 4.0,
right: 8.0,
bottom: 4.0,
),
child: Row(
children: [
Expanded(
child: Text(
name ?? "",
style: Theme.of(context).textTheme.bodyMedium,
overflow: TextOverflow.ellipsis,
maxLines: 1,
),
),
const SizedBox(
width: 6,
),
SizedBox(
width: 90,
height: 24,
child: FilledButton.tonalIcon(
style: const ButtonStyle(
padding: MaterialStatePropertyAll(EdgeInsets.zero),
),
onPressed: () {
showDialog(
context: context,
builder: (context) {
final controller =
TextEditingController(text: name ?? "");
controller.selection = TextSelection(
baseOffset: 0, extentOffset: controller.text.length);
return AlertDialog(
title: const Text('Rename Request'),
content: TextField(
autofocus: true,
controller: controller,
decoration:
const InputDecoration(hintText: "Enter new name"),
),
actions: <Widget>[
OutlinedButton(
onPressed: () {
Navigator.pop(context);
},
child: const Text('CANCEL')),
FilledButton(
onPressed: () {
final val = controller.text.trim();
ref
.read(collectionStateNotifierProvider
.notifier)
.update(id!, name: val);
Navigator.pop(context);
controller.dispose();
},
child: const Text('OK')),
],
);
});
},
icon: const Icon(
Icons.edit,
size: 12,
),
label: Text(
"Rename",
style: Theme.of(context).textTheme.bodySmall,
),
),
)
],
),
);
}
}

View File

@ -81,6 +81,11 @@ class URLTextField extends ConsumerWidget {
.read(collectionStateNotifierProvider.notifier) .read(collectionStateNotifierProvider.notifier)
.update(selectedId, url: value); .update(selectedId, url: value);
}, },
onFieldSubmitted: (value) {
ref
.read(collectionStateNotifierProvider.notifier)
.sendRequest(selectedId);
},
); );
} }
} }
@ -93,10 +98,11 @@ class SendButton extends ConsumerWidget {
@override @override
Widget build(BuildContext context, WidgetRef ref) { Widget build(BuildContext context, WidgetRef ref) {
final selectedId = ref.watch(selectedIdStateProvider); final selectedId = ref.watch(selectedIdStateProvider);
final sentRequestId = ref.watch(sentRequestIdStateProvider); final isWorking = ref.watch(
selectedRequestModelProvider.select((value) => value?.isWorking));
return SendRequestButton( return SendRequestButton(
selectedId: selectedId, isWorking: isWorking ?? false,
sentRequestId: sentRequestId,
onTap: () { onTap: () {
ref ref
.read(collectionStateNotifierProvider.notifier) .read(collectionStateNotifierProvider.notifier)

View File

@ -65,7 +65,7 @@ class SettingsPage extends ConsumerWidget {
hoverColor: kColorTransparent, hoverColor: kColorTransparent,
title: const Text('Default URI Scheme'), title: const Text('Default URI Scheme'),
subtitle: Text( subtitle: Text(
'api.foss42.com${settings.defaultUriScheme}://api.foss42.com'), 'api.apidash.dev${settings.defaultUriScheme}://api.apidash.dev'),
trailing: DropdownMenu( trailing: DropdownMenu(
onSelected: (value) { onSelected: (value) {
ref ref

View File

@ -43,7 +43,7 @@ String getShortPath(String path) {
var f = p.split(path); var f = p.split(path);
if (f.length > 2) { if (f.length > 2) {
f = f.sublist(f.length - 2); f = f.sublist(f.length - 2);
return ".../${p.joinAll(f)}"; return p.join("...", p.joinAll(f));
} }
return path; return path;
} }

View File

@ -112,7 +112,9 @@ Map<String, dynamic> requestModelToHARJsonRequest(
var method = requestModel.method; var method = requestModel.method;
var requestBody = requestModel.requestBody; var requestBody = requestModel.requestBody;
if (kMethodsWithBody.contains(method) && requestBody != null) { if (kMethodsWithBody.contains(method) &&
requestBody != null &&
!requestModel.isFormDataRequest) {
var contentLength = utf8.encode(requestBody).length; var contentLength = utf8.encode(requestBody).length;
if (contentLength > 0) { if (contentLength > 0) {
hasBody = true; hasBody = true;

View File

@ -47,36 +47,37 @@ class CopyButton extends StatelessWidget {
class SendRequestButton extends StatelessWidget { class SendRequestButton extends StatelessWidget {
const SendRequestButton({ const SendRequestButton({
super.key, super.key,
required this.selectedId, required this.isWorking,
required this.sentRequestId,
required this.onTap, required this.onTap,
}); });
final String? selectedId; final bool isWorking;
final String? sentRequestId;
final void Function() onTap; final void Function() onTap;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
bool disable = sentRequestId != null;
return FilledButton( return FilledButton(
onPressed: disable ? null : onTap, onPressed: isWorking ? null : onTap,
child: Row( child: Row(
mainAxisSize: MainAxisSize.min, mainAxisSize: MainAxisSize.min,
children: [ children: isWorking
Text( ? const [
disable Text(
? (selectedId == sentRequestId ? kLabelSending : kLabelBusy) kLabelSending,
: kLabelSend, style: kTextStyleButton,
style: kTextStyleButton, ),
), ]
if (!disable) kHSpacer10, : const [
if (!disable) Text(
const Icon( kLabelSend,
size: 16, style: kTextStyleButton,
Icons.send, ),
), kHSpacer10,
], Icon(
size: 16,
Icons.send,
),
],
), ),
); );
} }

View File

@ -97,6 +97,9 @@ class SidebarRequestCard extends StatelessWidget {
onTapOutsideNameEditor?.call(); onTapOutsideNameEditor?.call();
//FocusScope.of(context).unfocus(); //FocusScope.of(context).unfocus();
}, },
onFieldSubmitted: (value) {
onTapOutsideNameEditor?.call();
},
onChanged: onChangedNameEditor, onChanged: onChangedNameEditor,
decoration: const InputDecoration( decoration: const InputDecoration(
isCollapsed: true, isCollapsed: true,

View File

@ -46,32 +46,34 @@ class _FormDataFieldState extends State<FormDataField> {
color: colorScheme.onSurface, color: colorScheme.onSurface,
), ),
decoration: InputDecoration( decoration: InputDecoration(
hintStyle: kCodeStyle.copyWith( hintStyle: kCodeStyle.copyWith(
color: colorScheme.outline.withOpacity( color: colorScheme.outline.withOpacity(
kHintOpacity,
),
),
hintText: widget.hintText,
contentPadding: const EdgeInsets.only(bottom: 16),
focusedBorder: UnderlineInputBorder(
borderSide: BorderSide(
color: colorScheme.primary.withOpacity(
kHintOpacity, kHintOpacity,
), ),
), ),
hintText: widget.hintText, ),
focusedBorder: UnderlineInputBorder( enabledBorder: UnderlineInputBorder(
borderSide: BorderSide( borderSide: BorderSide(
color: colorScheme.primary.withOpacity( color: colorScheme.surfaceVariant,
kHintOpacity,
),
),
), ),
enabledBorder: UnderlineInputBorder( ),
borderSide: BorderSide( suffixIcon: DropdownButtonFormData(
color: colorScheme.surfaceVariant, formDataType: widget.formDataType,
), onChanged: (p0) {
), if (widget.onFormDataTypeChanged != null) {
suffixIcon: DropdownButtonFormData( widget.onFormDataTypeChanged!(p0);
formDataType: widget.formDataType, }
onChanged: (p0) { },
if (widget.onFormDataTypeChanged != null) { ),
widget.onFormDataTypeChanged!(p0); ),
}
},
)),
onChanged: widget.onChanged, onChanged: widget.onChanged,
), ),
), ),

View File

@ -9,9 +9,12 @@ class CustomMarkdown extends StatelessWidget {
super.key, super.key,
required this.data, required this.data,
this.padding = const EdgeInsets.all(16.0), this.padding = const EdgeInsets.all(16.0),
this.onTapLink,
}); });
final String data; final String data;
final EdgeInsets padding; final EdgeInsets padding;
final void Function(String text, String? href, String title)? onTapLink;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -25,9 +28,10 @@ class CustomMarkdown extends StatelessWidget {
data: data, data: data,
selectable: true, selectable: true,
extensionSet: md.ExtensionSet.gitHubFlavored, extensionSet: md.ExtensionSet.gitHubFlavored,
onTapLink: (text, href, title) { onTapLink: onTapLink ??
launchUrl(Uri.parse(href ?? "")); (text, href, title) {
}, launchUrl(Uri.parse(href ?? ""));
},
builders: { builders: {
"inlineButton": InlineButton(), "inlineButton": InlineButton(),
}, },

View File

@ -7,11 +7,13 @@ class URLField extends StatelessWidget {
required this.selectedId, required this.selectedId,
this.initialValue, this.initialValue,
this.onChanged, this.onChanged,
this.onFieldSubmitted,
}); });
final String selectedId; final String selectedId;
final String? initialValue; final String? initialValue;
final void Function(String)? onChanged; final void Function(String)? onChanged;
final void Function(String)? onFieldSubmitted;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -29,6 +31,7 @@ class URLField extends StatelessWidget {
border: InputBorder.none, border: InputBorder.none,
), ),
onChanged: onChanged, onChanged: onChanged,
onFieldSubmitted: onFieldSubmitted,
); );
} }
} }
@ -95,7 +98,6 @@ class JsonSearchField extends StatelessWidget {
controller: controller, controller: controller,
onChanged: onChanged, onChanged: onChanged,
style: kCodeStyle, style: kCodeStyle,
cursorHeight: 18,
decoration: const InputDecoration( decoration: const InputDecoration(
isDense: true, isDense: true,
border: InputBorder.none, border: InputBorder.none,

View File

@ -508,10 +508,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: http name: http
sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 sha256: "761a297c042deedc1ffbb156d6e2af13886bb305c2a343a4d972504cd67dd938"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" version: "1.2.1"
http_multi_server: http_multi_server:
dependency: transitive dependency: transitive
description: description:
@ -909,10 +909,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: pointer_interceptor_web name: pointer_interceptor_web
sha256: "9386e064097fd16419e935c23f08f35b58e6aaec155dd39bd6a003b88f9c14b4" sha256: a6237528b46c411d8d55cdfad8fcb3269fc4cbb26060b14bff94879165887d1e
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.10.1+2" version: "0.10.2"
pointycastle: pointycastle:
dependency: transitive dependency: transitive
description: description:
@ -1234,10 +1234,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
sha256: "7286aec002c8feecc338cc33269e96b73955ab227456e9fb2a91f7fab8a358e9" sha256: "3692a459204a33e04bc94f5fb91158faf4f2c8903281ddd82915adecdb1a901d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.2" version: "2.3.0"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
@ -1303,13 +1303,13 @@ packages:
source: hosted source: hosted
version: "1.1.0" version: "1.1.0"
web: web:
dependency: transitive dependency: "direct main"
description: description:
name: web name: web
sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 sha256: "97da13628db363c635202ad97068d47c5b8aa555808e7a9411963c533b449b27"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.0" version: "0.5.1"
web_socket_channel: web_socket_channel:
dependency: transitive dependency: transitive
description: description:
@ -1376,5 +1376,5 @@ packages:
source: hosted source: hosted
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.2.3 <4.0.0" dart: ">=3.3.0 <4.0.0"
flutter: ">=3.16.0" flutter: ">=3.19.0"

View File

@ -5,11 +5,12 @@ version: 0.3.0+3
environment: environment:
sdk: ">=3.0.0 <4.0.0" sdk: ">=3.0.0 <4.0.0"
flutter: ">=3.7.2" flutter: ">=3.16.0"
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
web: ^0.5.0
multi_split_view: ^2.4.0 multi_split_view: ^2.4.0
url_launcher: ^6.1.12 url_launcher: ^6.1.12
flutter_riverpod: ^2.3.7 flutter_riverpod: ^2.3.7

View File

@ -8,7 +8,7 @@ void main() {
group('Test various Code generators', () { group('Test various Code generators', () {
test('cURL', () { test('cURL', () {
const expectedCode = r"""curl --url 'https://api.foss42.com'"""; const expectedCode = r"""curl --url 'https://api.apidash.dev'""";
expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet1, "https"), expect(codeGen.getCode(CodegenLanguage.curl, requestModelGet1, "https"),
expectedCode); expectedCode);
}); });
@ -18,7 +18,7 @@ void main() {
void main() async { void main() async {
try { try {
final response = await dio.Dio.get('https://api.foss42.com'); final response = await dio.Dio.get('https://api.apidash.dev');
print(response.statusCode); print(response.statusCode);
print(response.data); print(response.data);
} on DioException catch (e, s) { } on DioException catch (e, s) {
@ -40,7 +40,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com'); var uri = Uri.parse('https://api.apidash.dev');
final response = await http.get(uri); final response = await http.get(uri);
@ -62,7 +62,7 @@ void main() async {
test('HAR', () { test('HAR', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com", "url": "https://api.apidash.dev",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [] "headers": []
@ -73,7 +73,7 @@ void main() async {
test('JS Axios', () { test('JS Axios', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'get' method: 'get'
}; };
@ -95,7 +95,7 @@ axios(config)
}); });
test('JS Fetch', () { test('JS Fetch', () {
const expectedCode = r"""let url = 'https://api.foss42.com'; const expectedCode = r"""let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'GET' method: 'GET'
@ -128,7 +128,7 @@ import okhttp3.Request
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com" val url = "https://api.apidash.dev"
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
@ -151,7 +151,7 @@ fun main() {
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'get' method: 'get'
}; };
@ -176,7 +176,7 @@ axios(config)
test('Nodejs Fetch', () { test('Nodejs Fetch', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com'; let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'GET' method: 'GET'
@ -206,7 +206,7 @@ fetch(url, options)
test('Python http.client', () { test('Python http.client', () {
const expectedCode = r"""import http.client const expectedCode = r"""import http.client
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "") conn.request("GET", "")
res = conn.getresponse() res = conn.getresponse()
@ -223,7 +223,7 @@ print(data.decode("utf-8"))
test('Python requests', () { test('Python requests', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com' url = 'https://api.apidash.dev'
response = requests.get(url) response = requests.get(url)

View File

@ -7,25 +7,25 @@ void main() {
group('GET Request', () { group('GET Request', () {
test('GET 1', () { test('GET 1', () {
const expectedCode = r"""curl --url 'https://api.foss42.com'"""; const expectedCode = r"""curl --url 'https://api.apidash.dev'""";
expect(curlCodeGen.getCode(requestModelGet1, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet1, "https"), expectedCode);
}); });
test('GET 2', () { test('GET 2', () {
const expectedCode = const expectedCode =
r"""curl --url 'https://api.foss42.com/country/data?code=US'"""; r"""curl --url 'https://api.apidash.dev/country/data?code=US'""";
expect(curlCodeGen.getCode(requestModelGet2, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet2, "https"), expectedCode);
}); });
test('GET 3', () { test('GET 3', () {
const expectedCode = const expectedCode =
r"""curl --url 'https://api.foss42.com/country/data?code=IND'"""; r"""curl --url 'https://api.apidash.dev/country/data?code=IND'""";
expect(curlCodeGen.getCode(requestModelGet3, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet3, "https"), expectedCode);
}); });
test('GET 4', () { test('GET 4', () {
const expectedCode = const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true'"""; r"""curl --url 'https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true'""";
expect(curlCodeGen.getCode(requestModelGet4, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet4, "https"), expectedCode);
}); });
@ -44,7 +44,7 @@ void main() {
}); });
test('GET 7', () { test('GET 7', () {
const expectedCode = r"""curl --url 'https://api.foss42.com'"""; const expectedCode = r"""curl --url 'https://api.apidash.dev'""";
expect(curlCodeGen.getCode(requestModelGet7, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet7, "https"), expectedCode);
}); });
@ -57,13 +57,13 @@ void main() {
test('GET 9', () { test('GET 9', () {
const expectedCode = const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social?num=8700000&add_space=true'"""; r"""curl --url 'https://api.apidash.dev/humanize/social?num=8700000&add_space=true'""";
expect(curlCodeGen.getCode(requestModelGet9, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet9, "https"), expectedCode);
}); });
test('GET 10', () { test('GET 10', () {
const expectedCode = const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social' \ r"""curl --url 'https://api.apidash.dev/humanize/social' \
--header 'User-Agent: Test Agent'"""; --header 'User-Agent: Test Agent'""";
expect( expect(
curlCodeGen.getCode( curlCodeGen.getCode(
@ -75,26 +75,26 @@ void main() {
test('GET 11', () { test('GET 11', () {
const expectedCode = const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social?num=8700000&digits=3' \ r"""curl --url 'https://api.apidash.dev/humanize/social?num=8700000&digits=3' \
--header 'User-Agent: Test Agent'"""; --header 'User-Agent: Test Agent'""";
expect(curlCodeGen.getCode(requestModelGet11, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet11, "https"), expectedCode);
}); });
test('GET 12', () { test('GET 12', () {
const expectedCode = const expectedCode =
r"""curl --url 'https://api.foss42.com/humanize/social'"""; r"""curl --url 'https://api.apidash.dev/humanize/social'""";
expect(curlCodeGen.getCode(requestModelGet12, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelGet12, "https"), expectedCode);
}); });
}); });
group('HEAD Request', () { group('HEAD Request', () {
test('HEAD 1', () { test('HEAD 1', () {
const expectedCode = r"""curl --head --url 'https://api.foss42.com'"""; const expectedCode = r"""curl --head --url 'https://api.apidash.dev'""";
expect(curlCodeGen.getCode(requestModelHead1, "https"), expectedCode); expect(curlCodeGen.getCode(requestModelHead1, "https"), expectedCode);
}); });
test('HEAD 2', () { test('HEAD 2', () {
const expectedCode = r"""curl --head --url 'http://api.foss42.com'"""; const expectedCode = r"""curl --head --url 'http://api.apidash.dev'""";
expect(curlCodeGen.getCode(requestModelHead2, "http"), expectedCode); expect(curlCodeGen.getCode(requestModelHead2, "http"), expectedCode);
}); });
}); });
@ -102,7 +102,7 @@ void main() {
group('POST Request', () { group('POST Request', () {
test('POST 1', () { test('POST 1', () {
const expectedCode = r"""curl --request POST \ const expectedCode = r"""curl --request POST \
--url 'https://api.foss42.com/case/lower' \ --url 'https://api.apidash.dev/case/lower' \
--header 'Content-Type: text/plain' \ --header 'Content-Type: text/plain' \
--data '{ --data '{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -112,7 +112,7 @@ void main() {
test('POST 2', () { test('POST 2', () {
const expectedCode = r"""curl --request POST \ const expectedCode = r"""curl --request POST \
--url 'https://api.foss42.com/case/lower' \ --url 'https://api.apidash.dev/case/lower' \
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--data '{ --data '{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -122,7 +122,7 @@ void main() {
test('POST 3', () { test('POST 3', () {
const expectedCode = r"""curl --request POST \ const expectedCode = r"""curl --request POST \
--url 'https://api.foss42.com/case/lower' \ --url 'https://api.apidash.dev/case/lower' \
--header 'Content-Type: application/json' \ --header 'Content-Type: application/json' \
--header 'User-Agent: Test Agent' \ --header 'User-Agent: Test Agent' \
--data '{ --data '{

View File

@ -12,7 +12,7 @@ void main() {
void main() async { void main() async {
try { try {
final response = await dio.Dio.get('https://api.foss42.com'); final response = await dio.Dio.get('https://api.apidash.dev');
print(response.statusCode); print(response.statusCode);
print(response.data); print(response.data);
} on DioException catch (e, s) { } on DioException catch (e, s) {
@ -35,7 +35,7 @@ void main() async {
try { try {
final queryParams = {'code': 'US'}; final queryParams = {'code': 'US'};
final response = await dio.Dio.get( final response = await dio.Dio.get(
'https://api.foss42.com/country/data', 'https://api.apidash.dev/country/data',
queryParameters: queryParams, queryParameters: queryParams,
); );
print(response.statusCode); print(response.statusCode);
@ -60,7 +60,7 @@ void main() async {
try { try {
final queryParams = {'code': 'IND'}; final queryParams = {'code': 'IND'};
final response = await dio.Dio.get( final response = await dio.Dio.get(
'https://api.foss42.com/country/data?code=US', 'https://api.apidash.dev/country/data?code=US',
queryParameters: queryParams, queryParameters: queryParams,
); );
print(response.statusCode); print(response.statusCode);
@ -91,7 +91,7 @@ void main() async {
'trailing_zeros': 'true', 'trailing_zeros': 'true',
}; };
final response = await dio.Dio.get( final response = await dio.Dio.get(
'https://api.foss42.com/humanize/social', 'https://api.apidash.dev/humanize/social',
queryParameters: queryParams, queryParameters: queryParams,
); );
print(response.statusCode); print(response.statusCode);
@ -166,7 +166,7 @@ void main() async {
void main() async { void main() async {
try { try {
final response = await dio.Dio.get('https://api.foss42.com'); final response = await dio.Dio.get('https://api.apidash.dev');
print(response.statusCode); print(response.statusCode);
print(response.data); print(response.data);
} on DioException catch (e, s) { } on DioException catch (e, s) {
@ -219,7 +219,7 @@ void main() async {
'add_space': 'true', 'add_space': 'true',
}; };
final response = await dio.Dio.get( final response = await dio.Dio.get(
'https://api.foss42.com/humanize/social', 'https://api.apidash.dev/humanize/social',
queryParameters: queryParams, queryParameters: queryParams,
); );
print(response.statusCode); print(response.statusCode);
@ -244,7 +244,7 @@ void main() async {
try { try {
final headers = {'User-Agent': 'Test Agent'}; final headers = {'User-Agent': 'Test Agent'};
final response = await dio.Dio.get( final response = await dio.Dio.get(
'https://api.foss42.com/humanize/social', 'https://api.apidash.dev/humanize/social',
options: Options(headers: headers), options: Options(headers: headers),
); );
print(response.statusCode); print(response.statusCode);
@ -278,7 +278,7 @@ void main() async {
}; };
final headers = {'User-Agent': 'Test Agent'}; final headers = {'User-Agent': 'Test Agent'};
final response = await dio.Dio.get( final response = await dio.Dio.get(
'https://api.foss42.com/humanize/social', 'https://api.apidash.dev/humanize/social',
queryParameters: queryParams, queryParameters: queryParams,
options: Options(headers: headers), options: Options(headers: headers),
); );
@ -302,7 +302,7 @@ void main() async {
void main() async { void main() async {
try { try {
final response = await dio.Dio.get('https://api.foss42.com/humanize/social'); final response = await dio.Dio.get('https://api.apidash.dev/humanize/social');
print(response.statusCode); print(response.statusCode);
print(response.data); print(response.data);
} on DioException catch (e, s) { } on DioException catch (e, s) {
@ -325,7 +325,7 @@ void main() async {
void main() async { void main() async {
try { try {
final response = await dio.Dio.head('https://api.foss42.com'); final response = await dio.Dio.head('https://api.apidash.dev');
print(response.statusCode); print(response.statusCode);
print(response.data); print(response.data);
} on DioException catch (e, s) { } on DioException catch (e, s) {
@ -346,7 +346,7 @@ void main() async {
void main() async { void main() async {
try { try {
final response = await dio.Dio.head('http://api.foss42.com'); final response = await dio.Dio.head('http://api.apidash.dev');
print(response.statusCode); print(response.statusCode);
print(response.data); print(response.data);
} on DioException catch (e, s) { } on DioException catch (e, s) {
@ -373,7 +373,7 @@ void main() async {
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
}'''; }''';
final response = await dio.Dio.post( final response = await dio.Dio.post(
'https://api.foss42.com/case/lower', 'https://api.apidash.dev/case/lower',
data: data, data: data,
); );
print(response.statusCode); print(response.statusCode);
@ -401,7 +401,7 @@ void main() async {
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
}'''); }''');
final response = await dio.Dio.post( final response = await dio.Dio.post(
'https://api.foss42.com/case/lower', 'https://api.apidash.dev/case/lower',
data: data, data: data,
); );
print(response.statusCode); print(response.statusCode);
@ -430,7 +430,7 @@ void main() async {
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
}'''); }''');
final response = await dio.Dio.post( final response = await dio.Dio.post(
'https://api.foss42.com/case/lower', 'https://api.apidash.dev/case/lower',
options: Options(headers: headers), options: Options(headers: headers),
data: data, data: data,
); );

View File

@ -11,7 +11,7 @@ void main() {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com'); var uri = Uri.parse('https://api.apidash.dev');
final response = await http.get(uri); final response = await http.get(uri);
@ -32,7 +32,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/country/data'); var uri = Uri.parse('https://api.apidash.dev/country/data');
var queryParams = {'code': 'US'}; var queryParams = {'code': 'US'};
uri = uri.replace(queryParameters: queryParams); uri = uri.replace(queryParameters: queryParams);
@ -57,7 +57,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/country/data?code=US'); var uri = Uri.parse('https://api.apidash.dev/country/data?code=US');
var queryParams = {'code': 'IND'}; var queryParams = {'code': 'IND'};
var urlQueryParams = Map<String, String>.from(uri.queryParameters); var urlQueryParams = Map<String, String>.from(uri.queryParameters);
@ -83,7 +83,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social'); var uri = Uri.parse('https://api.apidash.dev/humanize/social');
var queryParams = { var queryParams = {
'num': '8700000', 'num': '8700000',
@ -168,7 +168,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com'); var uri = Uri.parse('https://api.apidash.dev');
final response = await http.get(uri); final response = await http.get(uri);
@ -218,7 +218,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social'); var uri = Uri.parse('https://api.apidash.dev/humanize/social');
var queryParams = { var queryParams = {
'num': '8700000', 'num': '8700000',
@ -245,7 +245,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social'); var uri = Uri.parse('https://api.apidash.dev/humanize/social');
var headers = {'User-Agent': 'Test Agent'}; var headers = {'User-Agent': 'Test Agent'};
@ -276,7 +276,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social'); var uri = Uri.parse('https://api.apidash.dev/humanize/social');
var queryParams = { var queryParams = {
'num': '8700000', 'num': '8700000',
@ -308,7 +308,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/humanize/social'); var uri = Uri.parse('https://api.apidash.dev/humanize/social');
final response = await http.get(uri); final response = await http.get(uri);
@ -331,7 +331,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com'); var uri = Uri.parse('https://api.apidash.dev');
final response = await http.head(uri); final response = await http.head(uri);
@ -352,7 +352,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('http://api.foss42.com'); var uri = Uri.parse('http://api.apidash.dev');
final response = await http.head(uri); final response = await http.head(uri);
@ -375,7 +375,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/case/lower'); var uri = Uri.parse('https://api.apidash.dev/case/lower');
String body = r'''{ String body = r'''{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -406,7 +406,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/case/lower'); var uri = Uri.parse('https://api.apidash.dev/case/lower');
String body = r'''{ String body = r'''{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -437,7 +437,7 @@ void main() async {
const expectedCode = r"""import 'package:http/http.dart' as http; const expectedCode = r"""import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/case/lower'); var uri = Uri.parse('https://api.apidash.dev/case/lower');
String body = r'''{ String body = r'''{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"

View File

@ -9,7 +9,7 @@ void main() {
test('GET 1', () { test('GET 1', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com", "url": "https://api.apidash.dev",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [] "headers": []
@ -20,7 +20,7 @@ void main() {
test('GET 2', () { test('GET 2', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com/country/data?code=US", "url": "https://api.apidash.dev/country/data?code=US",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [ "queryString": [
{ {
@ -36,7 +36,7 @@ void main() {
test('GET 3', () { test('GET 3', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com/country/data?code=IND", "url": "https://api.apidash.dev/country/data?code=IND",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [ "queryString": [
{ {
@ -52,7 +52,7 @@ void main() {
test('GET 4', () { test('GET 4', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true", "url": "https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [ "queryString": [
{ {
@ -121,7 +121,7 @@ void main() {
test('GET 7', () { test('GET 7', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com", "url": "https://api.apidash.dev",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [] "headers": []
@ -153,7 +153,7 @@ void main() {
test('GET 9', () { test('GET 9', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com/humanize/social?num=8700000&add_space=true", "url": "https://api.apidash.dev/humanize/social?num=8700000&add_space=true",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [ "queryString": [
{ {
@ -173,7 +173,7 @@ void main() {
test('GET 10', () { test('GET 10', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com/humanize/social", "url": "https://api.apidash.dev/humanize/social",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [ "headers": [
@ -194,7 +194,7 @@ void main() {
test('GET 11', () { test('GET 11', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com/humanize/social?num=8700000&digits=3", "url": "https://api.apidash.dev/humanize/social?num=8700000&digits=3",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [ "queryString": [
{ {
@ -219,7 +219,7 @@ void main() {
test('GET 12', () { test('GET 12', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "GET", "method": "GET",
"url": "https://api.foss42.com/humanize/social", "url": "https://api.apidash.dev/humanize/social",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [] "headers": []
@ -232,7 +232,7 @@ void main() {
test('HEAD 1', () { test('HEAD 1', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "HEAD", "method": "HEAD",
"url": "https://api.foss42.com", "url": "https://api.apidash.dev",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [] "headers": []
@ -243,7 +243,7 @@ void main() {
test('HEAD 2', () { test('HEAD 2', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "HEAD", "method": "HEAD",
"url": "http://api.foss42.com", "url": "http://api.apidash.dev",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [] "headers": []
@ -256,7 +256,7 @@ void main() {
test('POST 1', () { test('POST 1', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "POST", "method": "POST",
"url": "https://api.foss42.com/case/lower", "url": "https://api.apidash.dev/case/lower",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [ "headers": [
@ -276,7 +276,7 @@ void main() {
test('POST 2', () { test('POST 2', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "POST", "method": "POST",
"url": "https://api.foss42.com/case/lower", "url": "https://api.apidash.dev/case/lower",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [ "headers": [
@ -296,7 +296,7 @@ void main() {
test('POST 3', () { test('POST 3', () {
const expectedCode = r"""{ const expectedCode = r"""{
"method": "POST", "method": "POST",
"url": "https://api.foss42.com/case/lower", "url": "https://api.apidash.dev/case/lower",
"httpVersion": "HTTP/1.1", "httpVersion": "HTTP/1.1",
"queryString": [], "queryString": [],
"headers": [ "headers": [

View File

@ -8,7 +8,7 @@ void main() {
group('GET Request', () { group('GET Request', () {
test('GET 1', () { test('GET 1', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'get' method: 'get'
}; };
@ -29,7 +29,7 @@ axios(config)
test('GET 2', () { test('GET 2', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/country/data', url: 'https://api.apidash.dev/country/data',
method: 'get', method: 'get',
params: { params: {
"code": "US" "code": "US"
@ -53,7 +53,7 @@ axios(config)
test('GET 3', () { test('GET 3', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/country/data', url: 'https://api.apidash.dev/country/data',
method: 'get', method: 'get',
params: { params: {
"code": "IND" "code": "IND"
@ -77,7 +77,7 @@ axios(config)
test('GET 4', () { test('GET 4', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
params: { params: {
"num": "8700000", "num": "8700000",
@ -156,7 +156,7 @@ axios(config)
test('GET 7', () { test('GET 7', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'get' method: 'get'
}; };
@ -204,7 +204,7 @@ axios(config)
test('GET 9', () { test('GET 9', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
params: { params: {
"num": "8700000", "num": "8700000",
@ -229,7 +229,7 @@ axios(config)
test('GET 10', () { test('GET 10', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
headers: { headers: {
"User-Agent": "Test Agent" "User-Agent": "Test Agent"
@ -258,7 +258,7 @@ axios(config)
test('GET 11', () { test('GET 11', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
params: { params: {
"num": "8700000", "num": "8700000",
@ -286,7 +286,7 @@ axios(config)
test('GET 12', () { test('GET 12', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get' method: 'get'
}; };
@ -309,7 +309,7 @@ axios(config)
group('HEAD Request', () { group('HEAD Request', () {
test('HEAD 1', () { test('HEAD 1', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'head' method: 'head'
}; };
@ -330,7 +330,7 @@ axios(config)
test('HEAD 2', () { test('HEAD 2', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'http://api.foss42.com', url: 'http://api.apidash.dev',
method: 'head' method: 'head'
}; };
@ -353,7 +353,7 @@ axios(config)
group('POST Request', () { group('POST Request', () {
test('POST 1', () { test('POST 1', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: 'post', method: 'post',
headers: { headers: {
"Content-Type": "text/plain" "Content-Type": "text/plain"
@ -378,7 +378,7 @@ axios(config)
test('POST 2', () { test('POST 2', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: 'post', method: 'post',
headers: { headers: {
"Content-Type": "application/json" "Content-Type": "application/json"
@ -403,7 +403,7 @@ axios(config)
test('POST 3', () { test('POST 3', () {
const expectedCode = r"""let config = { const expectedCode = r"""let config = {
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: 'post', method: 'post',
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",

View File

@ -7,7 +7,7 @@ void main() {
group('GET Request', () { group('GET Request', () {
test('GET 1', () { test('GET 1', () {
const expectedCode = r"""let url = 'https://api.foss42.com'; const expectedCode = r"""let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'GET' method: 'GET'
@ -33,7 +33,7 @@ fetch(url, options)
test('GET 2', () { test('GET 2', () {
const expectedCode = const expectedCode =
r"""let url = 'https://api.foss42.com/country/data?code=US'; r"""let url = 'https://api.apidash.dev/country/data?code=US';
let options = { let options = {
method: 'GET' method: 'GET'
@ -59,7 +59,7 @@ fetch(url, options)
test('GET 3', () { test('GET 3', () {
const expectedCode = const expectedCode =
r"""let url = 'https://api.foss42.com/country/data?code=IND'; r"""let url = 'https://api.apidash.dev/country/data?code=IND';
let options = { let options = {
method: 'GET' method: 'GET'
@ -85,7 +85,7 @@ fetch(url, options)
test('GET 4', () { test('GET 4', () {
const expectedCode = const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true'; r"""let url = 'https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true';
let options = { let options = {
method: 'GET' method: 'GET'
@ -168,7 +168,7 @@ fetch(url, options)
}); });
test('GET 7', () { test('GET 7', () {
const expectedCode = r"""let url = 'https://api.foss42.com'; const expectedCode = r"""let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'GET' method: 'GET'
@ -223,7 +223,7 @@ fetch(url, options)
test('GET 9', () { test('GET 9', () {
const expectedCode = const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social?num=8700000&add_space=true'; r"""let url = 'https://api.apidash.dev/humanize/social?num=8700000&add_space=true';
let options = { let options = {
method: 'GET' method: 'GET'
@ -249,7 +249,7 @@ fetch(url, options)
test('GET 10', () { test('GET 10', () {
const expectedCode = const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social'; r"""let url = 'https://api.apidash.dev/humanize/social';
let options = { let options = {
method: 'GET', method: 'GET',
@ -283,7 +283,7 @@ fetch(url, options)
test('GET 11', () { test('GET 11', () {
const expectedCode = const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social?num=8700000&digits=3'; r"""let url = 'https://api.apidash.dev/humanize/social?num=8700000&digits=3';
let options = { let options = {
method: 'GET', method: 'GET',
@ -312,7 +312,7 @@ fetch(url, options)
test('GET 12', () { test('GET 12', () {
const expectedCode = const expectedCode =
r"""let url = 'https://api.foss42.com/humanize/social'; r"""let url = 'https://api.apidash.dev/humanize/social';
let options = { let options = {
method: 'GET' method: 'GET'
@ -339,7 +339,7 @@ fetch(url, options)
group('HEAD Request', () { group('HEAD Request', () {
test('HEAD 1', () { test('HEAD 1', () {
const expectedCode = r"""let url = 'https://api.foss42.com'; const expectedCode = r"""let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'HEAD' method: 'HEAD'
@ -364,7 +364,7 @@ fetch(url, options)
}); });
test('HEAD 2', () { test('HEAD 2', () {
const expectedCode = r"""let url = 'http://api.foss42.com'; const expectedCode = r"""let url = 'http://api.apidash.dev';
let options = { let options = {
method: 'HEAD' method: 'HEAD'
@ -391,7 +391,7 @@ fetch(url, options)
group('POST Request', () { group('POST Request', () {
test('POST 1', () { test('POST 1', () {
const expectedCode = r"""let url = 'https://api.foss42.com/case/lower'; const expectedCode = r"""let url = 'https://api.apidash.dev/case/lower';
let options = { let options = {
method: 'POST', method: 'POST',
@ -421,7 +421,7 @@ fetch(url, options)
}); });
test('POST 2', () { test('POST 2', () {
const expectedCode = r"""let url = 'https://api.foss42.com/case/lower'; const expectedCode = r"""let url = 'https://api.apidash.dev/case/lower';
let options = { let options = {
method: 'POST', method: 'POST',
@ -451,7 +451,7 @@ fetch(url, options)
}); });
test('POST 3', () { test('POST 3', () {
const expectedCode = r"""let url = 'https://api.foss42.com/case/lower'; const expectedCode = r"""let url = 'https://api.apidash.dev/case/lower';
let options = { let options = {
method: 'POST', method: 'POST',

View File

@ -13,7 +13,7 @@ import okhttp3.Request
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com" val url = "https://api.apidash.dev"
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
@ -38,7 +38,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/country/data".toHttpUrl().newBuilder() val url = "https://api.apidash.dev/country/data".toHttpUrl().newBuilder()
.addQueryParameter("code", "US") .addQueryParameter("code", "US")
.build() .build()
@ -65,7 +65,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/country/data".toHttpUrl().newBuilder() val url = "https://api.apidash.dev/country/data".toHttpUrl().newBuilder()
.addQueryParameter("code", "IND") .addQueryParameter("code", "IND")
.build() .build()
@ -92,7 +92,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social".toHttpUrl().newBuilder() val url = "https://api.apidash.dev/humanize/social".toHttpUrl().newBuilder()
.addQueryParameter("num", "8700000") .addQueryParameter("num", "8700000")
.addQueryParameter("digits", "3") .addQueryParameter("digits", "3")
.addQueryParameter("system", "SS") .addQueryParameter("system", "SS")
@ -175,7 +175,7 @@ import okhttp3.Request
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com" val url = "https://api.apidash.dev"
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
@ -228,7 +228,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social".toHttpUrl().newBuilder() val url = "https://api.apidash.dev/humanize/social".toHttpUrl().newBuilder()
.addQueryParameter("num", "8700000") .addQueryParameter("num", "8700000")
.addQueryParameter("add_space", "true") .addQueryParameter("add_space", "true")
.build() .build()
@ -255,7 +255,7 @@ import okhttp3.Request
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social" val url = "https://api.apidash.dev/humanize/social"
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
@ -285,7 +285,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social".toHttpUrl().newBuilder() val url = "https://api.apidash.dev/humanize/social".toHttpUrl().newBuilder()
.addQueryParameter("num", "8700000") .addQueryParameter("num", "8700000")
.addQueryParameter("digits", "3") .addQueryParameter("digits", "3")
.build() .build()
@ -313,7 +313,7 @@ import okhttp3.Request
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/humanize/social" val url = "https://api.apidash.dev/humanize/social"
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
@ -339,7 +339,7 @@ import okhttp3.Request
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com" val url = "https://api.apidash.dev"
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
@ -363,7 +363,7 @@ import okhttp3.Request
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "http://api.foss42.com" val url = "http://api.apidash.dev"
val request = Request.Builder() val request = Request.Builder()
.url(url) .url(url)
@ -391,7 +391,7 @@ import okhttp3.MediaType.Companion.toMediaType
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/case/lower" val url = "https://api.apidash.dev/case/lower"
val mediaType = "text/plain".toMediaType() val mediaType = "text/plain".toMediaType()
@ -423,7 +423,7 @@ import okhttp3.MediaType.Companion.toMediaType
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/case/lower" val url = "https://api.apidash.dev/case/lower"
val mediaType = "application/json".toMediaType() val mediaType = "application/json".toMediaType()
@ -455,7 +455,7 @@ import okhttp3.MediaType.Companion.toMediaType
fun main() { fun main() {
val client = OkHttpClient() val client = OkHttpClient()
val url = "https://api.foss42.com/case/lower" val url = "https://api.apidash.dev/case/lower"
val mediaType = "application/json".toMediaType() val mediaType = "application/json".toMediaType()
@ -478,6 +478,35 @@ fun main() {
expect(kotlinOkHttpCodeGen.getCode(requestModelPost3, "https"), expect(kotlinOkHttpCodeGen.getCode(requestModelPost3, "https"),
expectedCode); expectedCode);
}); });
test('POST 5', () {
const expectedCode = r'''import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.MultipartBody
fun main() {
val client = OkHttpClient()
val url = "https://api.apidash.dev/io/form"
val body = MultipartBody.Builder().setType(MultipartBody.FORM).addFormDataPart("text","API")
.addFormDataPart("sep","|")
.addFormDataPart("times","3")
.build()
val request = Request.Builder()
.url(url)
.addHeader("User-Agent", "Test Agent")
.post(body)
.build()
val response = client.newCall(request).execute()
println(response.code)
println(response.body?.string())
}
''';
expect(kotlinOkHttpCodeGen.getCode(requestModelPost5, "https"),
expectedCode);
});
}); });
group('PUT Request', () { group('PUT Request', () {

View File

@ -10,7 +10,7 @@ void main() {
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'get' method: 'get'
}; };
@ -33,7 +33,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/country/data', url: 'https://api.apidash.dev/country/data',
method: 'get', method: 'get',
params: { params: {
"code": "US" "code": "US"
@ -59,7 +59,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/country/data', url: 'https://api.apidash.dev/country/data',
method: 'get', method: 'get',
params: { params: {
"code": "IND" "code": "IND"
@ -85,7 +85,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
params: { params: {
"num": "8700000", "num": "8700000",
@ -170,7 +170,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'get' method: 'get'
}; };
@ -222,7 +222,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
params: { params: {
"num": "8700000", "num": "8700000",
@ -249,7 +249,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
headers: { headers: {
"User-Agent": "Test Agent" "User-Agent": "Test Agent"
@ -280,7 +280,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get', method: 'get',
params: { params: {
"num": "8700000", "num": "8700000",
@ -310,7 +310,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: 'get' method: 'get'
}; };
@ -335,7 +335,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: 'head' method: 'head'
}; };
@ -358,7 +358,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'http://api.foss42.com', url: 'http://api.apidash.dev',
method: 'head' method: 'head'
}; };
@ -383,7 +383,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: 'post', method: 'post',
headers: { headers: {
"Content-Type": "text/plain" "Content-Type": "text/plain"
@ -410,7 +410,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: 'post', method: 'post',
headers: { headers: {
"Content-Type": "application/json" "Content-Type": "application/json"
@ -437,7 +437,7 @@ axios(config)
const expectedCode = r"""import axios from 'axios'; const expectedCode = r"""import axios from 'axios';
let config = { let config = {
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: 'post', method: 'post',
headers: { headers: {
"Content-Type": "application/json", "Content-Type": "application/json",

View File

@ -9,7 +9,7 @@ void main() {
test('GET 1', () { test('GET 1', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com'; let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'GET' method: 'GET'
@ -36,7 +36,7 @@ fetch(url, options)
test('GET 2', () { test('GET 2', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/country/data?code=US'; let url = 'https://api.apidash.dev/country/data?code=US';
let options = { let options = {
method: 'GET' method: 'GET'
@ -63,7 +63,7 @@ fetch(url, options)
test('GET 3', () { test('GET 3', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/country/data?code=IND'; let url = 'https://api.apidash.dev/country/data?code=IND';
let options = { let options = {
method: 'GET' method: 'GET'
@ -90,7 +90,7 @@ fetch(url, options)
test('GET 4', () { test('GET 4', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true'; let url = 'https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true&trailing_zeros=true';
let options = { let options = {
method: 'GET' method: 'GET'
@ -177,7 +177,7 @@ fetch(url, options)
test('GET 7', () { test('GET 7', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com'; let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'GET' method: 'GET'
@ -234,7 +234,7 @@ fetch(url, options)
test('GET 9', () { test('GET 9', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social?num=8700000&add_space=true'; let url = 'https://api.apidash.dev/humanize/social?num=8700000&add_space=true';
let options = { let options = {
method: 'GET' method: 'GET'
@ -261,7 +261,7 @@ fetch(url, options)
test('GET 10', () { test('GET 10', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social'; let url = 'https://api.apidash.dev/humanize/social';
let options = { let options = {
method: 'GET', method: 'GET',
@ -296,7 +296,7 @@ fetch(url, options)
test('GET 11', () { test('GET 11', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social?num=8700000&digits=3'; let url = 'https://api.apidash.dev/humanize/social?num=8700000&digits=3';
let options = { let options = {
method: 'GET', method: 'GET',
@ -326,7 +326,7 @@ fetch(url, options)
test('GET 12', () { test('GET 12', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/humanize/social'; let url = 'https://api.apidash.dev/humanize/social';
let options = { let options = {
method: 'GET' method: 'GET'
@ -355,7 +355,7 @@ fetch(url, options)
test('HEAD 1', () { test('HEAD 1', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com'; let url = 'https://api.apidash.dev';
let options = { let options = {
method: 'HEAD' method: 'HEAD'
@ -382,7 +382,7 @@ fetch(url, options)
test('HEAD 2', () { test('HEAD 2', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'http://api.foss42.com'; let url = 'http://api.apidash.dev';
let options = { let options = {
method: 'HEAD' method: 'HEAD'
@ -411,7 +411,7 @@ fetch(url, options)
test('POST 1', () { test('POST 1', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/case/lower'; let url = 'https://api.apidash.dev/case/lower';
let options = { let options = {
method: 'POST', method: 'POST',
@ -443,7 +443,7 @@ fetch(url, options)
test('POST 2', () { test('POST 2', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/case/lower'; let url = 'https://api.apidash.dev/case/lower';
let options = { let options = {
method: 'POST', method: 'POST',
@ -475,7 +475,7 @@ fetch(url, options)
test('POST 3', () { test('POST 3', () {
const expectedCode = r"""import fetch from 'node-fetch'; const expectedCode = r"""import fetch from 'node-fetch';
let url = 'https://api.foss42.com/case/lower'; let url = 'https://api.apidash.dev/case/lower';
let options = { let options = {
method: 'POST', method: 'POST',

View File

@ -9,7 +9,7 @@ void main() {
test('GET 1', () { test('GET 1', () {
const expectedCode = r"""import http.client const expectedCode = r"""import http.client
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "") conn.request("GET", "")
res = conn.getresponse() res = conn.getresponse()
@ -30,7 +30,7 @@ queryParams = {
} }
queryParamsStr = '?' + urlencode(queryParams) queryParamsStr = '?' + urlencode(queryParams)
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "/country/data" + queryParamsStr) conn.request("GET", "/country/data" + queryParamsStr)
res = conn.getresponse() res = conn.getresponse()
@ -51,7 +51,7 @@ queryParams = {
} }
queryParamsStr = '?' + urlencode(queryParams) queryParamsStr = '?' + urlencode(queryParams)
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "/country/data" + queryParamsStr) conn.request("GET", "/country/data" + queryParamsStr)
res = conn.getresponse() res = conn.getresponse()
@ -76,7 +76,7 @@ queryParams = {
} }
queryParamsStr = '?' + urlencode(queryParams) queryParamsStr = '?' + urlencode(queryParams)
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "/humanize/social" + queryParamsStr) conn.request("GET", "/humanize/social" + queryParamsStr)
res = conn.getresponse() res = conn.getresponse()
@ -137,7 +137,7 @@ print(data.decode("utf-8"))
test('GET 7', () { test('GET 7', () {
const expectedCode = r"""import http.client const expectedCode = r"""import http.client
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "") conn.request("GET", "")
res = conn.getresponse() res = conn.getresponse()
@ -185,7 +185,7 @@ queryParams = {
} }
queryParamsStr = '?' + urlencode(queryParams) queryParamsStr = '?' + urlencode(queryParams)
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "/humanize/social" + queryParamsStr) conn.request("GET", "/humanize/social" + queryParamsStr)
res = conn.getresponse() res = conn.getresponse()
@ -204,7 +204,7 @@ headers = {
"User-Agent": "Test Agent" "User-Agent": "Test Agent"
} }
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "/humanize/social", conn.request("GET", "/humanize/social",
headers= headers) headers= headers)
@ -235,7 +235,7 @@ headers = {
"User-Agent": "Test Agent" "User-Agent": "Test Agent"
} }
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "/humanize/social" + queryParamsStr, conn.request("GET", "/humanize/social" + queryParamsStr,
headers= headers) headers= headers)
@ -251,7 +251,7 @@ print(data.decode("utf-8"))
test('GET 12', () { test('GET 12', () {
const expectedCode = r"""import http.client const expectedCode = r"""import http.client
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("GET", "/humanize/social") conn.request("GET", "/humanize/social")
res = conn.getresponse() res = conn.getresponse()
@ -268,7 +268,7 @@ print(data.decode("utf-8"))
test('HEAD 1', () { test('HEAD 1', () {
const expectedCode = r"""import http.client const expectedCode = r"""import http.client
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("HEAD", "") conn.request("HEAD", "")
res = conn.getresponse() res = conn.getresponse()
@ -283,7 +283,7 @@ print(data.decode("utf-8"))
test('HEAD 2', () { test('HEAD 2', () {
const expectedCode = r"""import http.client const expectedCode = r"""import http.client
conn = http.client.HTTPConnection("api.foss42.com") conn = http.client.HTTPConnection("api.apidash.dev")
conn.request("HEAD", "") conn.request("HEAD", "")
res = conn.getresponse() res = conn.getresponse()
@ -308,7 +308,7 @@ headers = {
"content-type": "text/plain" "content-type": "text/plain"
} }
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("POST", "/case/lower", conn.request("POST", "/case/lower",
body= body, body= body,
headers= headers) headers= headers)
@ -333,7 +333,7 @@ headers = {
"content-type": "application/json" "content-type": "application/json"
} }
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("POST", "/case/lower", conn.request("POST", "/case/lower",
body= body, body= body,
headers= headers) headers= headers)
@ -359,7 +359,7 @@ headers = {
"content-type": "application/json" "content-type": "application/json"
} }
conn = http.client.HTTPSConnection("api.foss42.com") conn = http.client.HTTPSConnection("api.apidash.dev")
conn.request("POST", "/case/lower", conn.request("POST", "/case/lower",
body= body, body= body,
headers= headers) headers= headers)

View File

@ -9,7 +9,7 @@ void main() {
test('GET 1', () { test('GET 1', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com' url = 'https://api.apidash.dev'
response = requests.get(url) response = requests.get(url)
@ -23,7 +23,7 @@ print('Response Body:', response.text)
test('GET 2', () { test('GET 2', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/country/data' url = 'https://api.apidash.dev/country/data'
params = { params = {
"code": "US" "code": "US"
@ -41,7 +41,7 @@ print('Response Body:', response.text)
test('GET 3', () { test('GET 3', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/country/data' url = 'https://api.apidash.dev/country/data'
params = { params = {
"code": "IND" "code": "IND"
@ -59,7 +59,7 @@ print('Response Body:', response.text)
test('GET 4', () { test('GET 4', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social' url = 'https://api.apidash.dev/humanize/social'
params = { params = {
"num": "8700000", "num": "8700000",
@ -121,7 +121,7 @@ print('Response Body:', response.text)
test('GET 7', () { test('GET 7', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com' url = 'https://api.apidash.dev'
response = requests.get(url) response = requests.get(url)
@ -157,7 +157,7 @@ print('Response Body:', response.text)
test('GET 9', () { test('GET 9', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social' url = 'https://api.apidash.dev/humanize/social'
params = { params = {
"num": "8700000", "num": "8700000",
@ -176,7 +176,7 @@ print('Response Body:', response.text)
test('GET 10', () { test('GET 10', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social' url = 'https://api.apidash.dev/humanize/social'
headers = { headers = {
"User-Agent": "Test Agent" "User-Agent": "Test Agent"
@ -198,7 +198,7 @@ print('Response Body:', response.text)
test('GET 11', () { test('GET 11', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social' url = 'https://api.apidash.dev/humanize/social'
params = { params = {
"num": "8700000", "num": "8700000",
@ -221,7 +221,7 @@ print('Response Body:', response.text)
test('GET 12', () { test('GET 12', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/humanize/social' url = 'https://api.apidash.dev/humanize/social'
response = requests.get(url) response = requests.get(url)
@ -237,7 +237,7 @@ print('Response Body:', response.text)
test('HEAD 1', () { test('HEAD 1', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com' url = 'https://api.apidash.dev'
response = requests.head(url) response = requests.head(url)
@ -251,7 +251,7 @@ print('Response Body:', response.text)
test('HEAD 2', () { test('HEAD 2', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'http://api.foss42.com' url = 'http://api.apidash.dev'
response = requests.head(url) response = requests.head(url)
@ -267,7 +267,7 @@ print('Response Body:', response.text)
test('POST 1', () { test('POST 1', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/case/lower' url = 'https://api.apidash.dev/case/lower'
payload = r'''{ payload = r'''{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -289,7 +289,7 @@ print('Response Body:', response.text)
test('POST 2', () { test('POST 2', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/case/lower' url = 'https://api.apidash.dev/case/lower'
payload = { payload = {
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -307,7 +307,7 @@ print('Response Body:', response.text)
test('POST 3', () { test('POST 3', () {
const expectedCode = r"""import requests const expectedCode = r"""import requests
url = 'https://api.foss42.com/case/lower' url = 'https://api.apidash.dev/case/lower'
payload = { payload = {
"text": "I LOVE Flutter" "text": "I LOVE Flutter"

View File

@ -52,7 +52,7 @@ void main() {
RequestModel requestModel = RequestModel( RequestModel requestModel = RequestModel(
id: '1', id: '1',
method: HTTPVerb.post, method: HTTPVerb.post,
url: 'api.foss42.com/case/lower', url: 'api.apidash.dev/case/lower',
name: 'foss42 api', name: 'foss42 api',
requestHeaders: const [ requestHeaders: const [
NameValueModel(name: 'content-length', value: '18'), NameValueModel(name: 'content-length', value: '18'),
@ -69,7 +69,7 @@ void main() {
RequestModel requestModelDup = const RequestModel( RequestModel requestModelDup = const RequestModel(
id: '1', id: '1',
method: HTTPVerb.post, method: HTTPVerb.post,
url: 'api.foss42.com/case/lower', url: 'api.apidash.dev/case/lower',
name: 'foss42 api', name: 'foss42 api',
requestHeaders: [ requestHeaders: [
NameValueModel(name: 'content-length', value: '18'), NameValueModel(name: 'content-length', value: '18'),
@ -84,7 +84,7 @@ void main() {
RequestModel requestModelCopy = const RequestModel( RequestModel requestModelCopy = const RequestModel(
id: '1', id: '1',
method: HTTPVerb.post, method: HTTPVerb.post,
url: 'api.foss42.com/case/lower', url: 'api.apidash.dev/case/lower',
name: 'foss42 api (copy)', name: 'foss42 api (copy)',
requestHeaders: [ requestHeaders: [
NameValueModel(name: 'content-length', value: '18'), NameValueModel(name: 'content-length', value: '18'),
@ -99,7 +99,7 @@ void main() {
Map<String, dynamic> requestModelAsJson = { Map<String, dynamic> requestModelAsJson = {
"id": '1', "id": '1',
"method": 'post', "method": 'post',
"url": 'api.foss42.com/case/lower', "url": 'api.apidash.dev/case/lower',
"name": 'foss42 api', "name": 'foss42 api',
'description': '', 'description': '',
"requestHeaders": { "requestHeaders": {
@ -138,7 +138,7 @@ void main() {
final requestModeDupString = [ final requestModeDupString = [
"Request Id: 1", "Request Id: 1",
"Request Method: post", "Request Method: post",
"Request URL: api.foss42.com/case/lower", "Request URL: api.apidash.dev/case/lower",
"Request Name: foss42 api", "Request Name: foss42 api",
"Request Description: ", "Request Description: ",
"Request Tab Index: 0", "Request Tab Index: 0",

View File

@ -81,19 +81,19 @@ void main() {
test('Testing fromResponse', () async { test('Testing fromResponse', () async {
final response = await http.get( final response = await http.get(
Uri.parse('https://api.foss42.com/'), Uri.parse('https://api.apidash.dev/'),
); );
final responseData = responseModel.fromResponse(response: response); final responseData = responseModel.fromResponse(response: response);
expect(responseData.statusCode, 200); expect(responseData.statusCode, 200);
expect(responseData.body, expect(responseData.body,
'{"message":"Check out https://foss42.com for API docs to get started."}'); '{"data":"Check out https://api.apidash.dev/docs to get started."}');
expect(responseData.formattedBody, '''{ expect(responseData.formattedBody, '''{
"message": "Check out https://foss42.com for API docs to get started." "data": "Check out https://api.apidash.dev/docs to get started."
}'''); }''');
}); });
test('Testing fromResponse for contentType not Json', () async { test('Testing fromResponse for contentType not Json', () async {
final response = await http.get( final response = await http.get(
Uri.parse('https://foss42.com/'), Uri.parse('https://apidash.dev/'),
); );
final responseData = responseModel.fromResponse(response: response); final responseData = responseModel.fromResponse(response: response);
expect(responseData.statusCode, 200); expect(responseData.statusCode, 200);

View File

@ -1,17 +1,18 @@
import 'package:apidash/models/models.dart' show NameValueModel, RequestModel; import 'package:apidash/models/models.dart'
show FormDataModel, NameValueModel, RequestModel;
import 'package:apidash/consts.dart'; import 'package:apidash/consts.dart';
/// Basic GET request model /// Basic GET request model
const requestModelGet1 = RequestModel( const requestModelGet1 = RequestModel(
id: 'get1', id: 'get1',
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: HTTPVerb.get, method: HTTPVerb.get,
); );
/// GET request model with query params /// GET request model with query params
const requestModelGet2 = RequestModel( const requestModelGet2 = RequestModel(
id: 'get2', id: 'get2',
url: 'https://api.foss42.com/country/data', url: 'https://api.apidash.dev/country/data',
method: HTTPVerb.get, method: HTTPVerb.get,
requestParams: [ requestParams: [
NameValueModel(name: 'code', value: 'US'), NameValueModel(name: 'code', value: 'US'),
@ -21,7 +22,7 @@ const requestModelGet2 = RequestModel(
/// GET request model with override query params /// GET request model with override query params
const requestModelGet3 = RequestModel( const requestModelGet3 = RequestModel(
id: 'get3', id: 'get3',
url: 'https://api.foss42.com/country/data?code=US', url: 'https://api.apidash.dev/country/data?code=US',
method: HTTPVerb.get, method: HTTPVerb.get,
requestParams: [ requestParams: [
NameValueModel(name: 'code', value: 'IND'), NameValueModel(name: 'code', value: 'IND'),
@ -31,7 +32,7 @@ const requestModelGet3 = RequestModel(
/// GET request model with different types of query params /// GET request model with different types of query params
const requestModelGet4 = RequestModel( const requestModelGet4 = RequestModel(
id: 'get4', id: 'get4',
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: HTTPVerb.get, method: HTTPVerb.get,
requestParams: [ requestParams: [
NameValueModel(name: 'num', value: '8700000'), NameValueModel(name: 'num', value: '8700000'),
@ -68,7 +69,7 @@ const requestModelGet6 = RequestModel(
/// GET request model with body /// GET request model with body
const requestModelGet7 = RequestModel( const requestModelGet7 = RequestModel(
id: 'get7', id: 'get7',
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: HTTPVerb.get, method: HTTPVerb.get,
requestBodyContentType: ContentType.text, requestBodyContentType: ContentType.text,
requestBody: requestBody:
@ -93,7 +94,7 @@ const requestModelGet8 = RequestModel(
/// GET request model with some params enabled /// GET request model with some params enabled
const requestModelGet9 = RequestModel( const requestModelGet9 = RequestModel(
id: 'get9', id: 'get9',
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: HTTPVerb.get, method: HTTPVerb.get,
requestParams: [ requestParams: [
NameValueModel(name: 'num', value: '8700000'), NameValueModel(name: 'num', value: '8700000'),
@ -112,7 +113,7 @@ const requestModelGet9 = RequestModel(
/// GET Request model with some headers enabled /// GET Request model with some headers enabled
const requestModelGet10 = RequestModel( const requestModelGet10 = RequestModel(
id: 'get10', id: 'get10',
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: HTTPVerb.get, method: HTTPVerb.get,
requestHeaders: [ requestHeaders: [
NameValueModel(name: 'User-Agent', value: 'Test Agent'), NameValueModel(name: 'User-Agent', value: 'Test Agent'),
@ -127,7 +128,7 @@ const requestModelGet10 = RequestModel(
/// GET Request model with some headers & URL parameters enabled /// GET Request model with some headers & URL parameters enabled
const requestModelGet11 = RequestModel( const requestModelGet11 = RequestModel(
id: 'get11', id: 'get11',
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: HTTPVerb.get, method: HTTPVerb.get,
requestParams: [ requestParams: [
NameValueModel(name: 'num', value: '8700000'), NameValueModel(name: 'num', value: '8700000'),
@ -154,7 +155,7 @@ const requestModelGet11 = RequestModel(
/// Request model with all headers & URL parameters disabled /// Request model with all headers & URL parameters disabled
const requestModelGet12 = RequestModel( const requestModelGet12 = RequestModel(
id: 'get12', id: 'get12',
url: 'https://api.foss42.com/humanize/social', url: 'https://api.apidash.dev/humanize/social',
method: HTTPVerb.get, method: HTTPVerb.get,
requestParams: [ requestParams: [
NameValueModel(name: 'num', value: '8700000'), NameValueModel(name: 'num', value: '8700000'),
@ -181,21 +182,21 @@ const requestModelGet12 = RequestModel(
/// Basic HEAD request model /// Basic HEAD request model
const requestModelHead1 = RequestModel( const requestModelHead1 = RequestModel(
id: 'head1', id: 'head1',
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: HTTPVerb.head, method: HTTPVerb.head,
); );
/// Without URI Scheme (pass default as http) /// Without URI Scheme (pass default as http)
const requestModelHead2 = RequestModel( const requestModelHead2 = RequestModel(
id: 'head2', id: 'head2',
url: 'api.foss42.com', url: 'api.apidash.dev',
method: HTTPVerb.head, method: HTTPVerb.head,
); );
/// Basic POST request model (txt body) /// Basic POST request model (txt body)
const requestModelPost1 = RequestModel( const requestModelPost1 = RequestModel(
id: 'post1', id: 'post1',
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: HTTPVerb.post, method: HTTPVerb.post,
requestBody: r"""{ requestBody: r"""{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -205,7 +206,7 @@ const requestModelPost1 = RequestModel(
/// POST request model with JSON body /// POST request model with JSON body
const requestModelPost2 = RequestModel( const requestModelPost2 = RequestModel(
id: 'post2', id: 'post2',
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: HTTPVerb.post, method: HTTPVerb.post,
requestBody: r"""{ requestBody: r"""{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -215,7 +216,7 @@ const requestModelPost2 = RequestModel(
/// POST request model with headers /// POST request model with headers
const requestModelPost3 = RequestModel( const requestModelPost3 = RequestModel(
id: 'post3', id: 'post3',
url: 'https://api.foss42.com/case/lower', url: 'https://api.apidash.dev/case/lower',
method: HTTPVerb.post, method: HTTPVerb.post,
requestBody: r"""{ requestBody: r"""{
"text": "I LOVE Flutter" "text": "I LOVE Flutter"
@ -226,6 +227,105 @@ const requestModelPost3 = RequestModel(
], ],
); );
/// POST request model with multipart body(text)
const requestModelPost4 = RequestModel(
id: 'post4',
url: 'https://api.apidash.dev/io/form',
method: HTTPVerb.post,
requestFormDataList: [
FormDataModel(name: "text", value: "API", type: FormDataType.text),
FormDataModel(name: "sep", value: "|", type: FormDataType.text),
FormDataModel(name: "times", value: "3", type: FormDataType.text),
],
requestBodyContentType: ContentType.formdata,
);
/// POST request model with multipart body and headers
const requestModelPost5 = RequestModel(
id: 'post5',
url: 'https://api.apidash.dev/io/form',
method: HTTPVerb.post,
requestFormDataList: [
FormDataModel(name: "text", value: "API", type: FormDataType.text),
FormDataModel(name: "sep", value: "|", type: FormDataType.text),
FormDataModel(name: "times", value: "3", type: FormDataType.text),
],
requestHeaders: [
NameValueModel(name: 'User-Agent', value: 'Test Agent'),
],
requestBodyContentType: ContentType.formdata,
);
/// POST request model with multipart body(text, file)
const requestModelPost6 = RequestModel(
id: 'post6',
url: 'https://api.apidash.dev/io/img',
method: HTTPVerb.post,
requestFormDataList: [
FormDataModel(name: "token", value: "xyz", type: FormDataType.text),
FormDataModel(
name: "imfile", value: "/Documents/up/1.png", type: FormDataType.file),
],
requestBodyContentType: ContentType.formdata,
);
/// POST request model with multipart body and requestBody (the requestBody shouldn't be in codegen)
const requestModelPost7 = RequestModel(
id: 'post7',
url: 'https://api.apidash.dev/io/img',
method: HTTPVerb.post,
requestBody: r"""{
"text": "I LOVE Flutter"
}""",
requestFormDataList: [
FormDataModel(name: "token", value: "xyz", type: FormDataType.text),
FormDataModel(
name: "imfile", value: "/Documents/up/1.png", type: FormDataType.file),
],
requestBodyContentType: ContentType.formdata,
);
/// POST request model with multipart body and requestParams
const requestModelPost8 = RequestModel(
id: 'post8',
url: 'https://api.apidash.dev/io/form',
method: HTTPVerb.post,
requestFormDataList: [
FormDataModel(name: "text", value: "API", type: FormDataType.text),
FormDataModel(name: "sep", value: "|", type: FormDataType.text),
FormDataModel(name: "times", value: "3", type: FormDataType.text),
],
requestParams: [
NameValueModel(name: 'size', value: '2'),
NameValueModel(name: 'len', value: '3'),
],
requestBodyContentType: ContentType.formdata,
);
/// POST request model with multipart body(file and text), requestParams, requestHeaders and requestBody
const requestModelPost9 = RequestModel(
id: 'post9',
url: 'https://api.apidash.dev/io/img',
method: HTTPVerb.post,
requestBody: r"""{
"text": "I LOVE Flutter"
}""",
requestFormDataList: [
FormDataModel(name: "token", value: "xyz", type: FormDataType.text),
FormDataModel(
name: "imfile", value: "/Documents/up/1.png", type: FormDataType.file),
],
requestParams: [
NameValueModel(name: 'size', value: '2'),
NameValueModel(name: 'len', value: '3'),
],
requestHeaders: [
NameValueModel(name: 'User-Agent', value: 'Test Agent'),
NameValueModel(name: 'Keep-Alive', value: 'true'),
],
requestBodyContentType: ContentType.formdata,
);
/// PUT request model /// PUT request model
const requestModelPut1 = RequestModel( const requestModelPut1 = RequestModel(
id: 'put1', id: 'put1',

View File

@ -1,3 +1,4 @@
import 'package:apidash/consts.dart';
import 'package:test/test.dart'; import 'package:test/test.dart';
import 'package:apidash/utils/file_utils.dart'; import 'package:apidash/utils/file_utils.dart';
@ -11,8 +12,13 @@ void main() {
}); });
test('Test getShortPath', () { test('Test getShortPath', () {
String path = "A/B/C/D.csv"; if (kIsWindows) {
expect(getShortPath(path), ".../C/D.csv"); String path = r"A\B\C\D.csv";
expect(getShortPath(path), r"...\C\D.csv");
} else {
String path = "A/B/C/D.csv";
expect(getShortPath(path), ".../C/D.csv");
}
}); });
test('Test getTempFileName', () { test('Test getTempFileName', () {

View File

@ -101,7 +101,7 @@ void main() {
'request': { 'request': {
'method': 'GET', 'method': 'GET',
'url': 'url':
'https://api.foss42.com/humanize/social?num=8700000&digits=3&system=SS&add_space=true', 'https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true',
'httpVersion': 'HTTP/1.1', 'httpVersion': 'HTTP/1.1',
'queryString': [ 'queryString': [
{'name': 'num', 'value': '8700000', 'comment': ''}, {'name': 'num', 'value': '8700000', 'comment': ''},
@ -162,7 +162,7 @@ void main() {
}, },
'request': { 'request': {
'method': 'POST', 'method': 'POST',
'url': 'https://api.foss42.com/case/lower', 'url': 'https://api.apidash.dev/case/lower',
'httpVersion': 'HTTP/1.1', 'httpVersion': 'HTTP/1.1',
'queryString': [], 'queryString': [],
'headers': [ 'headers': [
@ -252,7 +252,7 @@ void main() {
test('Test requestModelToHARJsonRequest exportMode=true', () { test('Test requestModelToHARJsonRequest exportMode=true', () {
Map<String, dynamic> expectedResult = { Map<String, dynamic> expectedResult = {
'method': 'POST', 'method': 'POST',
'url': 'https://api.foss42.com/case/lower', 'url': 'https://api.apidash.dev/case/lower',
'httpVersion': 'HTTP/1.1', 'httpVersion': 'HTTP/1.1',
'queryString': [], 'queryString': [],
'headers': [ 'headers': [
@ -282,7 +282,7 @@ void main() {
Map<String, dynamic> expectedResult = { Map<String, dynamic> expectedResult = {
'method': 'GET', 'method': 'GET',
'url': 'url':
'https://api.foss42.com/humanize/social?num=8700000&digits=3&system=SS&add_space=true', 'https://api.apidash.dev/humanize/social?num=8700000&digits=3&system=SS&add_space=true',
'httpVersion': 'HTTP/1.1', 'httpVersion': 'HTTP/1.1',
'queryString': [ 'queryString': [
{'name': 'num', 'value': '8700000'}, {'name': 'num', 'value': '8700000'},
@ -301,7 +301,7 @@ void main() {
test('Test requestModelToHARJsonRequest useEnabled=true', () { test('Test requestModelToHARJsonRequest useEnabled=true', () {
Map<String, dynamic> expectedResult = { Map<String, dynamic> expectedResult = {
'method': 'GET', 'method': 'GET',
'url': 'https://api.foss42.com/humanize/social?num=8700000&digits=3', 'url': 'https://api.apidash.dev/humanize/social?num=8700000&digits=3',
'httpVersion': 'HTTP/1.1', 'httpVersion': 'HTTP/1.1',
'queryString': [ 'queryString': [
{'name': 'num', 'value': '8700000'}, {'name': 'num', 'value': '8700000'},

View File

@ -19,14 +19,14 @@ void main() {
}); });
test('Testing getRequestTitleFromUrl using url3', () { test('Testing getRequestTitleFromUrl using url3', () {
String url3 = "https://api.foss42.com/country/codes"; String url3 = "https://api.apidash.dev/country/codes";
String title3Expected = "api.foss42.com/country/codes"; String title3Expected = "api.apidash.dev/country/codes";
expect(getRequestTitleFromUrl(url3), title3Expected); expect(getRequestTitleFromUrl(url3), title3Expected);
}); });
test('Testing getRequestTitleFromUrl using url4', () { test('Testing getRequestTitleFromUrl using url4', () {
String url4 = "api.foss42.com/country/data"; String url4 = "api.apidash.dev/country/data";
String title4Expected = "api.foss42.com/country/data"; String title4Expected = "api.apidash.dev/country/data";
expect(getRequestTitleFromUrl(url4), title4Expected); expect(getRequestTitleFromUrl(url4), title4Expected);
}); });
@ -175,11 +175,11 @@ void main() {
group("Testing getValidRequestUri", () { group("Testing getValidRequestUri", () {
test('Testing getValidRequestUri for normal values', () { test('Testing getValidRequestUri for normal values', () {
String url1 = "https://api.foss42.com/country/data"; String url1 = "https://api.apidash.dev/country/data";
const kvRow1 = NameValueModel(name: "code", value: "US"); const kvRow1 = NameValueModel(name: "code", value: "US");
Uri uri1Expected = Uri( Uri uri1Expected = Uri(
scheme: 'https', scheme: 'https',
host: 'api.foss42.com', host: 'api.apidash.dev',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url1, [kvRow1]), (uri1Expected, null)); expect(getValidRequestUri(url1, [kvRow1]), (uri1Expected, null));
@ -193,11 +193,11 @@ void main() {
expect(getValidRequestUri("", [kvRow3]), (null, "URL is missing!")); expect(getValidRequestUri("", [kvRow3]), (null, "URL is missing!"));
}); });
test('Testing getValidRequestUri when https is not provided in url', () { test('Testing getValidRequestUri when https is not provided in url', () {
String url4 = "api.foss42.com/country/data"; String url4 = "api.apidash.dev/country/data";
const kvRow4 = NameValueModel(name: "code", value: "US"); const kvRow4 = NameValueModel(name: "code", value: "US");
Uri uri4Expected = Uri( Uri uri4Expected = Uri(
scheme: 'https', scheme: 'https',
host: 'api.foss42.com', host: 'api.apidash.dev',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url4, [kvRow4]), (uri4Expected, null)); expect(getValidRequestUri(url4, [kvRow4]), (uri4Expected, null));
@ -217,20 +217,20 @@ void main() {
}); });
test('Testing getValidRequestUri when query params in both url and kvrow', test('Testing getValidRequestUri when query params in both url and kvrow',
() { () {
String url6 = "api.foss42.com/country/data?code=IND"; String url6 = "api.apidash.dev/country/data?code=IND";
const kvRow6 = NameValueModel(name: "code", value: "US"); const kvRow6 = NameValueModel(name: "code", value: "US");
Uri uri6Expected = Uri( Uri uri6Expected = Uri(
scheme: 'https', scheme: 'https',
host: 'api.foss42.com', host: 'api.apidash.dev',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url6, [kvRow6]), (uri6Expected, null)); expect(getValidRequestUri(url6, [kvRow6]), (uri6Expected, null));
}); });
test('Testing getValidRequestUri when kvrow is null', () { test('Testing getValidRequestUri when kvrow is null', () {
String url7 = "api.foss42.com/country/data?code=US"; String url7 = "api.apidash.dev/country/data?code=US";
Uri uri7Expected = Uri( Uri uri7Expected = Uri(
scheme: 'https', scheme: 'https',
host: 'api.foss42.com', host: 'api.apidash.dev',
path: 'country/data', path: 'country/data',
queryParameters: {'code': 'US'}); queryParameters: {'code': 'US'});
expect(getValidRequestUri(url7, null), (uri7Expected, null)); expect(getValidRequestUri(url7, null), (uri7Expected, null));

View File

@ -36,8 +36,7 @@ void main() {
theme: kThemeDataLight, theme: kThemeDataLight,
home: Scaffold( home: Scaffold(
body: SendRequestButton( body: SendRequestButton(
selectedId: '1', isWorking: false,
sentRequestId: null,
onTap: () { onTap: () {
changedValue = 'Send'; changedValue = 'Send';
}, },
@ -55,7 +54,8 @@ void main() {
expect(changedValue, 'Send'); expect(changedValue, 'Send');
}); });
testWidgets('Testing for Send Request button when sentRequestId is not null', testWidgets(
'Testing for Send Request button when RequestModel is viewed and is waiting for response',
(tester) async { (tester) async {
await tester.pumpWidget( await tester.pumpWidget(
MaterialApp( MaterialApp(
@ -63,32 +63,7 @@ void main() {
theme: kThemeDataLight, theme: kThemeDataLight,
home: Scaffold( home: Scaffold(
body: SendRequestButton( body: SendRequestButton(
selectedId: '1', isWorking: true,
sentRequestId: '2',
onTap: () {},
),
),
),
);
expect(find.byIcon(Icons.send), findsNothing);
expect(find.text(kLabelBusy), findsOneWidget);
final button1 = find.byType(FilledButton);
expect(button1, findsOneWidget);
expect(tester.widget<FilledButton>(button1).enabled, isFalse);
});
testWidgets('Testing for Send Request button when sentRequestId = selectedId',
(tester) async {
await tester.pumpWidget(
MaterialApp(
title: 'Send Request button',
theme: kThemeDataLight,
home: Scaffold(
body: SendRequestButton(
selectedId: '1',
sentRequestId: '1',
onTap: () {}, onTap: () {},
), ),
), ),

View File

@ -17,7 +17,7 @@ void main() {
SidebarRequestCard( SidebarRequestCard(
id: '23', id: '23',
selectedId: '2', selectedId: '2',
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: HTTPVerb.get, method: HTTPVerb.get,
onTap: () { onTap: () {
changedValue = 'Single Tapped'; changedValue = 'Single Tapped';
@ -34,11 +34,11 @@ void main() {
expect(find.byType(InkWell), findsOneWidget); expect(find.byType(InkWell), findsOneWidget);
expect(find.text('api.foss42.com'), findsOneWidget); expect(find.text('api.apidash.dev'), findsOneWidget);
expect(find.widgetWithText(SizedBox, 'api.foss42.com'), findsOneWidget); expect(find.widgetWithText(SizedBox, 'api.apidash.dev'), findsOneWidget);
expect(find.widgetWithText(Card, 'api.foss42.com'), findsOneWidget); expect(find.widgetWithText(Card, 'api.apidash.dev'), findsOneWidget);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
var tappable = find.widgetWithText(Card, 'api.foss42.com'); var tappable = find.widgetWithText(Card, 'api.apidash.dev');
await tester.tap(tappable); await tester.tap(tappable);
await tester.pumpAndSettle(const Duration(seconds: 2)); await tester.pumpAndSettle(const Duration(seconds: 2));
expect(changedValue, 'Single Tapped'); expect(changedValue, 'Single Tapped');
@ -63,7 +63,7 @@ void main() {
id: '2', id: '2',
selectedId: '2', selectedId: '2',
editRequestId: '2', editRequestId: '2',
url: 'https://api.foss42.com', url: 'https://api.apidash.dev',
method: HTTPVerb.get, method: HTTPVerb.get,
onTapOutsideNameEditor: () { onTapOutsideNameEditor: () {
changedValue = 'Tapped Outside'; changedValue = 'Tapped Outside';

View File

@ -9,7 +9,7 @@ void main() {
String code = r'''import 'package:http/http.dart' as http; String code = r'''import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/country/codes'); var uri = Uri.parse('https://api.apidash.dev/country/codes');
final response = await http.get(uri); final response = await http.get(uri);

View File

@ -9,7 +9,7 @@ void main() {
String code = r'''import 'package:http/http.dart' as http; String code = r'''import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/country/codes'); var uri = Uri.parse('https://api.apidash.dev/country/codes');
final response = await http.get(uri); final response = await http.get(uri);

View File

@ -1,16 +1,85 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:apidash/widgets/markdown.dart'; import 'package:apidash/widgets/markdown.dart';
void main() { void main() {
testWidgets('Testing CustomMarkdown', (tester) async { group('CustomMarkdown Widget Tests', () {
const markdown = CustomMarkdown(data: """Is a markdown ~`star on github`~ testWidgets('Testing CustomMarkdown buttons and tags renders',
(tester) async {
const markdown = CustomMarkdown(
data: """Is a markdown ~`star on github`~
#br #br
#br #br
~`github repo`~ ~`Discord Server`~"""); ~`github repo`~ ~`Discord Server`~""",
await tester.pumpWidget(markdown); );
//expectTextStrings(tester.allWidgets, <String>['Data1']); await tester.pumpWidget(const MaterialApp(home: markdown));
}, skip: true);
expect(find.byIcon(Icons.star), findsOneWidget);
expect(find.text("star on github"), findsOneWidget);
expect(find.byIcon(Icons.discord), findsOneWidget);
expect(find.text("Discord Server"), findsOneWidget);
expect(find.byIcon(Icons.code_rounded), findsOneWidget);
expect(find.text("github repo"), findsOneWidget);
expect(find.text('#br'), findsNothing);
});
testWidgets('CustomMarkdown renders correctly',
(WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(
home: CustomMarkdown(
data: '# Hello World\nThis is some *markdown* text.',
),
));
final headlineTextFinder = find.text('Hello World');
final markdownTextFinder = find.text('This is some markdown text.');
expect(headlineTextFinder, findsOneWidget);
expect(markdownTextFinder, findsOneWidget);
});
testWidgets('CustomMarkdown has proper text rendered',
(WidgetTester tester) async {
await tester.pumpWidget(MaterialApp(
home: GestureDetector(
child: const CustomMarkdown(
data: '[Link Text](https://apidash.dev/)',
),
),
));
await tester.tap(find.text('Link Text'));
await tester.pump();
expect(find.text('Link Text'), findsOneWidget);
expect(find.text('https://apidash.dev/'), findsNothing);
});
testWidgets('CustomMarkdown creates hyperlink',
(WidgetTester tester) async {
bool linkTapped = false;
await tester.pumpWidget(MaterialApp(
home: CustomMarkdown(
data: '[Link Text](https://apidash.dev/)',
onTapLink: (text, href, title) {
linkTapped = true;
expect(text, 'Link Text');
expect(href, 'https://apidash.dev/');
},
),
));
expect(find.byType(Markdown), findsOneWidget);
final markdownWidget = tester.widget<Markdown>(find.byType(Markdown));
expect(markdownWidget.data, '[Link Text](https://apidash.dev/)');
await tester.tap(find.text('Link Text'));
expect(linkTapped, true);
});
});
} }

View File

@ -201,7 +201,7 @@ void main() {
RequestModel requestModel = const RequestModel( RequestModel requestModel = const RequestModel(
id: '1', id: '1',
method: HTTPVerb.post, method: HTTPVerb.post,
url: 'api.foss42.com/case/lower', url: 'api.apidash.dev/case/lower',
name: 'foss42 api', name: 'foss42 api',
requestHeaders: [ requestHeaders: [
NameValueModel(name: 'content-length', value: '18'), NameValueModel(name: 'content-length', value: '18'),
@ -372,7 +372,7 @@ void main() {
String code = r'''import 'package:http/http.dart' as http; String code = r'''import 'package:http/http.dart' as http;
void main() async { void main() async {
var uri = Uri.parse('https://api.foss42.com/country/codes'); var uri = Uri.parse('https://api.apidash.dev/country/codes');
final response = await http.get(uri); final response = await http.get(uri);

View File

@ -57,4 +57,41 @@ void main() {
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text('entering 123 for cell field'), findsOneWidget); expect(find.text('entering 123 for cell field'), findsOneWidget);
}); });
testWidgets('URL Field sends request on enter keystroke', (tester) async {
bool wasSubmitCalled = false;
void testSubmit(String val) {
wasSubmitCalled = true;
}
await tester.pumpWidget(
MaterialApp(
title: 'URL Field',
theme: kThemeDataDark,
home: Scaffold(
body: Column(children: [
URLField(
selectedId: '2',
onFieldSubmitted: testSubmit,
)
]),
),
),
);
// ensure URLField is blank
expect(find.byType(TextFormField), findsOneWidget);
expect(find.textContaining('Enter API endpoint '), findsOneWidget);
expect(wasSubmitCalled, false);
// modify value and press enter
var txtForm = find.byKey(const Key("url-2"));
await tester.enterText(txtForm, 'entering 123');
await tester.testTextInput.receiveAction(TextInputAction.done);
await tester.pump();
// check if value was updated
expect(wasSubmitCalled, true);
});
} }