@@ -11,23 +11,58 @@ See the License for the specific language governing permissions and
11
11
limitations under the License.
12
12
*/
13
13
14
- import IClientJobs from "../../../interfaces/Client/IClientJobs" ;
14
+ import IClientJobs , { JobSchedule } from "../../../interfaces/Client/IClientJobs" ;
15
15
import HTTPClient from "./HTTPClient" ;
16
+ import { Logger } from "../../../logger/Logger" ;
17
+ import { THTTPExecuteParams } from "../../../types/http/THTTPExecuteParams.type" ;
16
18
17
19
export default class HTTPClientJobs implements IClientJobs {
18
20
21
+ private readonly logger : Logger ;
19
22
private readonly httpClient : HTTPClient ;
20
23
21
24
constructor ( httpClient : HTTPClient ) {
25
+ this . logger = new Logger ( "HTTPClient" , "Jobs" , httpClient . options . logger ) ;
22
26
this . httpClient = httpClient ;
23
27
}
24
28
25
- schedule ( ) : Promise < unknown > {
26
- throw new Error ( "Not yet!" ) ;
29
+ async schedule (
30
+ jobName : string ,
31
+ data : object | string ,
32
+ schedule : JobSchedule | null = null ,
33
+ dueTime : string | Date | null = null ,
34
+ repeats : number | null = null ,
35
+ ttl : string | null = null
36
+ ) : Promise < void > {
37
+
38
+ try {
39
+ await this . httpClient . executeWithApiVersion (
40
+ "v1.0-alpha1" ,
41
+ `/jobs/${ jobName } ` ,
42
+ {
43
+ method : "POST" ,
44
+ body : {
45
+ data,
46
+ schedule,
47
+ dueTime,
48
+ repeats,
49
+ ttl,
50
+ } ,
51
+ headers : {
52
+ "content-type" : "application/json" ,
53
+ } ,
54
+ } as THTTPExecuteParams
55
+ ) ;
56
+ }
57
+ catch ( e : any ) {
58
+ this . logger . error ( e ) ;
59
+ }
27
60
}
61
+
28
62
get ( ) : Promise < unknown > {
29
63
throw new Error ( "Not yet!" ) ;
30
64
}
65
+
31
66
delete ( ) : Promise < unknown > {
32
67
throw new Error ( "Not yet!" ) ;
33
68
}
0 commit comments