1
- import request = require ( 'request' ) ;
1
+ import * as request from 'request' ;
2
2
import { Writable } from 'stream' ;
3
-
4
3
import { KubeConfig } from './config' ;
4
+ import { HttpError , ObjectSerializer } from './gen/api' ;
5
5
6
6
export interface LogOptions {
7
7
/**
@@ -51,14 +51,37 @@ export class Log {
51
51
this . config = config ;
52
52
}
53
53
54
+ public async log (
55
+ namespace : string ,
56
+ podName : string ,
57
+ containerName : string ,
58
+ stream : Writable ,
59
+ options ?: LogOptions ,
60
+ ) : Promise < request . Request > ;
61
+ /** @deprecated done callback is deprecated */
54
62
public async log (
55
63
namespace : string ,
56
64
podName : string ,
57
65
containerName : string ,
58
66
stream : Writable ,
59
67
done : ( err : any ) => void ,
60
- options : LogOptions = { } ,
68
+ options ?: LogOptions ,
69
+ ) : Promise < request . Request > ;
70
+ public async log (
71
+ namespace : string ,
72
+ podName : string ,
73
+ containerName : string ,
74
+ stream : Writable ,
75
+ doneOrOptions ?: ( ( err : any ) => void ) | LogOptions ,
76
+ options ?: LogOptions ,
61
77
) : Promise < request . Request > {
78
+ let done : ( err : any ) => void = ( ) => undefined ;
79
+ if ( typeof doneOrOptions === 'function' ) {
80
+ done = doneOrOptions ;
81
+ } else {
82
+ options = doneOrOptions ;
83
+ }
84
+
62
85
const path = `/api/v1/namespaces/${ namespace } /pods/${ podName } /log` ;
63
86
64
87
const cluster = this . config . getCurrentCluster ( ) ;
@@ -77,20 +100,24 @@ export class Log {
77
100
} ;
78
101
await this . config . applyToRequest ( requestOptions ) ;
79
102
80
- const req = request ( requestOptions , ( error , response , body ) => {
81
- if ( error ) {
82
- done ( error ) ;
83
- } else if ( response && response . statusCode !== 200 ) {
84
- done ( body ) ;
85
- } else {
86
- done ( null ) ;
87
- }
88
- } ) . on ( 'response' , ( response ) => {
89
- if ( response . statusCode === 200 ) {
90
- req . pipe ( stream ) ;
91
- }
103
+ return new Promise ( ( resolve , reject ) => {
104
+ const req = request ( requestOptions , ( error , response , body ) => {
105
+ if ( error ) {
106
+ reject ( error ) ;
107
+ done ( error ) ;
108
+ } else if ( response . statusCode !== 200 ) {
109
+ const deserializedBody = ObjectSerializer . deserialize ( JSON . parse ( body ) , 'V1Status' ) ;
110
+ reject ( new HttpError ( response , deserializedBody , response . statusCode ) ) ;
111
+ done ( body ) ;
112
+ } else {
113
+ done ( null ) ;
114
+ }
115
+ } ) . on ( 'response' , ( response ) => {
116
+ if ( response . statusCode === 200 ) {
117
+ req . pipe ( stream ) ;
118
+ resolve ( req ) ;
119
+ }
120
+ } ) ;
92
121
} ) ;
93
-
94
- return req ;
95
122
}
96
123
}
0 commit comments