001package com.box.sdkgen.managers.retentionpolicyassignments;
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.filesunderretention.FilesUnderRetention;
015import com.box.sdkgen.schemas.retentionpolicyassignment.RetentionPolicyAssignment;
016import com.box.sdkgen.schemas.retentionpolicyassignments.RetentionPolicyAssignments;
017import com.box.sdkgen.serialization.json.JsonManager;
018import java.util.Map;
019
020public class RetentionPolicyAssignmentsManager {
021
022  public Authentication auth;
023
024  public NetworkSession networkSession;
025
026  public RetentionPolicyAssignmentsManager() {
027    this.networkSession = new NetworkSession();
028  }
029
030  protected RetentionPolicyAssignmentsManager(Builder builder) {
031    this.auth = builder.auth;
032    this.networkSession = builder.networkSession;
033  }
034
035  /**
036   * Returns a list of all retention policy assignments associated with a specified retention
037   * policy.
038   *
039   * @param retentionPolicyId The ID of the retention policy. Example: "982312"
040   */
041  public RetentionPolicyAssignments getRetentionPolicyAssignments(String retentionPolicyId) {
042    return getRetentionPolicyAssignments(
043        retentionPolicyId,
044        new GetRetentionPolicyAssignmentsQueryParams(),
045        new GetRetentionPolicyAssignmentsHeaders());
046  }
047
048  /**
049   * Returns a list of all retention policy assignments associated with a specified retention
050   * policy.
051   *
052   * @param retentionPolicyId The ID of the retention policy. Example: "982312"
053   * @param queryParams Query parameters of getRetentionPolicyAssignments method
054   */
055  public RetentionPolicyAssignments getRetentionPolicyAssignments(
056      String retentionPolicyId, GetRetentionPolicyAssignmentsQueryParams queryParams) {
057    return getRetentionPolicyAssignments(
058        retentionPolicyId, queryParams, new GetRetentionPolicyAssignmentsHeaders());
059  }
060
061  /**
062   * Returns a list of all retention policy assignments associated with a specified retention
063   * policy.
064   *
065   * @param retentionPolicyId The ID of the retention policy. Example: "982312"
066   * @param headers Headers of getRetentionPolicyAssignments method
067   */
068  public RetentionPolicyAssignments getRetentionPolicyAssignments(
069      String retentionPolicyId, GetRetentionPolicyAssignmentsHeaders headers) {
070    return getRetentionPolicyAssignments(
071        retentionPolicyId, new GetRetentionPolicyAssignmentsQueryParams(), headers);
072  }
073
074  /**
075   * Returns a list of all retention policy assignments associated with a specified retention
076   * policy.
077   *
078   * @param retentionPolicyId The ID of the retention policy. Example: "982312"
079   * @param queryParams Query parameters of getRetentionPolicyAssignments method
080   * @param headers Headers of getRetentionPolicyAssignments method
081   */
082  public RetentionPolicyAssignments getRetentionPolicyAssignments(
083      String retentionPolicyId,
084      GetRetentionPolicyAssignmentsQueryParams queryParams,
085      GetRetentionPolicyAssignmentsHeaders headers) {
086    Map<String, String> queryParamsMap =
087        prepareParams(
088            mapOf(
089                entryOf("type", convertToString(queryParams.getType())),
090                entryOf("fields", convertToString(queryParams.getFields())),
091                entryOf("marker", convertToString(queryParams.getMarker())),
092                entryOf("limit", convertToString(queryParams.getLimit()))));
093    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
094    FetchResponse response =
095        this.networkSession
096            .getNetworkClient()
097            .fetch(
098                new FetchOptions.Builder(
099                        String.join(
100                            "",
101                            this.networkSession.getBaseUrls().getBaseUrl(),
102                            "/2.0/retention_policies/",
103                            convertToString(retentionPolicyId),
104                            "/assignments"),
105                        "GET")
106                    .params(queryParamsMap)
107                    .headers(headersMap)
108                    .responseFormat(ResponseFormat.JSON)
109                    .auth(this.auth)
110                    .networkSession(this.networkSession)
111                    .build());
112    return JsonManager.deserialize(response.getData(), RetentionPolicyAssignments.class);
113  }
114
115  /**
116   * Assigns a retention policy to an item.
117   *
118   * @param requestBody Request body of createRetentionPolicyAssignment method
119   */
120  public RetentionPolicyAssignment createRetentionPolicyAssignment(
121      CreateRetentionPolicyAssignmentRequestBody requestBody) {
122    return createRetentionPolicyAssignment(
123        requestBody, new CreateRetentionPolicyAssignmentHeaders());
124  }
125
126  /**
127   * Assigns a retention policy to an item.
128   *
129   * @param requestBody Request body of createRetentionPolicyAssignment method
130   * @param headers Headers of createRetentionPolicyAssignment method
131   */
132  public RetentionPolicyAssignment createRetentionPolicyAssignment(
133      CreateRetentionPolicyAssignmentRequestBody requestBody,
134      CreateRetentionPolicyAssignmentHeaders headers) {
135    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
136    FetchResponse response =
137        this.networkSession
138            .getNetworkClient()
139            .fetch(
140                new FetchOptions.Builder(
141                        String.join(
142                            "",
143                            this.networkSession.getBaseUrls().getBaseUrl(),
144                            "/2.0/retention_policy_assignments"),
145                        "POST")
146                    .headers(headersMap)
147                    .data(JsonManager.serialize(requestBody))
148                    .contentType("application/json")
149                    .responseFormat(ResponseFormat.JSON)
150                    .auth(this.auth)
151                    .networkSession(this.networkSession)
152                    .build());
153    return JsonManager.deserialize(response.getData(), RetentionPolicyAssignment.class);
154  }
155
156  /**
157   * Retrieves a retention policy assignment.
158   *
159   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
160   *     "1233123"
161   */
162  public RetentionPolicyAssignment getRetentionPolicyAssignmentById(
163      String retentionPolicyAssignmentId) {
164    return getRetentionPolicyAssignmentById(
165        retentionPolicyAssignmentId,
166        new GetRetentionPolicyAssignmentByIdQueryParams(),
167        new GetRetentionPolicyAssignmentByIdHeaders());
168  }
169
170  /**
171   * Retrieves a retention policy assignment.
172   *
173   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
174   *     "1233123"
175   * @param queryParams Query parameters of getRetentionPolicyAssignmentById method
176   */
177  public RetentionPolicyAssignment getRetentionPolicyAssignmentById(
178      String retentionPolicyAssignmentId, GetRetentionPolicyAssignmentByIdQueryParams queryParams) {
179    return getRetentionPolicyAssignmentById(
180        retentionPolicyAssignmentId, queryParams, new GetRetentionPolicyAssignmentByIdHeaders());
181  }
182
183  /**
184   * Retrieves a retention policy assignment.
185   *
186   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
187   *     "1233123"
188   * @param headers Headers of getRetentionPolicyAssignmentById method
189   */
190  public RetentionPolicyAssignment getRetentionPolicyAssignmentById(
191      String retentionPolicyAssignmentId, GetRetentionPolicyAssignmentByIdHeaders headers) {
192    return getRetentionPolicyAssignmentById(
193        retentionPolicyAssignmentId, new GetRetentionPolicyAssignmentByIdQueryParams(), headers);
194  }
195
196  /**
197   * Retrieves a retention policy assignment.
198   *
199   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
200   *     "1233123"
201   * @param queryParams Query parameters of getRetentionPolicyAssignmentById method
202   * @param headers Headers of getRetentionPolicyAssignmentById method
203   */
204  public RetentionPolicyAssignment getRetentionPolicyAssignmentById(
205      String retentionPolicyAssignmentId,
206      GetRetentionPolicyAssignmentByIdQueryParams queryParams,
207      GetRetentionPolicyAssignmentByIdHeaders headers) {
208    Map<String, String> queryParamsMap =
209        prepareParams(mapOf(entryOf("fields", convertToString(queryParams.getFields()))));
210    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
211    FetchResponse response =
212        this.networkSession
213            .getNetworkClient()
214            .fetch(
215                new FetchOptions.Builder(
216                        String.join(
217                            "",
218                            this.networkSession.getBaseUrls().getBaseUrl(),
219                            "/2.0/retention_policy_assignments/",
220                            convertToString(retentionPolicyAssignmentId)),
221                        "GET")
222                    .params(queryParamsMap)
223                    .headers(headersMap)
224                    .responseFormat(ResponseFormat.JSON)
225                    .auth(this.auth)
226                    .networkSession(this.networkSession)
227                    .build());
228    return JsonManager.deserialize(response.getData(), RetentionPolicyAssignment.class);
229  }
230
231  /**
232   * Removes a retention policy assignment applied to content.
233   *
234   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
235   *     "1233123"
236   */
237  public void deleteRetentionPolicyAssignmentById(String retentionPolicyAssignmentId) {
238    deleteRetentionPolicyAssignmentById(
239        retentionPolicyAssignmentId, new DeleteRetentionPolicyAssignmentByIdHeaders());
240  }
241
242  /**
243   * Removes a retention policy assignment applied to content.
244   *
245   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
246   *     "1233123"
247   * @param headers Headers of deleteRetentionPolicyAssignmentById method
248   */
249  public void deleteRetentionPolicyAssignmentById(
250      String retentionPolicyAssignmentId, DeleteRetentionPolicyAssignmentByIdHeaders headers) {
251    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
252    FetchResponse response =
253        this.networkSession
254            .getNetworkClient()
255            .fetch(
256                new FetchOptions.Builder(
257                        String.join(
258                            "",
259                            this.networkSession.getBaseUrls().getBaseUrl(),
260                            "/2.0/retention_policy_assignments/",
261                            convertToString(retentionPolicyAssignmentId)),
262                        "DELETE")
263                    .headers(headersMap)
264                    .responseFormat(ResponseFormat.NO_CONTENT)
265                    .auth(this.auth)
266                    .networkSession(this.networkSession)
267                    .build());
268  }
269
270  /**
271   * Returns a list of files under retention for a retention policy assignment.
272   *
273   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
274   *     "1233123"
275   */
276  public FilesUnderRetention getFilesUnderRetentionPolicyAssignment(
277      String retentionPolicyAssignmentId) {
278    return getFilesUnderRetentionPolicyAssignment(
279        retentionPolicyAssignmentId,
280        new GetFilesUnderRetentionPolicyAssignmentQueryParams(),
281        new GetFilesUnderRetentionPolicyAssignmentHeaders());
282  }
283
284  /**
285   * Returns a list of files under retention for a retention policy assignment.
286   *
287   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
288   *     "1233123"
289   * @param queryParams Query parameters of getFilesUnderRetentionPolicyAssignment method
290   */
291  public FilesUnderRetention getFilesUnderRetentionPolicyAssignment(
292      String retentionPolicyAssignmentId,
293      GetFilesUnderRetentionPolicyAssignmentQueryParams queryParams) {
294    return getFilesUnderRetentionPolicyAssignment(
295        retentionPolicyAssignmentId,
296        queryParams,
297        new GetFilesUnderRetentionPolicyAssignmentHeaders());
298  }
299
300  /**
301   * Returns a list of files under retention for a retention policy assignment.
302   *
303   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
304   *     "1233123"
305   * @param headers Headers of getFilesUnderRetentionPolicyAssignment method
306   */
307  public FilesUnderRetention getFilesUnderRetentionPolicyAssignment(
308      String retentionPolicyAssignmentId, GetFilesUnderRetentionPolicyAssignmentHeaders headers) {
309    return getFilesUnderRetentionPolicyAssignment(
310        retentionPolicyAssignmentId,
311        new GetFilesUnderRetentionPolicyAssignmentQueryParams(),
312        headers);
313  }
314
315  /**
316   * Returns a list of files under retention for a retention policy assignment.
317   *
318   * @param retentionPolicyAssignmentId The ID of the retention policy assignment. Example:
319   *     "1233123"
320   * @param queryParams Query parameters of getFilesUnderRetentionPolicyAssignment method
321   * @param headers Headers of getFilesUnderRetentionPolicyAssignment method
322   */
323  public FilesUnderRetention getFilesUnderRetentionPolicyAssignment(
324      String retentionPolicyAssignmentId,
325      GetFilesUnderRetentionPolicyAssignmentQueryParams queryParams,
326      GetFilesUnderRetentionPolicyAssignmentHeaders headers) {
327    Map<String, String> queryParamsMap =
328        prepareParams(
329            mapOf(
330                entryOf("marker", convertToString(queryParams.getMarker())),
331                entryOf("limit", convertToString(queryParams.getLimit()))));
332    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
333    FetchResponse response =
334        this.networkSession
335            .getNetworkClient()
336            .fetch(
337                new FetchOptions.Builder(
338                        String.join(
339                            "",
340                            this.networkSession.getBaseUrls().getBaseUrl(),
341                            "/2.0/retention_policy_assignments/",
342                            convertToString(retentionPolicyAssignmentId),
343                            "/files_under_retention"),
344                        "GET")
345                    .params(queryParamsMap)
346                    .headers(headersMap)
347                    .responseFormat(ResponseFormat.JSON)
348                    .auth(this.auth)
349                    .networkSession(this.networkSession)
350                    .build());
351    return JsonManager.deserialize(response.getData(), FilesUnderRetention.class);
352  }
353
354  public Authentication getAuth() {
355    return auth;
356  }
357
358  public NetworkSession getNetworkSession() {
359    return networkSession;
360  }
361
362  public static class Builder {
363
364    protected Authentication auth;
365
366    protected NetworkSession networkSession;
367
368    public Builder() {}
369
370    public Builder auth(Authentication auth) {
371      this.auth = auth;
372      return this;
373    }
374
375    public Builder networkSession(NetworkSession networkSession) {
376      this.networkSession = networkSession;
377      return this;
378    }
379
380    public RetentionPolicyAssignmentsManager build() {
381      if (this.networkSession == null) {
382        this.networkSession = new NetworkSession();
383      }
384      return new RetentionPolicyAssignmentsManager(this);
385    }
386  }
387}