network_module.dart 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. import 'package:dio/dio.dart';
  2. import 'package:injectable/injectable.dart';
  3. import 'package:keyboard/data/api/atmob_api.dart';
  4. import 'package:pretty_dio_logger/pretty_dio_logger.dart';
  5. import '../data/api/atmob_file_api.dart';
  6. import '../data/api/atmob_stream_api.dart';
  7. import '../data/consts/constants.dart';
  8. import '../utils/stream_dio_log_interceptor.dart';
  9. import '../data/consts/build_config.dart';
  10. @module
  11. abstract class NetworkModule {
  12. @singleton
  13. @Named("defaultDio")
  14. Dio createDefaultDio() {
  15. Dio dio = Dio(BaseOptions());
  16. dio.interceptors.add(
  17. PrettyDioLogger(
  18. requestHeader: true,
  19. requestBody: true,
  20. responseBody: true,
  21. responseHeader: false,
  22. error: true,
  23. compact: true,
  24. enabled: BuildConfig.isDebug,
  25. ),
  26. );
  27. return dio;
  28. }
  29. @singleton
  30. @Named("fileDio")
  31. Dio createFileDio() {
  32. Dio dio = Dio(
  33. BaseOptions(
  34. sendTimeout: const Duration(seconds: 15),
  35. receiveTimeout: const Duration(seconds: 15),
  36. ),
  37. );
  38. dio.interceptors.add(
  39. PrettyDioLogger(
  40. requestHeader: true,
  41. requestBody: true,
  42. responseBody: true,
  43. responseHeader: false,
  44. error: true,
  45. compact: true,
  46. enabled: BuildConfig.isDebug,
  47. ),
  48. );
  49. return dio;
  50. }
  51. @singleton
  52. @Named("streamDio")
  53. Dio createStreamDio() {
  54. Dio streamDio = Dio(
  55. BaseOptions(
  56. responseType: ResponseType.stream,
  57. headers: {
  58. 'Content-Type': 'application/json',
  59. 'Accept': 'text/event-stream, application/json',
  60. },
  61. ),
  62. );
  63. streamDio.interceptors.add(StreamDioLogInterceptor());
  64. return streamDio;
  65. }
  66. @singleton
  67. AtmobApi provideAtmobApi(@Named("defaultDio") Dio dio) {
  68. return AtmobApi(dio, baseUrl: Constants.baseUrl);
  69. }
  70. @singleton
  71. AtmobFileApi provideAtmobFileApi(@Named("fileDio") Dio dio) {
  72. return AtmobFileApi(dio, baseUrl: Constants.baseUrl);
  73. }
  74. @singleton
  75. AtmobStreamApi provideAtmobStreamApi(@Named("streamDio") Dio streamDio) {
  76. return AtmobStreamApi(streamDio, baseUrl: Constants.baseUrl);
  77. }
  78. }