11import { ClientRequest } from 'http' ;
22import { EventEmitter } from 'events' ;
3- import { Readable } from 'stream' ;
4- import axios , { AxiosRequestConfig , AxiosResponse , Canceler } from 'axios' ;
3+ import axios , { AxiosRequestConfig } from 'axios' ;
54
6- import { request , streamRequest } from '../services/request' ;
7- import { ProxyManager , getProxy } from '../services/proxy' ;
5+ import { request } from '../services/request' ;
86import { EnvironmentConfig } from '../api' ;
97
108export enum Methods {
@@ -18,19 +16,12 @@ export enum Methods {
1816export class INXTRequest extends EventEmitter {
1917 private req : Promise < any > | ClientRequest | undefined ;
2018 private config : EnvironmentConfig ;
21- private cancel : Canceler ;
2219 private useProxy : boolean ;
23- private streaming = false ;
2420
2521 method : Methods ;
2622 targetUrl : string ;
2723 params : AxiosRequestConfig ;
2824
29- static Events = {
30- UploadProgress : 'upload-progress' ,
31- DownloadProgress : 'download-progress' ,
32- } ;
33-
3425 constructor (
3526 config : EnvironmentConfig ,
3627 method : Methods ,
@@ -45,14 +36,11 @@ export class INXTRequest extends EventEmitter {
4536 this . targetUrl = targetUrl ;
4637 this . useProxy = useProxy ?? false ;
4738 this . params = params ;
48-
49- this . cancel = ( ) => null ;
5039 }
5140
5241 start < K > ( ) : Promise < K > {
5342 // TODO: Abstract from axios
5443 const source = axios . CancelToken . source ( ) ;
55- this . cancel = source . cancel ;
5644
5745 const cancelToken = source . token ;
5846
@@ -66,67 +54,4 @@ export class INXTRequest extends EventEmitter {
6654
6755 return this . req ;
6856 }
69-
70- async stream < K > ( content : Readable , size : number ) : Promise < AxiosResponse < K > > ;
71- // eslint-disable-next-line @typescript-eslint/no-unused-vars
72- async stream < K > ( ) : Promise < Readable > ;
73- async stream < K > ( content ?: any , size ?: number ) : Promise < any > {
74- if ( size ) {
75- return this . postStream < K > ( content , size ) ;
76- }
77-
78- return this . getStream ( ) ;
79- }
80-
81- private async getStream ( ) : Promise < Readable > {
82- this . streaming = true ;
83-
84- let proxy : ProxyManager | undefined ;
85-
86- if ( this . useProxy ) {
87- proxy = await getProxy ( ) ;
88- }
89-
90- const targetUrl = `${ proxy && proxy . url ? proxy . url + '/' : '' } ${ this . targetUrl } ` ;
91-
92- return streamRequest ( targetUrl ) ;
93- }
94-
95- private async postStream < K > ( content : Readable , size : number ) : Promise < K > {
96- this . streaming = true ;
97-
98- let proxy : ProxyManager | undefined ;
99-
100- if ( this . useProxy ) {
101- proxy = await getProxy ( ) ;
102- }
103-
104- const targetUrl = `${ proxy && proxy . url ? proxy . url + '/' : '' } ${ this . targetUrl } ` ;
105-
106- return axios
107- . post < K > ( targetUrl , content , {
108- maxContentLength : Infinity ,
109- headers : {
110- 'Content-Type' : 'application/octet-stream' ,
111- 'Content-Length' : size . toString ( ) ,
112- } ,
113- } )
114- . then ( ( res ) => {
115- proxy ?. free ( ) ;
116-
117- return res as unknown as K ;
118- } ) ;
119- }
120-
121- abort ( ) {
122- if ( this . streaming && this . req instanceof ClientRequest ) {
123- return this . req . destroy ( ) ;
124- }
125-
126- this . cancel ( ) ;
127- }
128-
129- isCancelled ( err : Error ) : boolean {
130- return axios . isCancel ( err ) ;
131- }
13257}
0 commit comments