001package com.box.sdkgen.managers.shieldinformationbarrierreports;
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.shieldinformationbarrierreference.ShieldInformationBarrierReference;
015import com.box.sdkgen.schemas.shieldinformationbarrierreport.ShieldInformationBarrierReport;
016import com.box.sdkgen.schemas.shieldinformationbarrierreports.ShieldInformationBarrierReports;
017import com.box.sdkgen.serialization.json.JsonManager;
018import java.util.Map;
019
020public class ShieldInformationBarrierReportsManager {
021
022  public Authentication auth;
023
024  public NetworkSession networkSession;
025
026  public ShieldInformationBarrierReportsManager() {
027    this.networkSession = new NetworkSession();
028  }
029
030  protected ShieldInformationBarrierReportsManager(Builder builder) {
031    this.auth = builder.auth;
032    this.networkSession = builder.networkSession;
033  }
034
035  /**
036   * Lists shield information barrier reports.
037   *
038   * @param queryParams Query parameters of getShieldInformationBarrierReports method
039   */
040  public ShieldInformationBarrierReports getShieldInformationBarrierReports(
041      GetShieldInformationBarrierReportsQueryParams queryParams) {
042    return getShieldInformationBarrierReports(
043        queryParams, new GetShieldInformationBarrierReportsHeaders());
044  }
045
046  /**
047   * Lists shield information barrier reports.
048   *
049   * @param queryParams Query parameters of getShieldInformationBarrierReports method
050   * @param headers Headers of getShieldInformationBarrierReports method
051   */
052  public ShieldInformationBarrierReports getShieldInformationBarrierReports(
053      GetShieldInformationBarrierReportsQueryParams queryParams,
054      GetShieldInformationBarrierReportsHeaders headers) {
055    Map<String, String> queryParamsMap =
056        prepareParams(
057            mapOf(
058                entryOf(
059                    "shield_information_barrier_id",
060                    convertToString(queryParams.getShieldInformationBarrierId())),
061                entryOf("marker", convertToString(queryParams.getMarker())),
062                entryOf("limit", convertToString(queryParams.getLimit()))));
063    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
064    FetchResponse response =
065        this.networkSession
066            .getNetworkClient()
067            .fetch(
068                new FetchOptions.Builder(
069                        String.join(
070                            "",
071                            this.networkSession.getBaseUrls().getBaseUrl(),
072                            "/2.0/shield_information_barrier_reports"),
073                        "GET")
074                    .params(queryParamsMap)
075                    .headers(headersMap)
076                    .responseFormat(ResponseFormat.JSON)
077                    .auth(this.auth)
078                    .networkSession(this.networkSession)
079                    .build());
080    return JsonManager.deserialize(response.getData(), ShieldInformationBarrierReports.class);
081  }
082
083  /**
084   * Creates a shield information barrier report for a given barrier.
085   *
086   * @param requestBody Request body of createShieldInformationBarrierReport method
087   */
088  public ShieldInformationBarrierReport createShieldInformationBarrierReport(
089      ShieldInformationBarrierReference requestBody) {
090    return createShieldInformationBarrierReport(
091        requestBody, new CreateShieldInformationBarrierReportHeaders());
092  }
093
094  /**
095   * Creates a shield information barrier report for a given barrier.
096   *
097   * @param requestBody Request body of createShieldInformationBarrierReport method
098   * @param headers Headers of createShieldInformationBarrierReport method
099   */
100  public ShieldInformationBarrierReport createShieldInformationBarrierReport(
101      ShieldInformationBarrierReference requestBody,
102      CreateShieldInformationBarrierReportHeaders headers) {
103    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
104    FetchResponse response =
105        this.networkSession
106            .getNetworkClient()
107            .fetch(
108                new FetchOptions.Builder(
109                        String.join(
110                            "",
111                            this.networkSession.getBaseUrls().getBaseUrl(),
112                            "/2.0/shield_information_barrier_reports"),
113                        "POST")
114                    .headers(headersMap)
115                    .data(JsonManager.serialize(requestBody))
116                    .contentType("application/json")
117                    .responseFormat(ResponseFormat.JSON)
118                    .auth(this.auth)
119                    .networkSession(this.networkSession)
120                    .build());
121    return JsonManager.deserialize(response.getData(), ShieldInformationBarrierReport.class);
122  }
123
124  /**
125   * Retrieves a shield information barrier report by its ID.
126   *
127   * @param shieldInformationBarrierReportId The ID of the shield information barrier Report.
128   *     Example: "3423"
129   */
130  public ShieldInformationBarrierReport getShieldInformationBarrierReportById(
131      String shieldInformationBarrierReportId) {
132    return getShieldInformationBarrierReportById(
133        shieldInformationBarrierReportId, new GetShieldInformationBarrierReportByIdHeaders());
134  }
135
136  /**
137   * Retrieves a shield information barrier report by its ID.
138   *
139   * @param shieldInformationBarrierReportId The ID of the shield information barrier Report.
140   *     Example: "3423"
141   * @param headers Headers of getShieldInformationBarrierReportById method
142   */
143  public ShieldInformationBarrierReport getShieldInformationBarrierReportById(
144      String shieldInformationBarrierReportId,
145      GetShieldInformationBarrierReportByIdHeaders headers) {
146    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), headers.getExtraHeaders()));
147    FetchResponse response =
148        this.networkSession
149            .getNetworkClient()
150            .fetch(
151                new FetchOptions.Builder(
152                        String.join(
153                            "",
154                            this.networkSession.getBaseUrls().getBaseUrl(),
155                            "/2.0/shield_information_barrier_reports/",
156                            convertToString(shieldInformationBarrierReportId)),
157                        "GET")
158                    .headers(headersMap)
159                    .responseFormat(ResponseFormat.JSON)
160                    .auth(this.auth)
161                    .networkSession(this.networkSession)
162                    .build());
163    return JsonManager.deserialize(response.getData(), ShieldInformationBarrierReport.class);
164  }
165
166  public Authentication getAuth() {
167    return auth;
168  }
169
170  public NetworkSession getNetworkSession() {
171    return networkSession;
172  }
173
174  public static class Builder {
175
176    protected Authentication auth;
177
178    protected NetworkSession networkSession;
179
180    public Builder() {}
181
182    public Builder auth(Authentication auth) {
183      this.auth = auth;
184      return this;
185    }
186
187    public Builder networkSession(NetworkSession networkSession) {
188      this.networkSession = networkSession;
189      return this;
190    }
191
192    public ShieldInformationBarrierReportsManager build() {
193      if (this.networkSession == null) {
194        this.networkSession = new NetworkSession();
195      }
196      return new ShieldInformationBarrierReportsManager(this);
197    }
198  }
199}