001package com.box.sdkgen.managers.signtemplates;
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.signtemplate.SignTemplate;
015import com.box.sdkgen.schemas.signtemplates.SignTemplates;
016import com.box.sdkgen.serialization.json.JsonManager;
017import java.util.Map;
018
019public class SignTemplatesManager {
020
021  public Authentication auth;
022
023  public NetworkSession networkSession;
024
025  public SignTemplatesManager() {
026    this.networkSession = new NetworkSession();
027  }
028
029  protected SignTemplatesManager(Builder builder) {
030    this.auth = builder.auth;
031    this.networkSession = builder.networkSession;
032  }
033
034  /** Gets Box Sign templates created by a user. */
035  public SignTemplates getSignTemplates() {
036    return getSignTemplates(new GetSignTemplatesQueryParams(), new GetSignTemplatesHeaders());
037  }
038
039  /**
040   * Gets Box Sign templates created by a user.
041   *
042   * @param queryParams Query parameters of getSignTemplates method
043   */
044  public SignTemplates getSignTemplates(GetSignTemplatesQueryParams queryParams) {
045    return getSignTemplates(queryParams, new GetSignTemplatesHeaders());
046  }
047
048  /**
049   * Gets Box Sign templates created by a user.
050   *
051   * @param headers Headers of getSignTemplates method
052   */
053  public SignTemplates getSignTemplates(GetSignTemplatesHeaders headers) {
054    return getSignTemplates(new GetSignTemplatesQueryParams(), headers);
055  }
056
057  /**
058   * Gets Box Sign templates created by a user.
059   *
060   * @param queryParams Query parameters of getSignTemplates method
061   * @param headers Headers of getSignTemplates method
062   */
063  public SignTemplates getSignTemplates(
064      GetSignTemplatesQueryParams queryParams, GetSignTemplatesHeaders headers) {
065    Map<String, String> queryParamsMap =
066        prepareParams(
067            mapOf(
068                entryOf("marker", convertToString(queryParams.getMarker())),
069                entryOf("limit", convertToString(queryParams.getLimit()))));
070    Map<String, String> headersMap = prepareParams(mergeMaps(mapOf(), 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/sign_templates"),
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(), SignTemplates.class);
088  }
089
090  /**
091   * Fetches details of a specific Box Sign template.
092   *
093   * @param templateId The ID of a Box Sign template. Example:
094   *     "123075213-7d117509-8f05-42e4-a5ef-5190a319d41d"
095   */
096  public SignTemplate getSignTemplateById(String templateId) {
097    return getSignTemplateById(templateId, new GetSignTemplateByIdHeaders());
098  }
099
100  /**
101   * Fetches details of a specific Box Sign template.
102   *
103   * @param templateId The ID of a Box Sign template. Example:
104   *     "123075213-7d117509-8f05-42e4-a5ef-5190a319d41d"
105   * @param headers Headers of getSignTemplateById method
106   */
107  public SignTemplate getSignTemplateById(String templateId, GetSignTemplateByIdHeaders headers) {
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/sign_templates/",
118                            convertToString(templateId)),
119                        "GET")
120                    .headers(headersMap)
121                    .responseFormat(ResponseFormat.JSON)
122                    .auth(this.auth)
123                    .networkSession(this.networkSession)
124                    .build());
125    return JsonManager.deserialize(response.getData(), SignTemplate.class);
126  }
127
128  public Authentication getAuth() {
129    return auth;
130  }
131
132  public NetworkSession getNetworkSession() {
133    return networkSession;
134  }
135
136  public static class Builder {
137
138    protected Authentication auth;
139
140    protected NetworkSession networkSession;
141
142    public Builder() {}
143
144    public Builder auth(Authentication auth) {
145      this.auth = auth;
146      return this;
147    }
148
149    public Builder networkSession(NetworkSession networkSession) {
150      this.networkSession = networkSession;
151      return this;
152    }
153
154    public SignTemplatesManager build() {
155      if (this.networkSession == null) {
156        this.networkSession = new NetworkSession();
157      }
158      return new SignTemplatesManager(this);
159    }
160  }
161}