001package com.box.sdkgen.managers.fileversionretentions;
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.fileversionretention.FileVersionRetention;
015import com.box.sdkgen.schemas.fileversionretentions.FileVersionRetentions;
016import com.box.sdkgen.serialization.json.JsonManager;
017import java.util.Map;
018
019public class FileVersionRetentionsManager {
020
021  public Authentication auth;
022
023  public NetworkSession networkSession;
024
025  public FileVersionRetentionsManager() {
026    this.networkSession = new NetworkSession();
027  }
028
029  protected FileVersionRetentionsManager(Builder builder) {
030    this.auth = builder.auth;
031    this.networkSession = builder.networkSession;
032  }
033
034  /**
035   * Retrieves all file version retentions for the given enterprise.
036   *
037   * <p>**Note**: File retention API is now **deprecated**. To get information about files and file
038   * versions under retention, see [files under
039   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)
040   * or [file versions under
041   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)
042   * endpoints.
043   */
044  public FileVersionRetentions getFileVersionRetentions() {
045    return getFileVersionRetentions(
046        new GetFileVersionRetentionsQueryParams(), new GetFileVersionRetentionsHeaders());
047  }
048
049  /**
050   * Retrieves all file version retentions for the given enterprise.
051   *
052   * <p>**Note**: File retention API is now **deprecated**. To get information about files and file
053   * versions under retention, see [files under
054   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)
055   * or [file versions under
056   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)
057   * endpoints.
058   *
059   * @param queryParams Query parameters of getFileVersionRetentions method
060   */
061  public FileVersionRetentions getFileVersionRetentions(
062      GetFileVersionRetentionsQueryParams queryParams) {
063    return getFileVersionRetentions(queryParams, new GetFileVersionRetentionsHeaders());
064  }
065
066  /**
067   * Retrieves all file version retentions for the given enterprise.
068   *
069   * <p>**Note**: File retention API is now **deprecated**. To get information about files and file
070   * versions under retention, see [files under
071   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)
072   * or [file versions under
073   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)
074   * endpoints.
075   *
076   * @param headers Headers of getFileVersionRetentions method
077   */
078  public FileVersionRetentions getFileVersionRetentions(GetFileVersionRetentionsHeaders headers) {
079    return getFileVersionRetentions(new GetFileVersionRetentionsQueryParams(), headers);
080  }
081
082  /**
083   * Retrieves all file version retentions for the given enterprise.
084   *
085   * <p>**Note**: File retention API is now **deprecated**. To get information about files and file
086   * versions under retention, see [files under
087   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)
088   * or [file versions under
089   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)
090   * endpoints.
091   *
092   * @param queryParams Query parameters of getFileVersionRetentions method
093   * @param headers Headers of getFileVersionRetentions method
094   */
095  public FileVersionRetentions getFileVersionRetentions(
096      GetFileVersionRetentionsQueryParams queryParams, GetFileVersionRetentionsHeaders headers) {
097    Map<String, String> queryParamsMap =
098        prepareParams(
099            mapOf(
100                entryOf("file_id", convertToString(queryParams.getFileId())),
101                entryOf("file_version_id", convertToString(queryParams.getFileVersionId())),
102                entryOf("policy_id", convertToString(queryParams.getPolicyId())),
103                entryOf("disposition_action", convertToString(queryParams.getDispositionAction())),
104                entryOf("disposition_before", convertToString(queryParams.getDispositionBefore())),
105                entryOf("disposition_after", convertToString(queryParams.getDispositionAfter())),
106                entryOf("limit", convertToString(queryParams.getLimit())),
107                entryOf("marker", convertToString(queryParams.getMarker()))));
108    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
109    FetchResponse response =
110        this.networkSession
111            .getNetworkClient()
112            .fetch(
113                new FetchOptions.Builder(
114                        String.join(
115                            "",
116                            this.networkSession.getBaseUrls().getBaseUrl(),
117                            "/2.0/file_version_retentions"),
118                        "GET")
119                    .params(queryParamsMap)
120                    .headers(headersMap)
121                    .responseFormat(ResponseFormat.JSON)
122                    .auth(this.auth)
123                    .networkSession(this.networkSession)
124                    .build());
125    return JsonManager.deserialize(response.getData(), FileVersionRetentions.class);
126  }
127
128  /**
129   * Returns information about a file version retention.
130   *
131   * <p>**Note**: File retention API is now **deprecated**. To get information about files and file
132   * versions under retention, see [files under
133   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)
134   * or [file versions under
135   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)
136   * endpoints.
137   *
138   * @param fileVersionRetentionId The ID of the file version retention. Example: "3424234"
139   */
140  public FileVersionRetention getFileVersionRetentionById(String fileVersionRetentionId) {
141    return getFileVersionRetentionById(
142        fileVersionRetentionId, new GetFileVersionRetentionByIdHeaders());
143  }
144
145  /**
146   * Returns information about a file version retention.
147   *
148   * <p>**Note**: File retention API is now **deprecated**. To get information about files and file
149   * versions under retention, see [files under
150   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-files-under-retention)
151   * or [file versions under
152   * retention](https://developer.box.com/reference/get-retention-policy-assignments-id-file-versions-under-retention)
153   * endpoints.
154   *
155   * @param fileVersionRetentionId The ID of the file version retention. Example: "3424234"
156   * @param headers Headers of getFileVersionRetentionById method
157   */
158  public FileVersionRetention getFileVersionRetentionById(
159      String fileVersionRetentionId, GetFileVersionRetentionByIdHeaders headers) {
160    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
161    FetchResponse response =
162        this.networkSession
163            .getNetworkClient()
164            .fetch(
165                new FetchOptions.Builder(
166                        String.join(
167                            "",
168                            this.networkSession.getBaseUrls().getBaseUrl(),
169                            "/2.0/file_version_retentions/",
170                            convertToString(fileVersionRetentionId)),
171                        "GET")
172                    .headers(headersMap)
173                    .responseFormat(ResponseFormat.JSON)
174                    .auth(this.auth)
175                    .networkSession(this.networkSession)
176                    .build());
177    return JsonManager.deserialize(response.getData(), FileVersionRetention.class);
178  }
179
180  public Authentication getAuth() {
181    return auth;
182  }
183
184  public NetworkSession getNetworkSession() {
185    return networkSession;
186  }
187
188  public static class Builder {
189
190    protected Authentication auth;
191
192    protected NetworkSession networkSession;
193
194    public Builder() {}
195
196    public Builder auth(Authentication auth) {
197      this.auth = auth;
198      return this;
199    }
200
201    public Builder networkSession(NetworkSession networkSession) {
202      this.networkSession = networkSession;
203      return this;
204    }
205
206    public FileVersionRetentionsManager build() {
207      if (this.networkSession == null) {
208        this.networkSession = new NetworkSession();
209      }
210      return new FileVersionRetentionsManager(this);
211    }
212  }
213}