001package com.box.sdkgen.managers.memberships; 002 003import static com.box.sdkgen.internal.utils.UtilsManager.convertToString; 004import static com.box.sdkgen.internal.utils.UtilsManager.entryOf; 005import static com.box.sdkgen.internal.utils.UtilsManager.mapOf; 006import static com.box.sdkgen.internal.utils.UtilsManager.mergeMaps; 007import static com.box.sdkgen.internal.utils.UtilsManager.prepareParams; 008 009import com.box.sdkgen.networking.auth.Authentication; 010import com.box.sdkgen.networking.fetchoptions.FetchOptions; 011import com.box.sdkgen.networking.fetchoptions.ResponseFormat; 012import com.box.sdkgen.networking.fetchresponse.FetchResponse; 013import com.box.sdkgen.networking.network.NetworkSession; 014import com.box.sdkgen.schemas.groupmembership.GroupMembership; 015import com.box.sdkgen.schemas.groupmemberships.GroupMemberships; 016import com.box.sdkgen.serialization.json.JsonManager; 017import java.util.Map; 018 019public class MembershipsManager { 020 021 public Authentication auth; 022 023 public NetworkSession networkSession; 024 025 public MembershipsManager() { 026 this.networkSession = new NetworkSession(); 027 } 028 029 protected MembershipsManager(Builder builder) { 030 this.auth = builder.auth; 031 this.networkSession = builder.networkSession; 032 } 033 034 /** 035 * Retrieves all the groups for a user. Only members of this group or users with admin-level 036 * permissions will be able to use this API. 037 * 038 * @param userId The ID of the user. Example: "12345" 039 */ 040 public GroupMemberships getUserMemberships(String userId) { 041 return getUserMemberships( 042 userId, new GetUserMembershipsQueryParams(), new GetUserMembershipsHeaders()); 043 } 044 045 /** 046 * Retrieves all the groups for a user. Only members of this group or users with admin-level 047 * permissions will be able to use this API. 048 * 049 * @param userId The ID of the user. Example: "12345" 050 * @param queryParams Query parameters of getUserMemberships method 051 */ 052 public GroupMemberships getUserMemberships( 053 String userId, GetUserMembershipsQueryParams queryParams) { 054 return getUserMemberships(userId, queryParams, new GetUserMembershipsHeaders()); 055 } 056 057 /** 058 * Retrieves all the groups for a user. Only members of this group or users with admin-level 059 * permissions will be able to use this API. 060 * 061 * @param userId The ID of the user. Example: "12345" 062 * @param headers Headers of getUserMemberships method 063 */ 064 public GroupMemberships getUserMemberships(String userId, GetUserMembershipsHeaders headers) { 065 return getUserMemberships(userId, new GetUserMembershipsQueryParams(), headers); 066 } 067 068 /** 069 * Retrieves all the groups for a user. Only members of this group or users with admin-level 070 * permissions will be able to use this API. 071 * 072 * @param userId The ID of the user. Example: "12345" 073 * @param queryParams Query parameters of getUserMemberships method 074 * @param headers Headers of getUserMemberships method 075 */ 076 public GroupMemberships getUserMemberships( 077 String userId, GetUserMembershipsQueryParams queryParams, GetUserMembershipsHeaders headers) { 078 Map<String, String> queryParamsMap = 079 prepareParams( 080 mapOf( 081 entryOf("limit", convertToString(queryParams.getLimit())), 082 entryOf("offset", convertToString(queryParams.getOffset())))); 083 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 084 FetchResponse response = 085 this.networkSession 086 .getNetworkClient() 087 .fetch( 088 new FetchOptions.Builder( 089 String.join( 090 "", 091 this.networkSession.getBaseUrls().getBaseUrl(), 092 "/2.0/users/", 093 convertToString(userId), 094 "/memberships"), 095 "GET") 096 .params(queryParamsMap) 097 .headers(headersMap) 098 .responseFormat(ResponseFormat.JSON) 099 .auth(this.auth) 100 .networkSession(this.networkSession) 101 .build()); 102 return JsonManager.deserialize(response.getData(), GroupMemberships.class); 103 } 104 105 /** 106 * Retrieves all the members for a group. Only members of this group or users with admin-level 107 * permissions will be able to use this API. 108 * 109 * @param groupId The ID of the group. Example: "57645" 110 */ 111 public GroupMemberships getGroupMemberships(String groupId) { 112 return getGroupMemberships( 113 groupId, new GetGroupMembershipsQueryParams(), new GetGroupMembershipsHeaders()); 114 } 115 116 /** 117 * Retrieves all the members for a group. Only members of this group or users with admin-level 118 * permissions will be able to use this API. 119 * 120 * @param groupId The ID of the group. Example: "57645" 121 * @param queryParams Query parameters of getGroupMemberships method 122 */ 123 public GroupMemberships getGroupMemberships( 124 String groupId, GetGroupMembershipsQueryParams queryParams) { 125 return getGroupMemberships(groupId, queryParams, new GetGroupMembershipsHeaders()); 126 } 127 128 /** 129 * Retrieves all the members for a group. Only members of this group or users with admin-level 130 * permissions will be able to use this API. 131 * 132 * @param groupId The ID of the group. Example: "57645" 133 * @param headers Headers of getGroupMemberships method 134 */ 135 public GroupMemberships getGroupMemberships(String groupId, GetGroupMembershipsHeaders headers) { 136 return getGroupMemberships(groupId, new GetGroupMembershipsQueryParams(), headers); 137 } 138 139 /** 140 * Retrieves all the members for a group. Only members of this group or users with admin-level 141 * permissions will be able to use this API. 142 * 143 * @param groupId The ID of the group. Example: "57645" 144 * @param queryParams Query parameters of getGroupMemberships method 145 * @param headers Headers of getGroupMemberships method 146 */ 147 public GroupMemberships getGroupMemberships( 148 String groupId, 149 GetGroupMembershipsQueryParams queryParams, 150 GetGroupMembershipsHeaders headers) { 151 Map<String, String> queryParamsMap = 152 prepareParams( 153 mapOf( 154 entryOf("limit", convertToString(queryParams.getLimit())), 155 entryOf("offset", convertToString(queryParams.getOffset())))); 156 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 157 FetchResponse response = 158 this.networkSession 159 .getNetworkClient() 160 .fetch( 161 new FetchOptions.Builder( 162 String.join( 163 "", 164 this.networkSession.getBaseUrls().getBaseUrl(), 165 "/2.0/groups/", 166 convertToString(groupId), 167 "/memberships"), 168 "GET") 169 .params(queryParamsMap) 170 .headers(headersMap) 171 .responseFormat(ResponseFormat.JSON) 172 .auth(this.auth) 173 .networkSession(this.networkSession) 174 .build()); 175 return JsonManager.deserialize(response.getData(), GroupMemberships.class); 176 } 177 178 /** 179 * Creates a group membership. Only users with admin-level permissions will be able to use this 180 * API. 181 * 182 * @param requestBody Request body of createGroupMembership method 183 */ 184 public GroupMembership createGroupMembership(CreateGroupMembershipRequestBody requestBody) { 185 return createGroupMembership( 186 requestBody, new CreateGroupMembershipQueryParams(), new CreateGroupMembershipHeaders()); 187 } 188 189 /** 190 * Creates a group membership. Only users with admin-level permissions will be able to use this 191 * API. 192 * 193 * @param requestBody Request body of createGroupMembership method 194 * @param queryParams Query parameters of createGroupMembership method 195 */ 196 public GroupMembership createGroupMembership( 197 CreateGroupMembershipRequestBody requestBody, CreateGroupMembershipQueryParams queryParams) { 198 return createGroupMembership(requestBody, queryParams, new CreateGroupMembershipHeaders()); 199 } 200 201 /** 202 * Creates a group membership. Only users with admin-level permissions will be able to use this 203 * API. 204 * 205 * @param requestBody Request body of createGroupMembership method 206 * @param headers Headers of createGroupMembership method 207 */ 208 public GroupMembership createGroupMembership( 209 CreateGroupMembershipRequestBody requestBody, CreateGroupMembershipHeaders headers) { 210 return createGroupMembership(requestBody, new CreateGroupMembershipQueryParams(), headers); 211 } 212 213 /** 214 * Creates a group membership. Only users with admin-level permissions will be able to use this 215 * API. 216 * 217 * @param requestBody Request body of createGroupMembership method 218 * @param queryParams Query parameters of createGroupMembership method 219 * @param headers Headers of createGroupMembership method 220 */ 221 public GroupMembership createGroupMembership( 222 CreateGroupMembershipRequestBody requestBody, 223 CreateGroupMembershipQueryParams queryParams, 224 CreateGroupMembershipHeaders headers) { 225 Map<String, String> queryParamsMap = 226 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 227 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 228 FetchResponse response = 229 this.networkSession 230 .getNetworkClient() 231 .fetch( 232 new FetchOptions.Builder( 233 String.join( 234 "", 235 this.networkSession.getBaseUrls().getBaseUrl(), 236 "/2.0/group_memberships"), 237 "POST") 238 .params(queryParamsMap) 239 .headers(headersMap) 240 .data(JsonManager.serialize(requestBody)) 241 .contentType("application/json") 242 .responseFormat(ResponseFormat.JSON) 243 .auth(this.auth) 244 .networkSession(this.networkSession) 245 .build()); 246 return JsonManager.deserialize(response.getData(), GroupMembership.class); 247 } 248 249 /** 250 * Retrieves a specific group membership. Only admins of this group or users with admin-level 251 * permissions will be able to use this API. 252 * 253 * @param groupMembershipId The ID of the group membership. Example: "434534" 254 */ 255 public GroupMembership getGroupMembershipById(String groupMembershipId) { 256 return getGroupMembershipById( 257 groupMembershipId, 258 new GetGroupMembershipByIdQueryParams(), 259 new GetGroupMembershipByIdHeaders()); 260 } 261 262 /** 263 * Retrieves a specific group membership. Only admins of this group or users with admin-level 264 * permissions will be able to use this API. 265 * 266 * @param groupMembershipId The ID of the group membership. Example: "434534" 267 * @param queryParams Query parameters of getGroupMembershipById method 268 */ 269 public GroupMembership getGroupMembershipById( 270 String groupMembershipId, GetGroupMembershipByIdQueryParams queryParams) { 271 return getGroupMembershipById( 272 groupMembershipId, queryParams, new GetGroupMembershipByIdHeaders()); 273 } 274 275 /** 276 * Retrieves a specific group membership. Only admins of this group or users with admin-level 277 * permissions will be able to use this API. 278 * 279 * @param groupMembershipId The ID of the group membership. Example: "434534" 280 * @param headers Headers of getGroupMembershipById method 281 */ 282 public GroupMembership getGroupMembershipById( 283 String groupMembershipId, GetGroupMembershipByIdHeaders headers) { 284 return getGroupMembershipById( 285 groupMembershipId, new GetGroupMembershipByIdQueryParams(), headers); 286 } 287 288 /** 289 * Retrieves a specific group membership. Only admins of this group or users with admin-level 290 * permissions will be able to use this API. 291 * 292 * @param groupMembershipId The ID of the group membership. Example: "434534" 293 * @param queryParams Query parameters of getGroupMembershipById method 294 * @param headers Headers of getGroupMembershipById method 295 */ 296 public GroupMembership getGroupMembershipById( 297 String groupMembershipId, 298 GetGroupMembershipByIdQueryParams queryParams, 299 GetGroupMembershipByIdHeaders headers) { 300 Map<String, String> queryParamsMap = 301 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 302 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 303 FetchResponse response = 304 this.networkSession 305 .getNetworkClient() 306 .fetch( 307 new FetchOptions.Builder( 308 String.join( 309 "", 310 this.networkSession.getBaseUrls().getBaseUrl(), 311 "/2.0/group_memberships/", 312 convertToString(groupMembershipId)), 313 "GET") 314 .params(queryParamsMap) 315 .headers(headersMap) 316 .responseFormat(ResponseFormat.JSON) 317 .auth(this.auth) 318 .networkSession(this.networkSession) 319 .build()); 320 return JsonManager.deserialize(response.getData(), GroupMembership.class); 321 } 322 323 /** 324 * Updates a user's group membership. Only admins of this group or users with admin-level 325 * permissions will be able to use this API. 326 * 327 * @param groupMembershipId The ID of the group membership. Example: "434534" 328 */ 329 public GroupMembership updateGroupMembershipById(String groupMembershipId) { 330 return updateGroupMembershipById( 331 groupMembershipId, 332 new UpdateGroupMembershipByIdRequestBody(), 333 new UpdateGroupMembershipByIdQueryParams(), 334 new UpdateGroupMembershipByIdHeaders()); 335 } 336 337 /** 338 * Updates a user's group membership. Only admins of this group or users with admin-level 339 * permissions will be able to use this API. 340 * 341 * @param groupMembershipId The ID of the group membership. Example: "434534" 342 * @param requestBody Request body of updateGroupMembershipById method 343 */ 344 public GroupMembership updateGroupMembershipById( 345 String groupMembershipId, UpdateGroupMembershipByIdRequestBody requestBody) { 346 return updateGroupMembershipById( 347 groupMembershipId, 348 requestBody, 349 new UpdateGroupMembershipByIdQueryParams(), 350 new UpdateGroupMembershipByIdHeaders()); 351 } 352 353 /** 354 * Updates a user's group membership. Only admins of this group or users with admin-level 355 * permissions will be able to use this API. 356 * 357 * @param groupMembershipId The ID of the group membership. Example: "434534" 358 * @param queryParams Query parameters of updateGroupMembershipById method 359 */ 360 public GroupMembership updateGroupMembershipById( 361 String groupMembershipId, UpdateGroupMembershipByIdQueryParams queryParams) { 362 return updateGroupMembershipById( 363 groupMembershipId, 364 new UpdateGroupMembershipByIdRequestBody(), 365 queryParams, 366 new UpdateGroupMembershipByIdHeaders()); 367 } 368 369 /** 370 * Updates a user's group membership. Only admins of this group or users with admin-level 371 * permissions will be able to use this API. 372 * 373 * @param groupMembershipId The ID of the group membership. Example: "434534" 374 * @param requestBody Request body of updateGroupMembershipById method 375 * @param queryParams Query parameters of updateGroupMembershipById method 376 */ 377 public GroupMembership updateGroupMembershipById( 378 String groupMembershipId, 379 UpdateGroupMembershipByIdRequestBody requestBody, 380 UpdateGroupMembershipByIdQueryParams queryParams) { 381 return updateGroupMembershipById( 382 groupMembershipId, requestBody, queryParams, new UpdateGroupMembershipByIdHeaders()); 383 } 384 385 /** 386 * Updates a user's group membership. Only admins of this group or users with admin-level 387 * permissions will be able to use this API. 388 * 389 * @param groupMembershipId The ID of the group membership. Example: "434534" 390 * @param headers Headers of updateGroupMembershipById method 391 */ 392 public GroupMembership updateGroupMembershipById( 393 String groupMembershipId, UpdateGroupMembershipByIdHeaders headers) { 394 return updateGroupMembershipById( 395 groupMembershipId, 396 new UpdateGroupMembershipByIdRequestBody(), 397 new UpdateGroupMembershipByIdQueryParams(), 398 headers); 399 } 400 401 /** 402 * Updates a user's group membership. Only admins of this group or users with admin-level 403 * permissions will be able to use this API. 404 * 405 * @param groupMembershipId The ID of the group membership. Example: "434534" 406 * @param requestBody Request body of updateGroupMembershipById method 407 * @param headers Headers of updateGroupMembershipById method 408 */ 409 public GroupMembership updateGroupMembershipById( 410 String groupMembershipId, 411 UpdateGroupMembershipByIdRequestBody requestBody, 412 UpdateGroupMembershipByIdHeaders headers) { 413 return updateGroupMembershipById( 414 groupMembershipId, requestBody, new UpdateGroupMembershipByIdQueryParams(), headers); 415 } 416 417 /** 418 * Updates a user's group membership. Only admins of this group or users with admin-level 419 * permissions will be able to use this API. 420 * 421 * @param groupMembershipId The ID of the group membership. Example: "434534" 422 * @param queryParams Query parameters of updateGroupMembershipById method 423 * @param headers Headers of updateGroupMembershipById method 424 */ 425 public GroupMembership updateGroupMembershipById( 426 String groupMembershipId, 427 UpdateGroupMembershipByIdQueryParams queryParams, 428 UpdateGroupMembershipByIdHeaders headers) { 429 return updateGroupMembershipById( 430 groupMembershipId, new UpdateGroupMembershipByIdRequestBody(), queryParams, headers); 431 } 432 433 /** 434 * Updates a user's group membership. Only admins of this group or users with admin-level 435 * permissions will be able to use this API. 436 * 437 * @param groupMembershipId The ID of the group membership. Example: "434534" 438 * @param requestBody Request body of updateGroupMembershipById method 439 * @param queryParams Query parameters of updateGroupMembershipById method 440 * @param headers Headers of updateGroupMembershipById method 441 */ 442 public GroupMembership updateGroupMembershipById( 443 String groupMembershipId, 444 UpdateGroupMembershipByIdRequestBody requestBody, 445 UpdateGroupMembershipByIdQueryParams queryParams, 446 UpdateGroupMembershipByIdHeaders headers) { 447 Map<String, String> queryParamsMap = 448 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 449 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 450 FetchResponse response = 451 this.networkSession 452 .getNetworkClient() 453 .fetch( 454 new FetchOptions.Builder( 455 String.join( 456 "", 457 this.networkSession.getBaseUrls().getBaseUrl(), 458 "/2.0/group_memberships/", 459 convertToString(groupMembershipId)), 460 "PUT") 461 .params(queryParamsMap) 462 .headers(headersMap) 463 .data(JsonManager.serialize(requestBody)) 464 .contentType("application/json") 465 .responseFormat(ResponseFormat.JSON) 466 .auth(this.auth) 467 .networkSession(this.networkSession) 468 .build()); 469 return JsonManager.deserialize(response.getData(), GroupMembership.class); 470 } 471 472 /** 473 * Deletes a specific group membership. Only admins of this group or users with admin-level 474 * permissions will be able to use this API. 475 * 476 * @param groupMembershipId The ID of the group membership. Example: "434534" 477 */ 478 public void deleteGroupMembershipById(String groupMembershipId) { 479 deleteGroupMembershipById(groupMembershipId, new DeleteGroupMembershipByIdHeaders()); 480 } 481 482 /** 483 * Deletes a specific group membership. Only admins of this group or users with admin-level 484 * permissions will be able to use this API. 485 * 486 * @param groupMembershipId The ID of the group membership. Example: "434534" 487 * @param headers Headers of deleteGroupMembershipById method 488 */ 489 public void deleteGroupMembershipById( 490 String groupMembershipId, DeleteGroupMembershipByIdHeaders headers) { 491 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 492 FetchResponse response = 493 this.networkSession 494 .getNetworkClient() 495 .fetch( 496 new FetchOptions.Builder( 497 String.join( 498 "", 499 this.networkSession.getBaseUrls().getBaseUrl(), 500 "/2.0/group_memberships/", 501 convertToString(groupMembershipId)), 502 "DELETE") 503 .headers(headersMap) 504 .responseFormat(ResponseFormat.NO_CONTENT) 505 .auth(this.auth) 506 .networkSession(this.networkSession) 507 .build()); 508 } 509 510 public Authentication getAuth() { 511 return auth; 512 } 513 514 public NetworkSession getNetworkSession() { 515 return networkSession; 516 } 517 518 public static class Builder { 519 520 protected Authentication auth; 521 522 protected NetworkSession networkSession; 523 524 public Builder() {} 525 526 public Builder auth(Authentication auth) { 527 this.auth = auth; 528 return this; 529 } 530 531 public Builder networkSession(NetworkSession networkSession) { 532 this.networkSession = networkSession; 533 return this; 534 } 535 536 public MembershipsManager build() { 537 if (this.networkSession == null) { 538 this.networkSession = new NetworkSession(); 539 } 540 return new MembershipsManager(this); 541 } 542 } 543}