1010using CloudConvert . API . Models . JobModels ;
1111using CloudConvert . API . Models . TaskModels ;
1212using CloudConvert . API . Models ;
13+ using System . Threading ;
1314
1415namespace CloudConvert . API
1516{
1617 public interface ICloudConvertAPI
1718 {
1819 #region Jobs
19- Task < ListResponse < JobResponse > > GetAllJobsAsync ( JobListFilter jobFilter ) ;
20- Task < Response < JobResponse > > CreateJobAsync ( JobCreateRequest request ) ;
21- Task < Response < JobResponse > > GetJobAsync ( string id ) ;
22- Task < Response < JobResponse > > WaitJobAsync ( string id ) ;
23- Task DeleteJobAsync ( string id ) ;
20+ Task < ListResponse < JobResponse > > GetAllJobsAsync ( JobListFilter jobFilter , CancellationToken cancellationToken = default ) ;
21+ Task < Response < JobResponse > > CreateJobAsync ( JobCreateRequest request , CancellationToken cancellationToken = default ) ;
22+ Task < Response < JobResponse > > GetJobAsync ( string id , CancellationToken cancellationToken = default ) ;
23+ Task < Response < JobResponse > > WaitJobAsync ( string id , CancellationToken cancellationToken = default ) ;
24+ Task DeleteJobAsync ( string id , CancellationToken cancellationToken = default ) ;
2425 #endregion
2526
2627 #region Tasks
27- Task < ListResponse < TaskResponse > > GetAllTasksAsync ( TaskListFilter jobFilter ) ;
28- Task < Response < TaskResponse > > CreateTaskAsync < T > ( string operation , T request ) ;
29- Task < Response < TaskResponse > > GetTaskAsync ( string id , string include = null ) ;
30- Task < Response < TaskResponse > > WaitTaskAsync ( string id ) ;
31- Task DeleteTaskAsync ( string id ) ;
28+ Task < ListResponse < TaskResponse > > GetAllTasksAsync ( TaskListFilter jobFilter , CancellationToken cancellationToken = default ) ;
29+ Task < Response < TaskResponse > > CreateTaskAsync < T > ( string operation , T request , CancellationToken cancellationToken = default ) ;
30+ Task < Response < TaskResponse > > GetTaskAsync ( string id , string include = null , CancellationToken cancellationToken = default ) ;
31+ Task < Response < TaskResponse > > WaitTaskAsync ( string id , CancellationToken cancellationToken = default ) ;
32+ Task DeleteTaskAsync ( string id , CancellationToken cancellationToken = default ) ;
3233 #endregion
3334
34- Task < string > UploadAsync ( string url , byte [ ] file , string fileName , object parameters ) ;
35- Task < string > UploadAsync ( string url , Stream file , string fileName , object parameters ) ;
35+ Task < string > UploadAsync ( string url , byte [ ] file , string fileName , object parameters , CancellationToken cancellationToken = default ) ;
36+ Task < string > UploadAsync ( string url , Stream file , string fileName , object parameters , CancellationToken cancellationToken = default ) ;
3637 bool ValidateWebhookSignatures ( string payloadString , string signature , string signingSecret ) ;
3738 string CreateSignedUrl ( string baseUrl , string signingSecret , JobCreateRequest job , string cacheKey = null ) ;
3839 }
@@ -114,26 +115,32 @@ private HttpRequestMessage GetMultipartFormDataRequest(string endpoint, HttpMeth
114115 /// List all jobs. Requires the task.read scope.
115116 /// </summary>
116117 /// <param name="jobFilter"></param>
118+ /// <param name="cancellationToken"></param>
117119 /// <returns>
118120 /// The list of jobs. You can find details about the job model response in the documentation about the show jobs endpoint.
119121 /// </returns>
120- public Task < ListResponse < JobResponse > > GetAllJobsAsync ( JobListFilter jobFilter ) => _restHelper . RequestAsync < ListResponse < JobResponse > > ( GetRequest ( $ "{ _apiUrl } /jobs?filter[status]={ jobFilter . Status } &filter[tag]={ jobFilter . Tag } &include={ jobFilter . Include } &per_page={ jobFilter . PerPage } &page={ jobFilter . Page } ", HttpMethod . Get ) ) ;
122+ public Task < ListResponse < JobResponse > > GetAllJobsAsync ( JobListFilter jobFilter , CancellationToken cancellationToken = default )
123+ => _restHelper . RequestAsync < ListResponse < JobResponse > > ( GetRequest ( $ "{ _apiUrl } /jobs?filter[status]={ jobFilter . Status } &filter[tag]={ jobFilter . Tag } &include={ jobFilter . Include } &per_page={ jobFilter . PerPage } &page={ jobFilter . Page } ", HttpMethod . Get ) , cancellationToken ) ;
121124
122125 /// <summary>
123126 /// Create a job with one ore more tasks. Requires the task.write scope.
124127 /// </summary>
125128 /// <param name="model"></param>
129+ /// <param name="cancellationToken"></param>
126130 /// <returns>
127131 /// The created job. You can find details about the job model response in the documentation about the show jobs endpoint.
128132 /// </returns>
129- public Task < Response < JobResponse > > CreateJobAsync ( JobCreateRequest model ) => _restHelper . RequestAsync < Response < JobResponse > > ( GetRequest ( $ "{ _apiUrl } /jobs", HttpMethod . Post , model ) ) ;
133+ public Task < Response < JobResponse > > CreateJobAsync ( JobCreateRequest model , CancellationToken cancellationToken = default )
134+ => _restHelper . RequestAsync < Response < JobResponse > > ( GetRequest ( $ "{ _apiUrl } /jobs", HttpMethod . Post , model ) , cancellationToken ) ;
130135
131136 /// <summary>
132137 /// Show a job. Requires the task.read scope.
133138 /// </summary>
134139 /// <param name="id"></param>
140+ /// <param name="cancellationToken"></param>
135141 /// <returns></returns>
136- public Task < Response < JobResponse > > GetJobAsync ( string id ) => _restHelper . RequestAsync < Response < JobResponse > > ( GetRequest ( $ "{ _apiUrl } /jobs/{ id } ", HttpMethod . Get ) ) ;
142+ public Task < Response < JobResponse > > GetJobAsync ( string id , CancellationToken cancellationToken = default )
143+ => _restHelper . RequestAsync < Response < JobResponse > > ( GetRequest ( $ "{ _apiUrl } /jobs/{ id } ", HttpMethod . Get ) , cancellationToken ) ;
137144
138145 /// <summary>
139146 /// Wait until the job status is finished or error. This makes the request block until the job has been completed. Requires the task.read scope.
@@ -145,20 +152,24 @@ private HttpRequestMessage GetMultipartFormDataRequest(string endpoint, HttpMeth
145152 /// Using an asynchronous approach with webhooks is beneficial in such cases.
146153 /// </summary>
147154 /// <param name="id"></param>
155+ /// <param name="cancellationToken"></param>
148156 /// <returns>
149157 /// The finished or failed job, including tasks. You can find details about the job model response in the documentation about the show job endpoint.
150158 /// </returns>
151- public Task < Response < JobResponse > > WaitJobAsync ( string id ) => _restHelper . RequestAsync < Response < JobResponse > > ( GetRequest ( $ "{ _apiSyncUrl } /jobs/{ id } ", HttpMethod . Get ) ) ;
159+ public Task < Response < JobResponse > > WaitJobAsync ( string id , CancellationToken cancellationToken = default )
160+ => _restHelper . RequestAsync < Response < JobResponse > > ( GetRequest ( $ "{ _apiSyncUrl } /jobs/{ id } ", HttpMethod . Get ) , cancellationToken ) ;
152161
153162 /// <summary>
154163 /// Delete a job, including all tasks and data. Requires the task.write scope.
155164 /// Jobs are deleted automatically 24 hours after they have ended.
156165 /// </summary>
157166 /// <param name="id"></param>
167+ /// <param name="cancellationToken"></param>
158168 /// <returns>
159169 /// An empty response with HTTP Code 204.
160170 /// </returns>
161- public Task DeleteJobAsync ( string id ) => _restHelper . RequestAsync < object > ( GetRequest ( $ "{ _apiUrl } /jobs/{ id } ", HttpMethod . Delete ) ) ;
171+ public Task DeleteJobAsync ( string id , CancellationToken cancellationToken = default )
172+ => _restHelper . RequestAsync < object > ( GetRequest ( $ "{ _apiUrl } /jobs/{ id } ", HttpMethod . Delete ) , cancellationToken ) ;
162173
163174 #endregion
164175
@@ -168,28 +179,34 @@ private HttpRequestMessage GetMultipartFormDataRequest(string endpoint, HttpMeth
168179 /// List all tasks with their status, payload and result. Requires the task.read scope.
169180 /// </summary>
170181 /// <param name="taskFilter"></param>
182+ /// <param name="cancellationToken"></param>
171183 /// <returns>
172184 /// The list of tasks. You can find details about the task model response in the documentation about the show tasks endpoint.
173185 /// </returns>
174- public Task < ListResponse < TaskResponse > > GetAllTasksAsync ( TaskListFilter taskFilter ) => _restHelper . RequestAsync < ListResponse < TaskResponse > > ( GetRequest ( $ "{ _apiUrl } /tasks?filter[job_id]={ taskFilter . JobId } &filter[status]={ taskFilter . Status } &filter[operation]={ taskFilter . Operation } &include={ taskFilter . Include } &per_page={ taskFilter . PerPage } &page={ taskFilter . Page } ", HttpMethod . Get ) ) ;
186+ public Task < ListResponse < TaskResponse > > GetAllTasksAsync ( TaskListFilter taskFilter , CancellationToken cancellationToken = default )
187+ => _restHelper . RequestAsync < ListResponse < TaskResponse > > ( GetRequest ( $ "{ _apiUrl } /tasks?filter[job_id]={ taskFilter . JobId } &filter[status]={ taskFilter . Status } &filter[operation]={ taskFilter . Operation } &include={ taskFilter . Include } &per_page={ taskFilter . PerPage } &page={ taskFilter . Page } ", HttpMethod . Get ) , cancellationToken ) ;
175188
176189 /// <summary>
177190 /// Create task.
178191 /// </summary>
179192 /// <typeparam name="T"></typeparam>
180193 /// <param name="model"></param>
194+ /// <param name="cancellationToken"></param>
181195 /// <returns>
182196 /// The created task. You can find details about the task model response in the documentation about the show tasks endpoint.
183197 /// </returns>
184- public Task < Response < TaskResponse > > CreateTaskAsync < T > ( string operation , T model ) => _restHelper . RequestAsync < Response < TaskResponse > > ( GetRequest ( $ "{ _apiUrl } /{ operation } ", HttpMethod . Post , model ) ) ;
198+ public Task < Response < TaskResponse > > CreateTaskAsync < T > ( string operation , T model , CancellationToken cancellationToken = default )
199+ => _restHelper . RequestAsync < Response < TaskResponse > > ( GetRequest ( $ "{ _apiUrl } /{ operation } ", HttpMethod . Post , model ) , cancellationToken ) ;
185200
186201 /// <summary>
187202 /// Show a task. Requires the task.read scope.
188203 /// </summary>
189204 /// <param name="id"></param>
190205 /// <param name="include"></param>
206+ /// <param name="cancellationToken"></param>
191207 /// <returns></returns>
192- public Task < Response < TaskResponse > > GetTaskAsync ( string id , string include = null ) => _restHelper . RequestAsync < Response < TaskResponse > > ( GetRequest ( $ "{ _apiUrl } /tasks/{ id } ?include={ include } ", HttpMethod . Get ) ) ;
208+ public Task < Response < TaskResponse > > GetTaskAsync ( string id , string include = null , CancellationToken cancellationToken = default )
209+ => _restHelper . RequestAsync < Response < TaskResponse > > ( GetRequest ( $ "{ _apiUrl } /tasks/{ id } ?include={ include } ", HttpMethod . Get ) , cancellationToken ) ;
193210
194211 /// <summary>
195212 /// Wait until the task status is finished or error. This makes the request block until the task has been completed. Requires the task.read scope.
@@ -201,26 +218,32 @@ private HttpRequestMessage GetMultipartFormDataRequest(string endpoint, HttpMeth
201218 /// Using an asynchronous approach with webhooks is beneficial in such cases.
202219 /// </summary>
203220 /// <param name="id"></param>
221+ /// <param name="cancellationToken"></param>
204222 /// <returns>
205223 /// The finished or failed task. You can find details about the task model response in the documentation about the show tasks endpoint.
206224 /// </returns>
207- public Task < Response < TaskResponse > > WaitTaskAsync ( string id ) => _restHelper . RequestAsync < Response < TaskResponse > > ( GetRequest ( $ "{ _apiSyncUrl } /tasks/{ id } ", HttpMethod . Get ) ) ;
225+ public Task < Response < TaskResponse > > WaitTaskAsync ( string id , CancellationToken cancellationToken = default )
226+ => _restHelper . RequestAsync < Response < TaskResponse > > ( GetRequest ( $ "{ _apiSyncUrl } /tasks/{ id } ", HttpMethod . Get ) , cancellationToken ) ;
208227
209228 /// <summary>
210229 /// Delete a task, including all data. Requires the task.write scope.
211230 /// Tasks are deleted automatically 24 hours after they have ended.
212231 /// </summary>
213232 /// <param name="id"></param>
233+ /// <param name="cancellationToken"></param>
214234 /// <returns>
215235 /// An empty response with HTTP Code 204.
216236 /// </returns>
217- public Task DeleteTaskAsync ( string id ) => _restHelper . RequestAsync < object > ( GetRequest ( $ "{ _apiUrl } /tasks/{ id } ", HttpMethod . Delete ) ) ;
237+ public Task DeleteTaskAsync ( string id , CancellationToken cancellationToken = default )
238+ => _restHelper . RequestAsync < object > ( GetRequest ( $ "{ _apiUrl } /tasks/{ id } ", HttpMethod . Delete ) , cancellationToken ) ;
218239
219240 #endregion
220241
221- public Task < string > UploadAsync ( string url , byte [ ] file , string fileName , object parameters ) => _restHelper . RequestAsync ( GetMultipartFormDataRequest ( url , HttpMethod . Post , new ByteArrayContent ( file ) , fileName , GetParameters ( parameters ) ) ) ;
242+ public Task < string > UploadAsync ( string url , byte [ ] file , string fileName , object parameters , CancellationToken cancellationToken )
243+ => _restHelper . RequestAsync ( GetMultipartFormDataRequest ( url , HttpMethod . Post , new ByteArrayContent ( file ) , fileName , GetParameters ( parameters ) ) , cancellationToken ) ;
222244
223- public Task < string > UploadAsync ( string url , Stream stream , string fileName , object parameters ) => _restHelper . RequestAsync ( GetMultipartFormDataRequest ( url , HttpMethod . Post , new StreamContent ( stream ) , fileName , GetParameters ( parameters ) ) ) ;
245+ public Task < string > UploadAsync ( string url , Stream stream , string fileName , object parameters , CancellationToken cancellationToken = default )
246+ => _restHelper . RequestAsync ( GetMultipartFormDataRequest ( url , HttpMethod . Post , new StreamContent ( stream ) , fileName , GetParameters ( parameters ) ) , cancellationToken ) ;
224247
225248 public string CreateSignedUrl ( string baseUrl , string signingSecret , JobCreateRequest job , string cacheKey = null )
226249 {
0 commit comments