001package com.box.sdkgen.managers.trashedweblinks;
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.trashweblink.TrashWebLink;
015import com.box.sdkgen.schemas.trashweblinkrestored.TrashWebLinkRestored;
016import com.box.sdkgen.serialization.json.JsonManager;
017import java.util.Map;
018
019public class TrashedWebLinksManager {
020
021  public Authentication auth;
022
023  public NetworkSession networkSession;
024
025  public TrashedWebLinksManager() {
026    this.networkSession = new NetworkSession();
027  }
028
029  protected TrashedWebLinksManager(Builder builder) {
030    this.auth = builder.auth;
031    this.networkSession = builder.networkSession;
032  }
033
034  /**
035   * Restores a web link that has been moved to the trash.
036   *
037   * <p>An optional new parent ID can be provided to restore the web link to in case the original
038   * folder has been deleted.
039   *
040   * @param webLinkId The ID of the web link. Example: "12345"
041   */
042  public TrashWebLinkRestored restoreWeblinkFromTrash(String webLinkId) {
043    return restoreWeblinkFromTrash(
044        webLinkId,
045        new RestoreWeblinkFromTrashRequestBody(),
046        new RestoreWeblinkFromTrashQueryParams(),
047        new RestoreWeblinkFromTrashHeaders());
048  }
049
050  /**
051   * Restores a web link that has been moved to the trash.
052   *
053   * <p>An optional new parent ID can be provided to restore the web link to in case the original
054   * folder has been deleted.
055   *
056   * @param webLinkId The ID of the web link. Example: "12345"
057   * @param requestBody Request body of restoreWeblinkFromTrash method
058   */
059  public TrashWebLinkRestored restoreWeblinkFromTrash(
060      String webLinkId, RestoreWeblinkFromTrashRequestBody requestBody) {
061    return restoreWeblinkFromTrash(
062        webLinkId,
063        requestBody,
064        new RestoreWeblinkFromTrashQueryParams(),
065        new RestoreWeblinkFromTrashHeaders());
066  }
067
068  /**
069   * Restores a web link that has been moved to the trash.
070   *
071   * <p>An optional new parent ID can be provided to restore the web link to in case the original
072   * folder has been deleted.
073   *
074   * @param webLinkId The ID of the web link. Example: "12345"
075   * @param queryParams Query parameters of restoreWeblinkFromTrash method
076   */
077  public TrashWebLinkRestored restoreWeblinkFromTrash(
078      String webLinkId, RestoreWeblinkFromTrashQueryParams queryParams) {
079    return restoreWeblinkFromTrash(
080        webLinkId,
081        new RestoreWeblinkFromTrashRequestBody(),
082        queryParams,
083        new RestoreWeblinkFromTrashHeaders());
084  }
085
086  /**
087   * Restores a web link that has been moved to the trash.
088   *
089   * <p>An optional new parent ID can be provided to restore the web link to in case the original
090   * folder has been deleted.
091   *
092   * @param webLinkId The ID of the web link. Example: "12345"
093   * @param requestBody Request body of restoreWeblinkFromTrash method
094   * @param queryParams Query parameters of restoreWeblinkFromTrash method
095   */
096  public TrashWebLinkRestored restoreWeblinkFromTrash(
097      String webLinkId,
098      RestoreWeblinkFromTrashRequestBody requestBody,
099      RestoreWeblinkFromTrashQueryParams queryParams) {
100    return restoreWeblinkFromTrash(
101        webLinkId, requestBody, queryParams, new RestoreWeblinkFromTrashHeaders());
102  }
103
104  /**
105   * Restores a web link that has been moved to the trash.
106   *
107   * <p>An optional new parent ID can be provided to restore the web link to in case the original
108   * folder has been deleted.
109   *
110   * @param webLinkId The ID of the web link. Example: "12345"
111   * @param headers Headers of restoreWeblinkFromTrash method
112   */
113  public TrashWebLinkRestored restoreWeblinkFromTrash(
114      String webLinkId, RestoreWeblinkFromTrashHeaders headers) {
115    return restoreWeblinkFromTrash(
116        webLinkId,
117        new RestoreWeblinkFromTrashRequestBody(),
118        new RestoreWeblinkFromTrashQueryParams(),
119        headers);
120  }
121
122  /**
123   * Restores a web link that has been moved to the trash.
124   *
125   * <p>An optional new parent ID can be provided to restore the web link to in case the original
126   * folder has been deleted.
127   *
128   * @param webLinkId The ID of the web link. Example: "12345"
129   * @param requestBody Request body of restoreWeblinkFromTrash method
130   * @param headers Headers of restoreWeblinkFromTrash method
131   */
132  public TrashWebLinkRestored restoreWeblinkFromTrash(
133      String webLinkId,
134      RestoreWeblinkFromTrashRequestBody requestBody,
135      RestoreWeblinkFromTrashHeaders headers) {
136    return restoreWeblinkFromTrash(
137        webLinkId, requestBody, new RestoreWeblinkFromTrashQueryParams(), headers);
138  }
139
140  /**
141   * Restores a web link that has been moved to the trash.
142   *
143   * <p>An optional new parent ID can be provided to restore the web link to in case the original
144   * folder has been deleted.
145   *
146   * @param webLinkId The ID of the web link. Example: "12345"
147   * @param queryParams Query parameters of restoreWeblinkFromTrash method
148   * @param headers Headers of restoreWeblinkFromTrash method
149   */
150  public TrashWebLinkRestored restoreWeblinkFromTrash(
151      String webLinkId,
152      RestoreWeblinkFromTrashQueryParams queryParams,
153      RestoreWeblinkFromTrashHeaders headers) {
154    return restoreWeblinkFromTrash(
155        webLinkId, new RestoreWeblinkFromTrashRequestBody(), queryParams, headers);
156  }
157
158  /**
159   * Restores a web link that has been moved to the trash.
160   *
161   * <p>An optional new parent ID can be provided to restore the web link to in case the original
162   * folder has been deleted.
163   *
164   * @param webLinkId The ID of the web link. Example: "12345"
165   * @param requestBody Request body of restoreWeblinkFromTrash method
166   * @param queryParams Query parameters of restoreWeblinkFromTrash method
167   * @param headers Headers of restoreWeblinkFromTrash method
168   */
169  public TrashWebLinkRestored restoreWeblinkFromTrash(
170      String webLinkId,
171      RestoreWeblinkFromTrashRequestBody requestBody,
172      RestoreWeblinkFromTrashQueryParams queryParams,
173      RestoreWeblinkFromTrashHeaders headers) {
174    Map<String, String> queryParamsMap =
175        prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields()))));
176    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
177    FetchResponse response =
178        this.networkSession
179            .getNetworkClient()
180            .fetch(
181                new FetchOptions.Builder(
182                        String.join(
183                            "",
184                            this.networkSession.getBaseUrls().getBaseUrl(),
185                            "/2.0/web_links/",
186                            convertToString(webLinkId)),
187                        "POST")
188                    .params(queryParamsMap)
189                    .headers(headersMap)
190                    .data(JsonManager.serialize(requestBody))
191                    .contentType("application/json")
192                    .responseFormat(ResponseFormat.JSON)
193                    .auth(this.auth)
194                    .networkSession(this.networkSession)
195                    .build());
196    return JsonManager.deserialize(response.getData(), TrashWebLinkRestored.class);
197  }
198
199  /**
200   * Retrieves a web link that has been moved to the trash.
201   *
202   * @param webLinkId The ID of the web link. Example: "12345"
203   */
204  public TrashWebLink getTrashedWebLinkById(String webLinkId) {
205    return getTrashedWebLinkById(
206        webLinkId, new GetTrashedWebLinkByIdQueryParams(), new GetTrashedWebLinkByIdHeaders());
207  }
208
209  /**
210   * Retrieves a web link that has been moved to the trash.
211   *
212   * @param webLinkId The ID of the web link. Example: "12345"
213   * @param queryParams Query parameters of getTrashedWebLinkById method
214   */
215  public TrashWebLink getTrashedWebLinkById(
216      String webLinkId, GetTrashedWebLinkByIdQueryParams queryParams) {
217    return getTrashedWebLinkById(webLinkId, queryParams, new GetTrashedWebLinkByIdHeaders());
218  }
219
220  /**
221   * Retrieves a web link that has been moved to the trash.
222   *
223   * @param webLinkId The ID of the web link. Example: "12345"
224   * @param headers Headers of getTrashedWebLinkById method
225   */
226  public TrashWebLink getTrashedWebLinkById(
227      String webLinkId, GetTrashedWebLinkByIdHeaders headers) {
228    return getTrashedWebLinkById(webLinkId, new GetTrashedWebLinkByIdQueryParams(), headers);
229  }
230
231  /**
232   * Retrieves a web link that has been moved to the trash.
233   *
234   * @param webLinkId The ID of the web link. Example: "12345"
235   * @param queryParams Query parameters of getTrashedWebLinkById method
236   * @param headers Headers of getTrashedWebLinkById method
237   */
238  public TrashWebLink getTrashedWebLinkById(
239      String webLinkId,
240      GetTrashedWebLinkByIdQueryParams queryParams,
241      GetTrashedWebLinkByIdHeaders headers) {
242    Map<String, String> queryParamsMap =
243        prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields()))));
244    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
245    FetchResponse response =
246        this.networkSession
247            .getNetworkClient()
248            .fetch(
249                new FetchOptions.Builder(
250                        String.join(
251                            "",
252                            this.networkSession.getBaseUrls().getBaseUrl(),
253                            "/2.0/web_links/",
254                            convertToString(webLinkId),
255                            "/trash"),
256                        "GET")
257                    .params(queryParamsMap)
258                    .headers(headersMap)
259                    .responseFormat(ResponseFormat.JSON)
260                    .auth(this.auth)
261                    .networkSession(this.networkSession)
262                    .build());
263    return JsonManager.deserialize(response.getData(), TrashWebLink.class);
264  }
265
266  /**
267   * Permanently deletes a web link that is in the trash. This action cannot be undone.
268   *
269   * @param webLinkId The ID of the web link. Example: "12345"
270   */
271  public void deleteTrashedWebLinkById(String webLinkId) {
272    deleteTrashedWebLinkById(webLinkId, new DeleteTrashedWebLinkByIdHeaders());
273  }
274
275  /**
276   * Permanently deletes a web link that is in the trash. This action cannot be undone.
277   *
278   * @param webLinkId The ID of the web link. Example: "12345"
279   * @param headers Headers of deleteTrashedWebLinkById method
280   */
281  public void deleteTrashedWebLinkById(String webLinkId, DeleteTrashedWebLinkByIdHeaders headers) {
282    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
283    FetchResponse response =
284        this.networkSession
285            .getNetworkClient()
286            .fetch(
287                new FetchOptions.Builder(
288                        String.join(
289                            "",
290                            this.networkSession.getBaseUrls().getBaseUrl(),
291                            "/2.0/web_links/",
292                            convertToString(webLinkId),
293                            "/trash"),
294                        "DELETE")
295                    .headers(headersMap)
296                    .responseFormat(ResponseFormat.NO_CONTENT)
297                    .auth(this.auth)
298                    .networkSession(this.networkSession)
299                    .build());
300  }
301
302  public Authentication getAuth() {
303    return auth;
304  }
305
306  public NetworkSession getNetworkSession() {
307    return networkSession;
308  }
309
310  public static class Builder {
311
312    protected Authentication auth;
313
314    protected NetworkSession networkSession;
315
316    public Builder() {}
317
318    public Builder auth(Authentication auth) {
319      this.auth = auth;
320      return this;
321    }
322
323    public Builder networkSession(NetworkSession networkSession) {
324      this.networkSession = networkSession;
325      return this;
326    }
327
328    public TrashedWebLinksManager build() {
329      if (this.networkSession == null) {
330        this.networkSession = new NetworkSession();
331      }
332      return new TrashedWebLinksManager(this);
333    }
334  }
335}