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

box / box-java-sdk-gen / #18

17 Mar 2025 04:26PM UTC coverage: 35.208% (-0.005%) from 35.213%
#18

Pull #251

github

web-flow
Merge 0acabd6d0 into 6ad373df9
Pull Request #251: test: Add `APP_ITEM_SHARED_LINK` to config and readme files (box/box-codegen#681)

15234 of 43269 relevant lines covered (35.21%)

0.35 hits per line

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

72.0
/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 = new AuthorizationManager();
×
65
    AccessToken token =
×
66
        authManager.requestAccessToken(
×
67
            new PostOAuth2Token.PostOAuth2TokenBuilder(
68
                    PostOAuth2TokenGrantTypeField.AUTHORIZATION_CODE)
69
                .code(authorizationCode)
×
70
                .clientId(this.config.getClientId())
×
71
                .clientSecret(this.config.getClientSecret())
×
72
                .build());
×
73
    this.tokenStorage.store(token);
×
74
    return token;
×
75
  }
76

77
  public AccessToken retrieveToken() {
78
    return retrieveToken(null);
×
79
  }
80

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

91
  public AccessToken refreshToken() {
92
    return refreshToken(null);
×
93
  }
94

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

111
  public String retrieveAuthorizationHeader() {
112
    return retrieveAuthorizationHeader(null);
×
113
  }
114

115
  @Override
116
  public String retrieveAuthorizationHeader(NetworkSession networkSession) {
117
    AccessToken token = this.retrieveToken(networkSession);
1✔
118
    return String.join("", "Bearer ", token.getAccessToken());
1✔
119
  }
120

121
  public void revokeToken() {
122
    revokeToken(null);
1✔
123
  }
1✔
124

125
  @Override
126
  public void revokeToken(NetworkSession networkSession) {
127
    AccessToken token = this.tokenStorage.get();
1✔
128
    if (token == null) {
1✔
129
      return;
×
130
    }
131
    AuthorizationManager authManager = new AuthorizationManager();
1✔
132
    authManager.revokeAccessToken(
1✔
133
        new PostOAuth2Revoke.PostOAuth2RevokeBuilder()
134
            .clientId(this.config.getClientId())
1✔
135
            .clientSecret(this.config.getClientSecret())
1✔
136
            .token(token.getAccessToken())
1✔
137
            .build());
1✔
138
  }
1✔
139

140
  @Override
141
  public AccessToken downscopeToken(
142
      List<String> scopes, String resource, String sharedLink, NetworkSession networkSession) {
143
    AccessToken token = this.tokenStorage.get();
1✔
144
    if (token == null || token.getAccessToken() == null) {
1✔
145
      throw new BoxSDKError("No access token is available.");
×
146
    }
147
    AuthorizationManager authManager = new AuthorizationManager();
1✔
148
    AccessToken downscopedToken =
1✔
149
        authManager.requestAccessToken(
1✔
150
            new PostOAuth2Token.PostOAuth2TokenBuilder(
151
                    PostOAuth2TokenGrantTypeField.URN_IETF_PARAMS_OAUTH_GRANT_TYPE_TOKEN_EXCHANGE)
152
                .subjectToken(token.getAccessToken())
1✔
153
                .subjectTokenType(
1✔
154
                    PostOAuth2TokenSubjectTokenTypeField
155
                        .URN_IETF_PARAMS_OAUTH_TOKEN_TYPE_ACCESS_TOKEN)
156
                .resource(resource)
1✔
157
                .scope(String.join(" ", scopes))
1✔
158
                .boxSharedLink(sharedLink)
1✔
159
                .build());
1✔
160
    return downscopedToken;
1✔
161
  }
162

163
  public TokenStorage getTokenStorage() {
164
    return tokenStorage;
×
165
  }
166
}
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

© 2026 Coveralls, Inc