001package com.box.sdkgen.managers.taskassignments; 002 003import static com.box.sdkgen.internal.utils.UtilsManager.convertToString; 004import static com.box.sdkgen.internal.utils.UtilsManager.mapOf; 005import static com.box.sdkgen.internal.utils.UtilsManager.mergeMaps; 006import static com.box.sdkgen.internal.utils.UtilsManager.prepareParams; 007 008import com.box.sdkgen.networking.auth.Authentication; 009import com.box.sdkgen.networking.fetchoptions.FetchOptions; 010import com.box.sdkgen.networking.fetchoptions.ResponseFormat; 011import com.box.sdkgen.networking.fetchresponse.FetchResponse; 012import com.box.sdkgen.networking.network.NetworkSession; 013import com.box.sdkgen.schemas.taskassignment.TaskAssignment; 014import com.box.sdkgen.schemas.taskassignments.TaskAssignments; 015import com.box.sdkgen.serialization.json.JsonManager; 016import java.util.Map; 017 018public class TaskAssignmentsManager { 019 020 public Authentication auth; 021 022 public NetworkSession networkSession; 023 024 public TaskAssignmentsManager() { 025 this.networkSession = new NetworkSession(); 026 } 027 028 protected TaskAssignmentsManager(Builder builder) { 029 this.auth = builder.auth; 030 this.networkSession = builder.networkSession; 031 } 032 033 /** 034 * Lists all of the assignments for a given task. 035 * 036 * @param taskId The ID of the task. Example: "12345" 037 */ 038 public TaskAssignments getTaskAssignments(String taskId) { 039 return getTaskAssignments(taskId, new GetTaskAssignmentsHeaders()); 040 } 041 042 /** 043 * Lists all of the assignments for a given task. 044 * 045 * @param taskId The ID of the task. Example: "12345" 046 * @param headers Headers of getTaskAssignments method 047 */ 048 public TaskAssignments getTaskAssignments(String taskId, GetTaskAssignmentsHeaders headers) { 049 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 050 FetchResponse response = 051 this.networkSession 052 .getNetworkClient() 053 .fetch( 054 new FetchOptions.Builder( 055 String.join( 056 "", 057 this.networkSession.getBaseUrls().getBaseUrl(), 058 "/2.0/tasks/", 059 convertToString(taskId), 060 "/assignments"), 061 "GET") 062 .headers(headersMap) 063 .responseFormat(ResponseFormat.JSON) 064 .auth(this.auth) 065 .networkSession(this.networkSession) 066 .build()); 067 return JsonManager.deserialize(response.getData(), TaskAssignments.class); 068 } 069 070 /** 071 * Assigns a task to a user. 072 * 073 * <p>A task can be assigned to more than one user by creating multiple assignments. 074 * 075 * @param requestBody Request body of createTaskAssignment method 076 */ 077 public TaskAssignment createTaskAssignment(CreateTaskAssignmentRequestBody requestBody) { 078 return createTaskAssignment(requestBody, new CreateTaskAssignmentHeaders()); 079 } 080 081 /** 082 * Assigns a task to a user. 083 * 084 * <p>A task can be assigned to more than one user by creating multiple assignments. 085 * 086 * @param requestBody Request body of createTaskAssignment method 087 * @param headers Headers of createTaskAssignment method 088 */ 089 public TaskAssignment createTaskAssignment( 090 CreateTaskAssignmentRequestBody requestBody, CreateTaskAssignmentHeaders headers) { 091 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 092 FetchResponse response = 093 this.networkSession 094 .getNetworkClient() 095 .fetch( 096 new FetchOptions.Builder( 097 String.join( 098 "", 099 this.networkSession.getBaseUrls().getBaseUrl(), 100 "/2.0/task_assignments"), 101 "POST") 102 .headers(headersMap) 103 .data(JsonManager.serialize(requestBody)) 104 .contentType("application/json") 105 .responseFormat(ResponseFormat.JSON) 106 .auth(this.auth) 107 .networkSession(this.networkSession) 108 .build()); 109 return JsonManager.deserialize(response.getData(), TaskAssignment.class); 110 } 111 112 /** 113 * Retrieves information about a task assignment. 114 * 115 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 116 */ 117 public TaskAssignment getTaskAssignmentById(String taskAssignmentId) { 118 return getTaskAssignmentById(taskAssignmentId, new GetTaskAssignmentByIdHeaders()); 119 } 120 121 /** 122 * Retrieves information about a task assignment. 123 * 124 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 125 * @param headers Headers of getTaskAssignmentById method 126 */ 127 public TaskAssignment getTaskAssignmentById( 128 String taskAssignmentId, GetTaskAssignmentByIdHeaders headers) { 129 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 130 FetchResponse response = 131 this.networkSession 132 .getNetworkClient() 133 .fetch( 134 new FetchOptions.Builder( 135 String.join( 136 "", 137 this.networkSession.getBaseUrls().getBaseUrl(), 138 "/2.0/task_assignments/", 139 convertToString(taskAssignmentId)), 140 "GET") 141 .headers(headersMap) 142 .responseFormat(ResponseFormat.JSON) 143 .auth(this.auth) 144 .networkSession(this.networkSession) 145 .build()); 146 return JsonManager.deserialize(response.getData(), TaskAssignment.class); 147 } 148 149 /** 150 * Updates a task assignment. This endpoint can be used to update the state of a task assigned to 151 * a user. 152 * 153 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 154 */ 155 public TaskAssignment updateTaskAssignmentById(String taskAssignmentId) { 156 return updateTaskAssignmentById( 157 taskAssignmentId, 158 new UpdateTaskAssignmentByIdRequestBody(), 159 new UpdateTaskAssignmentByIdHeaders()); 160 } 161 162 /** 163 * Updates a task assignment. This endpoint can be used to update the state of a task assigned to 164 * a user. 165 * 166 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 167 * @param requestBody Request body of updateTaskAssignmentById method 168 */ 169 public TaskAssignment updateTaskAssignmentById( 170 String taskAssignmentId, UpdateTaskAssignmentByIdRequestBody requestBody) { 171 return updateTaskAssignmentById( 172 taskAssignmentId, requestBody, new UpdateTaskAssignmentByIdHeaders()); 173 } 174 175 /** 176 * Updates a task assignment. This endpoint can be used to update the state of a task assigned to 177 * a user. 178 * 179 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 180 * @param headers Headers of updateTaskAssignmentById method 181 */ 182 public TaskAssignment updateTaskAssignmentById( 183 String taskAssignmentId, UpdateTaskAssignmentByIdHeaders headers) { 184 return updateTaskAssignmentById( 185 taskAssignmentId, new UpdateTaskAssignmentByIdRequestBody(), headers); 186 } 187 188 /** 189 * Updates a task assignment. This endpoint can be used to update the state of a task assigned to 190 * a user. 191 * 192 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 193 * @param requestBody Request body of updateTaskAssignmentById method 194 * @param headers Headers of updateTaskAssignmentById method 195 */ 196 public TaskAssignment updateTaskAssignmentById( 197 String taskAssignmentId, 198 UpdateTaskAssignmentByIdRequestBody requestBody, 199 UpdateTaskAssignmentByIdHeaders headers) { 200 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 201 FetchResponse response = 202 this.networkSession 203 .getNetworkClient() 204 .fetch( 205 new FetchOptions.Builder( 206 String.join( 207 "", 208 this.networkSession.getBaseUrls().getBaseUrl(), 209 "/2.0/task_assignments/", 210 convertToString(taskAssignmentId)), 211 "PUT") 212 .headers(headersMap) 213 .data(JsonManager.serialize(requestBody)) 214 .contentType("application/json") 215 .responseFormat(ResponseFormat.JSON) 216 .auth(this.auth) 217 .networkSession(this.networkSession) 218 .build()); 219 return JsonManager.deserialize(response.getData(), TaskAssignment.class); 220 } 221 222 /** 223 * Deletes a specific task assignment. 224 * 225 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 226 */ 227 public void deleteTaskAssignmentById(String taskAssignmentId) { 228 deleteTaskAssignmentById(taskAssignmentId, new DeleteTaskAssignmentByIdHeaders()); 229 } 230 231 /** 232 * Deletes a specific task assignment. 233 * 234 * @param taskAssignmentId The ID of the task assignment. Example: "12345" 235 * @param headers Headers of deleteTaskAssignmentById method 236 */ 237 public void deleteTaskAssignmentById( 238 String taskAssignmentId, DeleteTaskAssignmentByIdHeaders headers) { 239 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 240 FetchResponse response = 241 this.networkSession 242 .getNetworkClient() 243 .fetch( 244 new FetchOptions.Builder( 245 String.join( 246 "", 247 this.networkSession.getBaseUrls().getBaseUrl(), 248 "/2.0/task_assignments/", 249 convertToString(taskAssignmentId)), 250 "DELETE") 251 .headers(headersMap) 252 .responseFormat(ResponseFormat.NO_CONTENT) 253 .auth(this.auth) 254 .networkSession(this.networkSession) 255 .build()); 256 } 257 258 public Authentication getAuth() { 259 return auth; 260 } 261 262 public NetworkSession getNetworkSession() { 263 return networkSession; 264 } 265 266 public static class Builder { 267 268 protected Authentication auth; 269 270 protected NetworkSession networkSession; 271 272 public Builder() {} 273 274 public Builder auth(Authentication auth) { 275 this.auth = auth; 276 return this; 277 } 278 279 public Builder networkSession(NetworkSession networkSession) { 280 this.networkSession = networkSession; 281 return this; 282 } 283 284 public TaskAssignmentsManager build() { 285 if (this.networkSession == null) { 286 this.networkSession = new NetworkSession(); 287 } 288 return new TaskAssignmentsManager(this); 289 } 290 } 291}