network_module.dart 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  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(BaseOptions(
  33. sendTimeout: const Duration(seconds: 15),
  34. receiveTimeout: const Duration(seconds: 15),
  35. ));
  36. dio.interceptors.add(
  37. PrettyDioLogger(
  38. requestHeader: true,
  39. requestBody: true,
  40. responseBody: true,
  41. responseHeader: false,
  42. error: true,
  43. compact: true,
  44. enabled: BuildConfig.isDebug,
  45. ),
  46. );
  47. return dio;
  48. }
  49. @singleton
  50. @Named("streamDio")
  51. Dio createStreamDio() {
  52. Dio streamDio = Dio(
  53. BaseOptions(
  54. responseType: ResponseType.stream,
  55. headers: {
  56. 'Content-Type': 'application/json',
  57. 'Accept': 'text/event-stream, application/json',
  58. },
  59. ),
  60. );
  61. streamDio.interceptors.add(StreamDioLogInterceptor());
  62. return streamDio;
  63. }
  64. @singleton
  65. AtmobApi provideAtmobApi(@Named("defaultDio") Dio dio) {
  66. return AtmobApi(dio, baseUrl: Constants.baseUrl);
  67. }
  68. @singleton
  69. AtmobFileApi provideAtmobFileApi(@Named("fileDio") Dio dio) {
  70. return AtmobFileApi(dio, baseUrl: Constants.baseUrl);
  71. }
  72. @singleton
  73. AtmobStreamApi provideAtmobStreamApi(@Named("streamDio") Dio streamDio) {
  74. return AtmobStreamApi(streamDio, baseUrl: Constants.baseUrl);
  75. }
  76. }