import 'dart:convert'; import 'package:dart_eval/dart_eval_bridge.dart'; import 'package:dart_eval/stdlib/core.dart'; import 'package:flutter/foundation.dart'; import 'package:http_interceptor/http_interceptor.dart'; import 'package:mangayomi/eval/dart/bridge/m_source.dart'; import 'package:mangayomi/eval/model/m_bridge.dart'; import 'package:mangayomi/services/http/m_client.dart'; /// dart_eval wrapper for [InterceptedClient] class $Client implements $Instance { $Client.wrap(this.$value); @override final InterceptedClient $value; late final $Instance _superclass = $Object($value); /// Compile-time bridged type reference for [$InterceptedClient] static const $type = BridgeTypeRef(BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'Client')); /// Compile-time bridged class declaration for [$InterceptedClient] static const $declaration = BridgeClassDef(BridgeClassType($type), constructors: { '': BridgeConstructorDef(BridgeFunctionDef(returns: BridgeTypeAnnotation($type), params: [ BridgeParameter('source', BridgeTypeAnnotation($MSource.$type), true), BridgeParameter('reqcopyWith', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), true), ], namedParams: [])) }, methods: { 'get': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [$Response.$type])), params: [ BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), false), ], namedParams: [ BridgeParameter( 'headers', BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), nullable: true), true), ])), 'post': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [$Response.$type])), params: [ BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), false), ], namedParams: [ BridgeParameter( 'headers', BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), nullable: true), true), BridgeParameter('body', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.object), nullable: true), true), BridgeParameter( 'encoding', BridgeTypeAnnotation(BridgeTypeRef(ConvertTypes.encoding), nullable: true), true), ])), 'put': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [$Response.$type])), params: [ BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), false), ], namedParams: [ BridgeParameter( 'headers', BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), nullable: true), true), BridgeParameter('body', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.object), nullable: true), true), BridgeParameter( 'encoding', BridgeTypeAnnotation(BridgeTypeRef(ConvertTypes.encoding), nullable: true), true), ])), 'delete': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [$Response.$type])), params: [ BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), false), ], namedParams: [ BridgeParameter( 'headers', BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), nullable: true), true), BridgeParameter('body', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.object), nullable: true), true), BridgeParameter( 'encoding', BridgeTypeAnnotation(BridgeTypeRef(ConvertTypes.encoding), nullable: true), true), ])), 'patch': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [$Response.$type])), params: [ BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), false), ], namedParams: [ BridgeParameter( 'headers', BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), nullable: true), true), BridgeParameter('body', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.object), nullable: true), true), BridgeParameter( 'encoding', BridgeTypeAnnotation(BridgeTypeRef(ConvertTypes.encoding), nullable: true), true), ])), 'read': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.string)])), params: [ BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), false), ], namedParams: [ BridgeParameter( 'headers', BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), nullable: true), true), ])), 'readBytes': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [ BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.int)]) ])), params: [ BridgeParameter('url', BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.uri)), false), ], namedParams: [ BridgeParameter( 'headers', BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), nullable: true), true), ])), 'send': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.future, [BridgeTypeRef(CoreTypes.list)])), params: [ BridgeParameter('request', BridgeTypeAnnotation($BaseRequest.$type), false), ])), 'close': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.voidType)), )), }, wrap: true); static $Client $new(Runtime runtime, $Value? target, List<$Value?> args) { final reqcopyWith = args[1]?.$value == null ? null : (jsonDecode(args[1]!.$value) as Map).map((key, value) => MapEntry(key.toString(), value)); return $Client.wrap( MClient.init(source: args[0]?.$value, reqcopyWith: reqcopyWith), ); } @override $Value? $getProperty(Runtime runtime, String identifier) { switch (identifier) { case 'get': return __get; case 'post': return __post; case 'put': return __put; case 'delete': return __delete; case 'patch': return __patch; case 'read': return __read; case 'readBytes': return __readBytes; case 'close': return __close; default: return _superclass.$getProperty(runtime, identifier); } } static const $Function __get = $Function(_get); static $Value? _get(Runtime runtime, $Value? target, List<$Value?> args) { final url = args[0]!.$value as Uri; final headers = _toMapString(args[1]?.$value); final request = (target!.$value as InterceptedClient).get(url, headers: headers); return $Future.wrap(request.then((value) => $Response.wrap(value)).onErrorMessage()); } static const $Function __post = $Function(_post); static $Value? _post(Runtime runtime, $Value? target, List<$Value?> args) { final url = args[0]!.$value as Uri; final headers = _toMapString(args[1]?.$value); final body = _toBodyObject(args[2]?.$value); final encoding = args[3]?.$value as Encoding?; final request = (target!.$value as InterceptedClient).post(url, headers: headers, body: body, encoding: encoding); return $Future.wrap(request.then((value) => $Response.wrap(value)).onErrorMessage()); } static const $Function __put = $Function(_put); static $Value? _put(Runtime runtime, $Value? target, List<$Value?> args) { final url = args[0]!.$value as Uri; final headers = _toMapString(args[1]?.$value); final body = _toBodyObject(args[2]?.$value); final encoding = args[3]?.$value as Encoding?; final request = (target!.$value as InterceptedClient).put(url, headers: headers, body: body, encoding: encoding); return $Future.wrap(request.then((value) => $Response.wrap(value)).onErrorMessage()); } static const $Function __delete = $Function(_delete); static $Value? _delete(Runtime runtime, $Value? target, List<$Value?> args) { final url = args[0]!.$value as Uri; final headers = _toMapString(args[1]?.$value); final body = _toBodyObject(args[2]?.$value); final encoding = args[3]?.$value as Encoding?; final request = (target!.$value as InterceptedClient).delete(url, headers: headers, body: body, encoding: encoding); return $Future.wrap(request.then((value) => $Response.wrap(value)).onErrorMessage()); } static const $Function __patch = $Function(_patch); static $Value? _patch(Runtime runtime, $Value? target, List<$Value?> args) { final url = args[0]!.$value as Uri; final headers = _toMapString(args[1]?.$value); final body = _toBodyObject(args[2]?.$value); final encoding = args[3]?.$value as Encoding?; final request = (target!.$value as InterceptedClient).patch(url, headers: headers, body: body, encoding: encoding); return $Future.wrap(request.then((value) => $Response.wrap(value)).onErrorMessage()); } static const $Function __read = $Function(_read); static $Value? _read(Runtime runtime, $Value? target, List<$Value?> args) { final url = args[0]!.$value as Uri; final headers = _toMapString(args[1]?.$value); final request = (target!.$value as InterceptedClient).read(url, headers: headers); return $Future.wrap(request.then((value) => $String(value)).onErrorMessage()); } static const $Function __readBytes = $Function(_readBytes); static $Value? _readBytes(Runtime runtime, $Value? target, List<$Value?> args) { final url = args[0]!.$value as Uri; final headers = (args[1]?.$value as Map<$Value, $Value>?) ?.map((key, value) => MapEntry((key.$reified).toString(), (value.$reified).toString())); final request = (target!.$value as InterceptedClient).readBytes(url, headers: headers); return $Future.wrap(request.then((value) => $List.wrap(value)).onErrorMessage()); } static const $Function __close = $Function(_close); static $Value? _close(Runtime runtime, $Value? target, List<$Value?> args) { (target!.$value as InterceptedClient).close(); return null; } @override get $reified => $value; @override int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); @override void $setProperty(Runtime runtime, String identifier, $Value value) {} } /// dart_eval wrapper for [ClientRequest] class $BaseRequest implements $Instance { $BaseRequest.wrap(this.$value) : _superclass = $Object($value); @override final BaseRequest $value; /// Compile-time bridged type reference for [$BaseRequest] static const $type = BridgeTypeRef(BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'BaseRequest')); /// Compile-time bridged class declaration for [$BaseRequest] static const $declaration = BridgeClassDef(BridgeClassType($type, isAbstract: true), constructors: {}, getters: { 'contentLength': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int), nullable: true), )), 'finalized': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), )), 'followRedirects': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), )), 'headers': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), ), )), 'maxRedirects': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), )), 'method': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.string), ), )), 'persistentConnection': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.string), ), )), 'url': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.uri), ), )), }, wrap: true); final $Instance _superclass; @override $Value? $getProperty(Runtime runtime, String identifier) { switch (identifier) { case 'contentLength': final res = $value.contentLength; return res == null ? const $null() : $int(res); case 'finalized': return $bool($value.persistentConnection); case 'followRedirects': return $bool($value.persistentConnection); case 'headers': return $Map.wrap($value.headers); case 'maxRedirects': return $int($value.maxRedirects); case 'method': return $String($value.method); case 'persistentConnection': return $bool($value.persistentConnection); case 'url': return $Uri.wrap($value.url); default: return _superclass.$getProperty(runtime, identifier); } } @override get $reified => $value; @override int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); @override void $setProperty(Runtime runtime, String identifier, $Value value) { _superclass.$setProperty(runtime, identifier, value); } } /// dart_eval wrapper for [Response] class $Response implements $Instance { $Response.wrap(this.$value) : _superclass = $Object($value); @override final Response $value; /// Compile-time bridged type reference for [$Response] static const $type = BridgeTypeRef(BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'Response')); /// Compile-time bridged class declaration for [$Response] static const $declaration = BridgeClassDef( BridgeClassType($type), constructors: {'': BridgeConstructorDef(BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))}, getters: { 'body': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string)), )), 'bodyBytes': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.list, [BridgeTypeRef(CoreTypes.int)])), )), 'contentLength': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int), nullable: true), )), 'headers': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), ), )), 'isRedirect': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), )), 'persistentConnection': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), )), 'reasonPhrase': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string), nullable: true), )), 'statusCode': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), )), 'request': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation($BaseRequest.$type, nullable: true), )), }, wrap: true, ); final $Instance _superclass; @override $Value? $getProperty(Runtime runtime, String identifier) { switch (identifier) { case 'body': return $String($value.body); case 'bodyBytes': return $List.wrap(($value.bodyBytes).map((e) => $int(e)).toList()); case 'contentLength': final res = $value.contentLength; return res == null ? const $null() : $int(res); case 'headers': return $Map.wrap($value.headers); case 'isRedirect': return $bool($value.isRedirect); case 'persistentConnection': return $bool($value.persistentConnection); case 'reasonPhrase': final res = $value.reasonPhrase; return res == null ? const $null() : $String(res); case 'statusCode': return $int($value.statusCode); case 'request': final res = $value.request; return res == null ? const $null() : $BaseRequest.wrap(res); default: return _superclass.$getProperty(runtime, identifier); } } @override get $reified => $value; @override int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); @override void $setProperty(Runtime runtime, String identifier, $Value value) { _superclass.$setProperty(runtime, identifier, value); } } /// dart_eval wrapper for [StreamedResponse] class $StreamedResponse implements $Instance { $StreamedResponse.wrap(this.$value) : _superclass = $Object($value); @override final StreamedResponse $value; /// Compile-time bridged type reference for [$StreamedResponse] static const $type = BridgeTypeRef(BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'StreamedResponse')); /// Compile-time bridged class declaration for [$StreamedResponse] static const $declaration = BridgeClassDef( BridgeClassType($type), constructors: {'': BridgeConstructorDef(BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))}, getters: { 'stream': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation($ByteStream.$type), )), 'contentLength': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int), nullable: true), )), 'headers': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation( BridgeTypeRef(CoreTypes.map, [BridgeTypeRef(CoreTypes.string), BridgeTypeRef(CoreTypes.string)]), ), )), 'isRedirect': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), )), 'persistentConnection': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.bool)), )), 'reasonPhrase': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.string), nullable: true), )), 'statusCode': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation(BridgeTypeRef(CoreTypes.int)), )), 'request': BridgeMethodDef(BridgeFunctionDef( returns: BridgeTypeAnnotation($BaseRequest.$type, nullable: true), )), }, wrap: true, ); final $Instance _superclass; @override $Value? $getProperty(Runtime runtime, String identifier) { switch (identifier) { case 'stream': return $ByteStream.wrap($value.stream); case 'contentLength': final res = $value.contentLength; return res == null ? const $null() : $int(res); case 'headers': return $Map.wrap($value.headers); case 'isRedirect': return $bool($value.isRedirect); case 'persistentConnection': return $bool($value.persistentConnection); case 'reasonPhrase': final res = $value.reasonPhrase; return res == null ? const $null() : $String(res); case 'statusCode': return $int($value.statusCode); case 'request': final res = $value.request; return res == null ? const $null() : $BaseRequest.wrap(res); default: return _superclass.$getProperty(runtime, identifier); } } @override get $reified => $value; @override int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); @override void $setProperty(Runtime runtime, String identifier, $Value value) { _superclass.$setProperty(runtime, identifier, value); } } /// dart_eval wrapper for [ByteStream] class $ByteStream implements $Instance { $ByteStream.wrap(this.$value) : _superclass = $Object($value); @override final ByteStream $value; /// Compile-time bridged type reference for [$ByteStream] static const $type = BridgeTypeRef(BridgeTypeSpec('package:mangayomi/bridge_lib.dart', 'ByteStream')); /// Compile-time bridged class declaration for [$ByteStream] static const $declaration = BridgeClassDef( BridgeClassType($type), constructors: {'': BridgeConstructorDef(BridgeFunctionDef(returns: BridgeTypeAnnotation($type)))}, getters: {}, wrap: true, ); final $Instance _superclass; @override $Value? $getProperty(Runtime runtime, String identifier) { switch (identifier) { default: return _superclass.$getProperty(runtime, identifier); } } @override get $reified => $value; @override int $getRuntimeType(Runtime runtime) => runtime.lookupType($type.spec!); @override void $setProperty(Runtime runtime, String identifier, $Value value) { _superclass.$setProperty(runtime, identifier, value); } } Map? _toMapString(Map<$Value, $Value>? value) { return value?.map((key, value) => MapEntry((key.$reified).toString(), (value.$reified).toString())); } Object? _toBodyObject(Object? value) { Object? body; if (value is Map<$Value, $Value>) { body = value.map((key, value) => MapEntry((key.$reified).toString(), (value.$reified).toString())); } else if (value is List<$Value>) { body = value.map((e) => e.$reified).toList(); } else { body = value; } return body; } extension FutureResponseExtension on Future { Future onErrorMessage() { onError((error, stackTrace) { if (kDebugMode) { print("Http error: $error"); } botToast(error.toString()); throw error.toString(); }); return this; } }