network_module.dart 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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_stream_api.dart';
  6. import '../data/consts/constants.dart';
  7. import '../utils/stream_dio_log_interceptor.dart';
  8. import '../data/consts/build_config.dart';
  9. @module
  10. abstract class NetworkModule {
  11. @singleton
  12. @Named("defaultDio")
  13. Dio createDefaultDio() {
  14. Dio dio = Dio(BaseOptions());
  15. dio.interceptors.add(
  16. PrettyDioLogger(
  17. requestHeader: true,
  18. requestBody: true,
  19. responseBody: true,
  20. responseHeader: false,
  21. error: true,
  22. compact: true,
  23. enabled: BuildConfig.isDebug,
  24. ),
  25. );
  26. return dio;
  27. }
  28. @singleton
  29. @Named("streamDio")
  30. Dio createStreamDio() {
  31. Dio streamDio = Dio(
  32. BaseOptions(
  33. responseType: ResponseType.stream,
  34. headers: {
  35. 'Content-Type': 'application/json',
  36. 'Accept': 'text/event-stream, application/json',
  37. },
  38. ),
  39. );
  40. streamDio.interceptors.add(StreamDioLogInterceptor());
  41. return streamDio;
  42. }
  43. static Dio _createFileDio() {
  44. Dio dio = Dio(
  45. BaseOptions(
  46. sendTimeout: const Duration(seconds: 15),
  47. receiveTimeout: const Duration(seconds: 15),
  48. ),
  49. );
  50. dio.interceptors.add(
  51. PrettyDioLogger(
  52. requestHeader: true,
  53. requestBody: true,
  54. responseBody: true,
  55. responseHeader: true,
  56. enabled: BuildConfig.isDebug,
  57. ),
  58. );
  59. return dio;
  60. }
  61. @singleton
  62. AtmobApi provideAtmobApi(@Named("defaultDio") Dio dio) {
  63. return AtmobApi(dio, baseUrl: Constants.baseUrl);
  64. }
  65. @singleton
  66. AtmobStreamApi provideAtmobStreamApi(@Named("streamDio") Dio streamDio) {
  67. return AtmobStreamApi(streamDio, baseUrl: Constants.baseUrl);
  68. }
  69. }
  70. final fileDio = NetworkModule._createFileDio();