• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

box / box-java-sdk / #4744

06 Aug 2025 12:44PM UTC coverage: 38.166% (+0.001%) from 38.165%
#4744

push

github

web-flow
chore: Adjust `github` workflows for legacy repos (box/box-codegen#772) (#1331)

18978 of 49725 relevant lines covered (38.17%)

0.38 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

73.49
/src/main/java/com/box/sdkgen/box/oauth/BoxOAuth.java
1
package com.box.sdkgen.box.oauth;
2

3
import static com.box.sdkgen.internal.utils.UtilsManager.entryOf;
4
import static com.box.sdkgen.internal.utils.UtilsManager.mapOf;
5
import static com.box.sdkgen.internal.utils.UtilsManager.prepareParams;
6
import static com.box.sdkgen.serialization.json.JsonManager.sdToUrlParams;
7

8
import com.box.sdkgen.box.errors.BoxSDKError;
9
import com.box.sdkgen.box.tokenstorage.TokenStorage;
10
import com.box.sdkgen.managers.authorization.AuthorizationManager;
11
import com.box.sdkgen.networking.auth.Authentication;
12
import com.box.sdkgen.networking.network.NetworkSession;
13
import com.box.sdkgen.schemas.accesstoken.AccessToken;
14
import com.box.sdkgen.schemas.postoauth2revoke.PostOAuth2Revoke;
15
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2Token;
16
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenGrantTypeField;
17
import com.box.sdkgen.schemas.postoauth2token.PostOAuth2TokenSubjectTokenTypeField;
18
import com.box.sdkgen.serialization.json.JsonManager;
19
import java.util.List;
20
import java.util.Map;
21

22
public class BoxOAuth implements Authentication {
23

24
  public final OAuthConfig config;
25

26
  public final TokenStorage tokenStorage;
27

28
  public BoxOAuth(OAuthConfig config) {
1✔
29
    this.config = config;
1✔
30
    this.tokenStorage = this.config.getTokenStorage();
1✔
31
  }
1✔
32

33
  public String getAuthorizeUrl() {
34
    return getAuthorizeUrl(new GetAuthorizeUrlOptions());
1✔
35
  }
36

37
  public String getAuthorizeUrl(GetAuthorizeUrlOptions options) {
38
    Map<String, String> paramsMap =
1✔
39
        prepareParams(
1✔
40
            mapOf(
1✔
41
                entryOf(
1✔
42
                    "client_id",
43
                    (!(options.getClientId() == null)
1✔
44
                        ? options.getClientId()
×
45
                        : this.config.getClientId())),
1✔
46
                entryOf(
1✔
47
                    "response_type",
48
                    (!(options.getResponseType() == null) ? options.getResponseType() : "code")),
1✔
49
                entryOf("redirect_uri", options.getRedirectUri()),
1✔
50
                entryOf("state", options.getState()),
1✔
51
                entryOf("scope", options.getScope())));
1✔
52
    return String.join(
1✔
53
        "",
54
        "https://account.box.com/api/oauth2/authorize?",
55
        sdToUrlParams(JsonManager.serialize(paramsMap)));
1✔
56
  }
57

58
  public AccessToken getTokensAuthorizationCodeGrant(String authorizationCode) {
59
    return getTokensAuthorizationCodeGrant(authorizationCode, null);
×
60
  }
61

62
  public AccessToken getTokensAuthorizationCodeGrant(
63
      String authorizationCode, NetworkSession networkSession) {
64
    AuthorizationManager authManager =
×
65
        new AuthorizationManager.Builder()
66
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
×
67
            .build();
×
68
    AccessToken token =
×
69
        authManager.requestAccessToken(
×
70
            new PostOAuth2Token.Builder(PostOAuth2TokenGrantTypeField.AUTHORIZATION_CODE)
71
                .code(authorizationCode)
×
72
                .clientId(this.config.getClientId())
×
73
                .clientSecret(this.config.getClientSecret())
×
74
                .build());
×
75
    this.tokenStorage.store(token);
×
76
    return token;
×
77
  }
78

79
  public AccessToken retrieveToken() {
80
    return retrieveToken(null);
×
81
  }
82

83
  @Override
84
  public AccessToken retrieveToken(NetworkSession networkSession) {
85
    AccessToken token = this.tokenStorage.get();
1✔
86
    if (token == null) {
1✔
87
      throw new BoxSDKError(
1✔
88
          "Access and refresh tokens not available. Authenticate before making any API call first.");
89
    }
90
    return token;
1✔
91
  }
92

93
  public AccessToken refreshToken() {
94
    return refreshToken(null);
×
95
  }
96

97
  @Override
98
  public AccessToken refreshToken(NetworkSession networkSession) {
99
    AccessToken oldToken = this.tokenStorage.get();
1✔
100
    String tokenUsedForRefresh = (!(oldToken == null) ? oldToken.getRefreshToken() : null);
1✔
101
    AuthorizationManager authManager =
1✔
102
        new AuthorizationManager.Builder()
103
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
1✔
104
            .build();
1✔
105
    AccessToken token =
1✔
106
        authManager.requestAccessToken(
×
107
            new PostOAuth2Token.Builder(PostOAuth2TokenGrantTypeField.REFRESH_TOKEN)
108
                .clientId(this.config.getClientId())
1✔
109
                .clientSecret(this.config.getClientSecret())
1✔
110
                .refreshToken(tokenUsedForRefresh)
1✔
111
                .build());
1✔
112
    this.tokenStorage.store(token);
×
113
    return token;
×
114
  }
115

116
  public String retrieveAuthorizationHeader() {
117
    return retrieveAuthorizationHeader(null);
×
118
  }
119

120
  @Override
121
  public String retrieveAuthorizationHeader(NetworkSession networkSession) {
122
    AccessToken token = this.retrieveToken(networkSession);
1✔
123
    return String.join("", "Bearer ", token.getAccessToken());
1✔
124
  }
125

126
  public void revokeToken() {
127
    revokeToken(null);
1✔
128
  }
1✔
129

130
  @Override
131
  public void revokeToken(NetworkSession networkSession) {
132
    AccessToken token = this.tokenStorage.get();
1✔
133
    if (token == null) {
1✔
134
      return;
×
135
    }
136
    AuthorizationManager authManager =
1✔
137
        new AuthorizationManager.Builder()
138
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
1✔
139
            .build();
1✔
140
    authManager.revokeAccessToken(
1✔
141
        new PostOAuth2Revoke.Builder()
142
            .clientId(this.config.getClientId())
1✔
143
            .clientSecret(this.config.getClientSecret())
1✔
144
            .token(token.getAccessToken())
1✔
145
            .build());
1✔
146
  }
1✔
147

148
  @Override
149
  public AccessToken downscopeToken(
150
      List<String> scopes, String resource, String sharedLink, NetworkSession networkSession) {
151
    AccessToken token = this.retrieveToken(networkSession);
1✔
152
    if (token == null || token.getAccessToken() == null) {
1✔
153
      throw new BoxSDKError("No access token is available.");
×
154
    }
155
    AuthorizationManager authManager =
1✔
156
        new AuthorizationManager.Builder()
157
            .networkSession((!(networkSession == null) ? networkSession : new NetworkSession()))
1✔
158
            .build();
1✔
159
    AccessToken downscopedToken =
1✔
160
        authManager.requestAccessToken(
1✔
161
            new PostOAuth2Token.Builder(
162
                    PostOAuth2TokenGrantTypeField.URN_IETF_PARAMS_OAUTH_GRANT_TYPE_TOKEN_EXCHANGE)
163
                .subjectToken(token.getAccessToken())
1✔
164
                .subjectTokenType(
1✔
165
                    PostOAuth2TokenSubjectTokenTypeField
166
                        .URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ACCESS_TOKEN)
167
                .resource(resource)
1✔
168
                .scope(String.join(" ", scopes))
1✔
169
                .boxSharedLink(sharedLink)
1✔
170
                .build());
1✔
171
    return downscopedToken;
1✔
172
  }
173

174
  public TokenStorage getTokenStorage() {
175
    return tokenStorage;
×
176
  }
177
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc