001package com.box.sdkgen.schemas.postoauth2tokenrefreshaccesstoken;
002
003import com.box.sdkgen.internal.NullableFieldTracker;
004import com.box.sdkgen.internal.SerializableObject;
005import com.box.sdkgen.serialization.json.EnumWrapper;
006import com.fasterxml.jackson.annotation.JsonFilter;
007import com.fasterxml.jackson.annotation.JsonProperty;
008import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
009import com.fasterxml.jackson.databind.annotation.JsonSerialize;
010import java.util.Objects;
011
012/**
013 * A request to refresh an Access Token. Use this API to refresh an expired Access Token using a
014 * valid Refresh Token.
015 */
016@JsonFilter("nullablePropertyFilter")
017public class PostOAuth2TokenRefreshAccessToken extends SerializableObject {
018
019  /** The type of request being made, in this case a refresh request. */
020  @JsonDeserialize(
021      using =
022          PostOAuth2TokenRefreshAccessTokenGrantTypeField
023              .PostOAuth2TokenRefreshAccessTokenGrantTypeFieldDeserializer.class)
024  @JsonSerialize(
025      using =
026          PostOAuth2TokenRefreshAccessTokenGrantTypeField
027              .PostOAuth2TokenRefreshAccessTokenGrantTypeFieldSerializer.class)
028  @JsonProperty("grant_type")
029  protected EnumWrapper<PostOAuth2TokenRefreshAccessTokenGrantTypeField> grantType;
030
031  /** The client ID of the application requesting to refresh the token. */
032  @JsonProperty("client_id")
033  protected final String clientId;
034
035  /** The client secret of the application requesting to refresh the token. */
036  @JsonProperty("client_secret")
037  protected final String clientSecret;
038
039  /** The refresh token to refresh. */
040  @JsonProperty("refresh_token")
041  protected final String refreshToken;
042
043  public PostOAuth2TokenRefreshAccessToken(
044      @JsonProperty("client_id") String clientId,
045      @JsonProperty("client_secret") String clientSecret,
046      @JsonProperty("refresh_token") String refreshToken) {
047    super();
048    this.clientId = clientId;
049    this.clientSecret = clientSecret;
050    this.refreshToken = refreshToken;
051    this.grantType =
052        new EnumWrapper<PostOAuth2TokenRefreshAccessTokenGrantTypeField>(
053            PostOAuth2TokenRefreshAccessTokenGrantTypeField.REFRESH_TOKEN);
054  }
055
056  protected PostOAuth2TokenRefreshAccessToken(Builder builder) {
057    super();
058    this.grantType = builder.grantType;
059    this.clientId = builder.clientId;
060    this.clientSecret = builder.clientSecret;
061    this.refreshToken = builder.refreshToken;
062    markNullableFieldsAsSet(builder.getExplicitlySetNullableFields());
063  }
064
065  public EnumWrapper<PostOAuth2TokenRefreshAccessTokenGrantTypeField> getGrantType() {
066    return grantType;
067  }
068
069  public String getClientId() {
070    return clientId;
071  }
072
073  public String getClientSecret() {
074    return clientSecret;
075  }
076
077  public String getRefreshToken() {
078    return refreshToken;
079  }
080
081  @Override
082  public boolean equals(Object o) {
083    if (this == o) {
084      return true;
085    }
086    if (o == null || getClass() != o.getClass()) {
087      return false;
088    }
089    PostOAuth2TokenRefreshAccessToken casted = (PostOAuth2TokenRefreshAccessToken) o;
090    return Objects.equals(grantType, casted.grantType)
091        && Objects.equals(clientId, casted.clientId)
092        && Objects.equals(clientSecret, casted.clientSecret)
093        && Objects.equals(refreshToken, casted.refreshToken);
094  }
095
096  @Override
097  public int hashCode() {
098    return Objects.hash(grantType, clientId, clientSecret, refreshToken);
099  }
100
101  @Override
102  public String toString() {
103    return "PostOAuth2TokenRefreshAccessToken{"
104        + "grantType='"
105        + grantType
106        + '\''
107        + ", "
108        + "clientId='"
109        + clientId
110        + '\''
111        + ", "
112        + "clientSecret='"
113        + clientSecret
114        + '\''
115        + ", "
116        + "refreshToken='"
117        + refreshToken
118        + '\''
119        + "}";
120  }
121
122  public static class Builder extends NullableFieldTracker {
123
124    protected EnumWrapper<PostOAuth2TokenRefreshAccessTokenGrantTypeField> grantType;
125
126    protected final String clientId;
127
128    protected final String clientSecret;
129
130    protected final String refreshToken;
131
132    public Builder(String clientId, String clientSecret, String refreshToken) {
133      super();
134      this.clientId = clientId;
135      this.clientSecret = clientSecret;
136      this.refreshToken = refreshToken;
137    }
138
139    public Builder grantType(PostOAuth2TokenRefreshAccessTokenGrantTypeField grantType) {
140      this.grantType = new EnumWrapper<PostOAuth2TokenRefreshAccessTokenGrantTypeField>(grantType);
141      return this;
142    }
143
144    public Builder grantType(
145        EnumWrapper<PostOAuth2TokenRefreshAccessTokenGrantTypeField> grantType) {
146      this.grantType = grantType;
147      return this;
148    }
149
150    public PostOAuth2TokenRefreshAccessToken build() {
151      if (this.grantType == null) {
152        this.grantType =
153            new EnumWrapper<PostOAuth2TokenRefreshAccessTokenGrantTypeField>(
154                PostOAuth2TokenRefreshAccessTokenGrantTypeField.REFRESH_TOKEN);
155      }
156      return new PostOAuth2TokenRefreshAccessToken(this);
157    }
158  }
159}