okdio 0.0.3 copy "okdio: ^0.0.3" to clipboard
okdio: ^0.0.3 copied to clipboard

outdated

okdio is an dio client generator using source_gen and inspired from retrofit based on chopper

example/main.dart

import 'dart:convert';
import 'dart:io';

import 'package:okdio/okdio.dart';
import 'package:okdio/src/interceptor.dart';
import 'definition.dart';
import 'package:rxdart/rxdart.dart';
import 'package:dio/dio.dart';
import 'json/person.dart';

main() async {
  print(1);
//  init();
  print(2);
  const bool inProduction = const bool.fromEnvironment("dart.vm.product"); //release == true
  print(inProduction);
  final chopper = ChopperClient(
      baseUrl: "http://mockserver",
      services: [
        // the generated service
//        MyService.create()
      ],
      onSendProgress: (int sent, int total) {
        print("$sent, $total");
      },
//      adapter: MockAdapter(),
      errorConverter: (DioError error) {
        print("Error Happend: type:${error.type}, status[${error.response?.statusCode}]");
//        switch(error.type) {
//          case DioErrorType.DEFAULT:
//            error.message = "网络出错啦";
//            break;
//          case DioErrorType.CANCEL:
//            error.message = "";
//            break;
//          case DioErrorType.CONNECT_TIMEOUT:
//            error.message = "连接超时";
//            break;
//          case DioErrorType.RECEIVE_TIMEOUT:
//            error.message = "网络超时";
//            break;
//          case DioErrorType.SEND_TIMEOUT:
//            error.message = "网络超时";
//            break;
//          case DioErrorType.RESPONSE:
//            int code = error.response.statusCode;
//            if (code >= 400 && code < 500) {
//              error.message = "客户端错误的请求";
//            } else if (code >= 500 && code < 700) {
//              error.message = "服务器发生错误";
//            }
//            break;
//        }
        return error;
      },
      iterable: <Interceptor>[
        InterceptorsWrapper(onRequest: (RequestOptions options) {
          print("head test");
          options.headers["MyHead"] = "head test";
        }),
        LogInterceptor(
            responseBody: false,
            requestHeader: !inProduction,
            request: !inProduction,
            requestBody: !inProduction,
            responseHeader: !inProduction,
            error: !inProduction),
        //CookieManager(CookieJar())
      ]);
  print(4);
//  var l = ()=>List<Person>();
  final myService = chopper.service<MyService>(MyService);

//  final response = await myService.getResourceAll4(UploadFileInfo(File(""), "1"));
//  response.listen((p) {
//    print(p["name"].p.p2.name);
//  }, onError: (e) {
//    print("onError $e");
//  });
//
//  final response2 = await myService.getResourceAll23();
//  response2.listen((p) {
//    print(p.body.name);
//    print(p.body.p2.name);
//    //print(p.body.p.p2.name);
//  }, onError: (e) {
//    print("onError $e");
//  });

//  final response4 = await myService.getResourceAll71();
//  response4.listen((p) {
//    print(p.p2[0].name);
//    //print(p[1].p2.name);
//    //print(p.body.p.p2.name);
//  }, onError: (e) {
//    print("onError $e");
//  });

//  final response3 = await myService.getResourceAll3();
//  response3.listen((p) {
//    print(p.body.name);
//    print(p.body.p2.name);
//    //print(p.body.p.p2.name);
//  }, onError: (e) {
//    print("onError $e");
//  });
//
//  myService.getResourceAll5().listen((d) {
//    print(d[0].name);
//  });
//
//  //Person<Person3, Per..n()son3>()..p=Person3();
//
//  List<int> l = [1, 2, 3];
//  print(l is List);


  chopper.dispose();
}

//class MockAdapter extends HttpClientAdapter {
//  static const String mockHost = "mockserver";
//  static const String mockBase = "http://$mockHost";
////  DefaultHttpClientAdapter _defaultHttpClientAdapter =
////  DefaultHttpClientAdapter();
//
//  @override
//  Future<ResponseBody> fetch(RequestOptions options,
//      Stream<List<int>> requestStream, Future cancelFuture) async {
//    Uri uri = options.uri;
////    if (uri.host == mockHost) {
////      print(uri.path);
////      switch (uri.path) {
////        case "/test":
////          return ResponseBody.fromString(
////            jsonEncode({
////              "index": 0,
////              "name": "mock",//{"path": uri.path}
////              "p":{
////                "index": 1,
////                "name": "mock2----",//{"path": uri.path}
////                 "p2":{
////                    "index": 1,
////                    "name": "mock3----2222222--",//{"path": uri.path}
////                  }
////              },
////              "p2":{
////                "index": 1,
////                "name": "mock344444------",//{"path": uri.path}
////              }
////            }),
////            200,
////            DioHttpHeaders.fromMap({
////              HttpHeaders.contentTypeHeader: ContentType.json,
////            }),
////          );
////        case "/test2":
////          return ResponseBody.fromString(
////            jsonEncode({
////              "name": {
////                "p":{
////                  "index": 1,
////                  "name": "mock2----",//{"path": uri.path}
////                  "p2":{
////                    "index": 1,
////                    "name": "mock3---vvvvv---",//{"path": uri.path}
////                  }
////                },
////                "p2":{
////                  "index": 1,
////                  "name": "mock3------",//{"path": uri.path}
////                }
////              },//{"path": uri.path}
////            }),
////            200,
////            DioHttpHeaders.fromMap({
////              HttpHeaders.contentTypeHeader: ContentType.json,
////            }),
////          );
////        case "/test12":
////          return ResponseBody.fromString(
////            jsonEncode({
////              "index": 0,
////              "name": "mock",//{"path": uri.path}
////
////              "p2":null,
////            }),
////            200,
////            DioHttpHeaders.fromMap({
////              HttpHeaders.contentTypeHeader: ContentType.json,
////            }),
////          );
////        case "/test42":
////          return ResponseBody.fromString(
////            jsonEncode({
////              "name":{
////                "index": 1,
////                "name": "mock344444------",//{"path": uri.path}
////                "hh":"---"
////              }
////            }),
////            200,
////            DioHttpHeaders.fromMap({
////              HttpHeaders.contentTypeHeader: ContentType.json,
////            }),
////          );
////        case "/test71":
////          return ResponseBody.fromString(
////            jsonEncode({
////              "name":"",
////              "p2":[{
////                "name":"hhhh"
////              }]
////            }),
////            200,
////            DioHttpHeaders.fromMap({
////              HttpHeaders.contentTypeHeader: ContentType.json,
////            }),
////          );
////        case "/test4":
////          return ResponseBody.fromString(
////            jsonEncode([{
////              "index": 0,
////              "name": "mock",//{"path": uri.path}
////              "p":{
////                "index": 1,
////                "name": "mocddddk344444------",//{"path": uri.path}
////              },
////              "p2":{
////                "index": 1,
////                "name": "mock344444------",//{"path": uri.path}
////              }
////            }, {
////              "index": 0,
////              "name": "4mock",//{"path": uri.path}
////              "p":{
////                "index": 1,
////                "name": "3mocddddk344444------",//{"path": uri.path}
////              },
////              "p2":{
////                "index": 1,
////                "name": "3mock344444------",//{"path": uri.path}
////              }
////            }]),
////            200,
////            DioHttpHeaders.fromMap({
////              HttpHeaders.contentTypeHeader: ContentType.json,
////            }),
////          );
////        case "/download":
////          return ResponseBody(
////            File("./README.MD").openRead(),
////            200,
////            DioHttpHeaders.fromMap({
////              HttpHeaders.contentLengthHeader: File("./README.MD").lengthSync(),
////            }),
////          );
////
////        case "/token":
////          {
////            var t = "ABCDEFGHIJKLMN".split("")..shuffle();
////            return ResponseBody.fromString(
////              jsonEncode({
////                "errCode": 0,
////                "data": {"token": t.join()}
////              }),
////              200,
////              DioHttpHeaders.fromMap({
////                HttpHeaders.contentTypeHeader: ContentType.json,
////              }),
////            );
////          }
////        default:
////          return ResponseBody.fromString("", 404, DioHttpHeaders());
////      }
////    }
//    return _defaultHttpClientAdapter.fetch(
//        options, requestStream, cancelFuture);
//  }
//}
0
likes
0
pub points
0%
popularity

Publisher

unverified uploader

okdio is an dio client generator using source_gen and inspired from retrofit based on chopper

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

dio, dson, logging, meta, rxdart

More

Packages that depend on okdio