001package com.box.sdkgen.managers.sharedlinksweblinks; 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.weblink.WebLink; 015import com.box.sdkgen.serialization.json.JsonManager; 016import java.util.Map; 017 018public class SharedLinksWebLinksManager { 019 020 public Authentication auth; 021 022 public NetworkSession networkSession; 023 024 public SharedLinksWebLinksManager() { 025 this.networkSession = new NetworkSession(); 026 } 027 028 protected SharedLinksWebLinksManager(Builder builder) { 029 this.auth = builder.auth; 030 this.networkSession = builder.networkSession; 031 } 032 033 /** 034 * Returns the web link represented by a shared link. 035 * 036 * <p>A shared web link can be represented by a shared link, which can originate within the 037 * current enterprise or within another. 038 * 039 * <p>This endpoint allows an application to retrieve information about a shared web link when 040 * only given a shared link. 041 * 042 * @param headers Headers of findWebLinkForSharedLink method 043 */ 044 public WebLink findWebLinkForSharedLink(FindWebLinkForSharedLinkHeaders headers) { 045 return findWebLinkForSharedLink(new FindWebLinkForSharedLinkQueryParams(), headers); 046 } 047 048 /** 049 * Returns the web link represented by a shared link. 050 * 051 * <p>A shared web link can be represented by a shared link, which can originate within the 052 * current enterprise or within another. 053 * 054 * <p>This endpoint allows an application to retrieve information about a shared web link when 055 * only given a shared link. 056 * 057 * @param queryParams Query parameters of findWebLinkForSharedLink method 058 * @param headers Headers of findWebLinkForSharedLink method 059 */ 060 public WebLink findWebLinkForSharedLink( 061 FindWebLinkForSharedLinkQueryParams queryParams, FindWebLinkForSharedLinkHeaders headers) { 062 Map<String, String> queryParamsMap = 063 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 064 Map<String, String> headersMap = 065 prepareParams( 066 mergeMaps( 067 mapOf( 068 entryOf("if-none-match", convertToString(headers.getIfNoneMatch())), 069 entryOf("boxapi", convertToString(headers.getBoxapi()))), 070 headers.getExtraHeaders())); 071 FetchResponse response = 072 this.networkSession 073 .getNetworkClient() 074 .fetch( 075 new FetchOptions.Builder( 076 String.join( 077 "", 078 this.networkSession.getBaseUrls().getBaseUrl(), 079 "/2.0/shared_items#web_links"), 080 "GET") 081 .params(queryParamsMap) 082 .headers(headersMap) 083 .responseFormat(ResponseFormat.JSON) 084 .auth(this.auth) 085 .networkSession(this.networkSession) 086 .build()); 087 return JsonManager.deserialize(response.getData(), WebLink.class); 088 } 089 090 /** 091 * Gets the information for a shared link on a web link. 092 * 093 * @param webLinkId The ID of the web link. Example: "12345" 094 * @param queryParams Query parameters of getSharedLinkForWebLink method 095 */ 096 public WebLink getSharedLinkForWebLink( 097 String webLinkId, GetSharedLinkForWebLinkQueryParams queryParams) { 098 return getSharedLinkForWebLink(webLinkId, queryParams, new GetSharedLinkForWebLinkHeaders()); 099 } 100 101 /** 102 * Gets the information for a shared link on a web link. 103 * 104 * @param webLinkId The ID of the web link. Example: "12345" 105 * @param queryParams Query parameters of getSharedLinkForWebLink method 106 * @param headers Headers of getSharedLinkForWebLink method 107 */ 108 public WebLink getSharedLinkForWebLink( 109 String webLinkId, 110 GetSharedLinkForWebLinkQueryParams queryParams, 111 GetSharedLinkForWebLinkHeaders headers) { 112 Map<String, String> queryParamsMap = 113 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 114 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 115 FetchResponse response = 116 this.networkSession 117 .getNetworkClient() 118 .fetch( 119 new FetchOptions.Builder( 120 String.join( 121 "", 122 this.networkSession.getBaseUrls().getBaseUrl(), 123 "/2.0/web_links/", 124 convertToString(webLinkId), 125 "#get_shared_link"), 126 "GET") 127 .params(queryParamsMap) 128 .headers(headersMap) 129 .responseFormat(ResponseFormat.JSON) 130 .auth(this.auth) 131 .networkSession(this.networkSession) 132 .build()); 133 return JsonManager.deserialize(response.getData(), WebLink.class); 134 } 135 136 /** 137 * Adds a shared link to a web link. 138 * 139 * @param webLinkId The ID of the web link. Example: "12345" 140 * @param queryParams Query parameters of addShareLinkToWebLink method 141 */ 142 public WebLink addShareLinkToWebLink( 143 String webLinkId, AddShareLinkToWebLinkQueryParams queryParams) { 144 return addShareLinkToWebLink( 145 webLinkId, 146 new AddShareLinkToWebLinkRequestBody(), 147 queryParams, 148 new AddShareLinkToWebLinkHeaders()); 149 } 150 151 /** 152 * Adds a shared link to a web link. 153 * 154 * @param webLinkId The ID of the web link. Example: "12345" 155 * @param requestBody Request body of addShareLinkToWebLink method 156 * @param queryParams Query parameters of addShareLinkToWebLink method 157 */ 158 public WebLink addShareLinkToWebLink( 159 String webLinkId, 160 AddShareLinkToWebLinkRequestBody requestBody, 161 AddShareLinkToWebLinkQueryParams queryParams) { 162 return addShareLinkToWebLink( 163 webLinkId, requestBody, queryParams, new AddShareLinkToWebLinkHeaders()); 164 } 165 166 /** 167 * Adds a shared link to a web link. 168 * 169 * @param webLinkId The ID of the web link. Example: "12345" 170 * @param queryParams Query parameters of addShareLinkToWebLink method 171 * @param headers Headers of addShareLinkToWebLink method 172 */ 173 public WebLink addShareLinkToWebLink( 174 String webLinkId, 175 AddShareLinkToWebLinkQueryParams queryParams, 176 AddShareLinkToWebLinkHeaders headers) { 177 return addShareLinkToWebLink( 178 webLinkId, new AddShareLinkToWebLinkRequestBody(), queryParams, headers); 179 } 180 181 /** 182 * Adds a shared link to a web link. 183 * 184 * @param webLinkId The ID of the web link. Example: "12345" 185 * @param requestBody Request body of addShareLinkToWebLink method 186 * @param queryParams Query parameters of addShareLinkToWebLink method 187 * @param headers Headers of addShareLinkToWebLink method 188 */ 189 public WebLink addShareLinkToWebLink( 190 String webLinkId, 191 AddShareLinkToWebLinkRequestBody requestBody, 192 AddShareLinkToWebLinkQueryParams queryParams, 193 AddShareLinkToWebLinkHeaders headers) { 194 Map<String, String> queryParamsMap = 195 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 196 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 197 FetchResponse response = 198 this.networkSession 199 .getNetworkClient() 200 .fetch( 201 new FetchOptions.Builder( 202 String.join( 203 "", 204 this.networkSession.getBaseUrls().getBaseUrl(), 205 "/2.0/web_links/", 206 convertToString(webLinkId), 207 "#add_shared_link"), 208 "PUT") 209 .params(queryParamsMap) 210 .headers(headersMap) 211 .data(JsonManager.serialize(requestBody)) 212 .contentType("application/json") 213 .responseFormat(ResponseFormat.JSON) 214 .auth(this.auth) 215 .networkSession(this.networkSession) 216 .build()); 217 return JsonManager.deserialize(response.getData(), WebLink.class); 218 } 219 220 /** 221 * Updates a shared link on a web link. 222 * 223 * @param webLinkId The ID of the web link. Example: "12345" 224 * @param queryParams Query parameters of updateSharedLinkOnWebLink method 225 */ 226 public WebLink updateSharedLinkOnWebLink( 227 String webLinkId, UpdateSharedLinkOnWebLinkQueryParams queryParams) { 228 return updateSharedLinkOnWebLink( 229 webLinkId, 230 new UpdateSharedLinkOnWebLinkRequestBody(), 231 queryParams, 232 new UpdateSharedLinkOnWebLinkHeaders()); 233 } 234 235 /** 236 * Updates a shared link on a web link. 237 * 238 * @param webLinkId The ID of the web link. Example: "12345" 239 * @param requestBody Request body of updateSharedLinkOnWebLink method 240 * @param queryParams Query parameters of updateSharedLinkOnWebLink method 241 */ 242 public WebLink updateSharedLinkOnWebLink( 243 String webLinkId, 244 UpdateSharedLinkOnWebLinkRequestBody requestBody, 245 UpdateSharedLinkOnWebLinkQueryParams queryParams) { 246 return updateSharedLinkOnWebLink( 247 webLinkId, requestBody, queryParams, new UpdateSharedLinkOnWebLinkHeaders()); 248 } 249 250 /** 251 * Updates a shared link on a web link. 252 * 253 * @param webLinkId The ID of the web link. Example: "12345" 254 * @param queryParams Query parameters of updateSharedLinkOnWebLink method 255 * @param headers Headers of updateSharedLinkOnWebLink method 256 */ 257 public WebLink updateSharedLinkOnWebLink( 258 String webLinkId, 259 UpdateSharedLinkOnWebLinkQueryParams queryParams, 260 UpdateSharedLinkOnWebLinkHeaders headers) { 261 return updateSharedLinkOnWebLink( 262 webLinkId, new UpdateSharedLinkOnWebLinkRequestBody(), queryParams, headers); 263 } 264 265 /** 266 * Updates a shared link on a web link. 267 * 268 * @param webLinkId The ID of the web link. Example: "12345" 269 * @param requestBody Request body of updateSharedLinkOnWebLink method 270 * @param queryParams Query parameters of updateSharedLinkOnWebLink method 271 * @param headers Headers of updateSharedLinkOnWebLink method 272 */ 273 public WebLink updateSharedLinkOnWebLink( 274 String webLinkId, 275 UpdateSharedLinkOnWebLinkRequestBody requestBody, 276 UpdateSharedLinkOnWebLinkQueryParams queryParams, 277 UpdateSharedLinkOnWebLinkHeaders headers) { 278 Map<String, String> queryParamsMap = 279 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 280 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 281 FetchResponse response = 282 this.networkSession 283 .getNetworkClient() 284 .fetch( 285 new FetchOptions.Builder( 286 String.join( 287 "", 288 this.networkSession.getBaseUrls().getBaseUrl(), 289 "/2.0/web_links/", 290 convertToString(webLinkId), 291 "#update_shared_link"), 292 "PUT") 293 .params(queryParamsMap) 294 .headers(headersMap) 295 .data(JsonManager.serialize(requestBody)) 296 .contentType("application/json") 297 .responseFormat(ResponseFormat.JSON) 298 .auth(this.auth) 299 .networkSession(this.networkSession) 300 .build()); 301 return JsonManager.deserialize(response.getData(), WebLink.class); 302 } 303 304 /** 305 * Removes a shared link from a web link. 306 * 307 * @param webLinkId The ID of the web link. Example: "12345" 308 * @param queryParams Query parameters of removeSharedLinkFromWebLink method 309 */ 310 public WebLink removeSharedLinkFromWebLink( 311 String webLinkId, RemoveSharedLinkFromWebLinkQueryParams queryParams) { 312 return removeSharedLinkFromWebLink( 313 webLinkId, 314 new RemoveSharedLinkFromWebLinkRequestBody(), 315 queryParams, 316 new RemoveSharedLinkFromWebLinkHeaders()); 317 } 318 319 /** 320 * Removes a shared link from a web link. 321 * 322 * @param webLinkId The ID of the web link. Example: "12345" 323 * @param requestBody Request body of removeSharedLinkFromWebLink method 324 * @param queryParams Query parameters of removeSharedLinkFromWebLink method 325 */ 326 public WebLink removeSharedLinkFromWebLink( 327 String webLinkId, 328 RemoveSharedLinkFromWebLinkRequestBody requestBody, 329 RemoveSharedLinkFromWebLinkQueryParams queryParams) { 330 return removeSharedLinkFromWebLink( 331 webLinkId, requestBody, queryParams, new RemoveSharedLinkFromWebLinkHeaders()); 332 } 333 334 /** 335 * Removes a shared link from a web link. 336 * 337 * @param webLinkId The ID of the web link. Example: "12345" 338 * @param queryParams Query parameters of removeSharedLinkFromWebLink method 339 * @param headers Headers of removeSharedLinkFromWebLink method 340 */ 341 public WebLink removeSharedLinkFromWebLink( 342 String webLinkId, 343 RemoveSharedLinkFromWebLinkQueryParams queryParams, 344 RemoveSharedLinkFromWebLinkHeaders headers) { 345 return removeSharedLinkFromWebLink( 346 webLinkId, new RemoveSharedLinkFromWebLinkRequestBody(), queryParams, headers); 347 } 348 349 /** 350 * Removes a shared link from a web link. 351 * 352 * @param webLinkId The ID of the web link. Example: "12345" 353 * @param requestBody Request body of removeSharedLinkFromWebLink method 354 * @param queryParams Query parameters of removeSharedLinkFromWebLink method 355 * @param headers Headers of removeSharedLinkFromWebLink method 356 */ 357 public WebLink removeSharedLinkFromWebLink( 358 String webLinkId, 359 RemoveSharedLinkFromWebLinkRequestBody requestBody, 360 RemoveSharedLinkFromWebLinkQueryParams queryParams, 361 RemoveSharedLinkFromWebLinkHeaders headers) { 362 Map<String, String> queryParamsMap = 363 prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields())))); 364 Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders())); 365 FetchResponse response = 366 this.networkSession 367 .getNetworkClient() 368 .fetch( 369 new FetchOptions.Builder( 370 String.join( 371 "", 372 this.networkSession.getBaseUrls().getBaseUrl(), 373 "/2.0/web_links/", 374 convertToString(webLinkId), 375 "#remove_shared_link"), 376 "PUT") 377 .params(queryParamsMap) 378 .headers(headersMap) 379 .data(JsonManager.serialize(requestBody)) 380 .contentType("application/json") 381 .responseFormat(ResponseFormat.JSON) 382 .auth(this.auth) 383 .networkSession(this.networkSession) 384 .build()); 385 return JsonManager.deserialize(response.getData(), WebLink.class); 386 } 387 388 public Authentication getAuth() { 389 return auth; 390 } 391 392 public NetworkSession getNetworkSession() { 393 return networkSession; 394 } 395 396 public static class Builder { 397 398 protected Authentication auth; 399 400 protected NetworkSession networkSession; 401 402 public Builder() {} 403 404 public Builder auth(Authentication auth) { 405 this.auth = auth; 406 return this; 407 } 408 409 public Builder networkSession(NetworkSession networkSession) { 410 this.networkSession = networkSession; 411 return this; 412 } 413 414 public SharedLinksWebLinksManager build() { 415 if (this.networkSession == null) { 416 this.networkSession = new NetworkSession(); 417 } 418 return new SharedLinksWebLinksManager(this); 419 } 420 } 421}