Skip to content

Commit 936ab49

Browse files
committed
Merge pull request #7 from auth0/chore-prepare-for-mgmt-api
Change package structure and introduced new way to include metrics
2 parents 2f19cf0 + 6b9b122 commit 936ab49

39 files changed

Lines changed: 350 additions & 224 deletions

core/src/main/java/com/auth0/authentication/api/APIException.java renamed to core/src/main/java/com/auth0/APIException.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,7 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package com.auth0.authentication.api;
26-
27-
import com.auth0.Auth0Exception;
25+
package com.auth0;
2826

2927
import java.util.HashMap;
3028
import java.util.Map;

core/src/main/java/com/auth0/Auth0.java

Lines changed: 94 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,25 +25,116 @@
2525
package com.auth0;
2626

2727
import com.auth0.authentication.AuthenticationAPIClient;
28+
import com.auth0.util.BaseMetrics;
29+
import com.auth0.util.Metrics;
2830
import com.squareup.okhttp.HttpUrl;
2931

32+
/**
33+
* Represents your Auth0 account information (clientId & domain),
34+
* and it's used to obtain clients for Auth0's APIs.
35+
* <pre>{@code
36+
* Auth0 auth0 = new Auth0("YOUR_CLIENT_ID", "YOUR_DOMAIN");
37+
* }</pre>
38+
*/
3039
public class Auth0 {
3140

41+
/**
42+
* Version of auth0-java
43+
*/
44+
public static final String VERSION = "1.0.0";
45+
/**
46+
* Name of the library auth0-java
47+
*/
48+
public static final String NAME = "auth0-java";
49+
3250
private static final String AUTH0_US_CDN_URL = "https://cdn.auth0.com";
3351
private static final String DOT_AUTH0_DOT_COM = ".auth0.com";
3452

35-
protected final String clientId;
36-
protected final String domainUrl;
37-
protected final String configurationUrl;
53+
private final String clientId;
54+
private final String domainUrl;
55+
private final String configurationUrl;
56+
private Metrics metrics;
3857

58+
/**
59+
* Creates a new object using clientId & domain
60+
* @param clientId of your Auth0 application
61+
* @param domain of your Auth0 account
62+
*/
3963
public Auth0(String clientId, String domain) {
4064
this(clientId, domain, null);
4165
}
4266

67+
/**
68+
* Creates a new object using clientId, domain and configuration domain.
69+
* Useful when using a on-premise auth0 server that is not in the public cloud,
70+
* otherwise we recommend using the constructor {@link #Auth0(String, String)}
71+
* @param clientId of your Auth0 application
72+
* @param domain of your Auth0 account
73+
* @param configurationDomain where Auth0's configuration will be fetched. By default is Auth0 public cloud
74+
*/
4375
public Auth0(String clientId, String domain, String configurationDomain) {
4476
this.clientId = clientId;
4577
this.domainUrl = ensureUrlString(domain);
4678
this.configurationUrl = resolveConfiguration(configurationDomain, this.domainUrl);
79+
this.metrics = new BaseMetrics();
80+
this.metrics.usingLibrary(Auth0.NAME, Auth0.VERSION);
81+
}
82+
83+
/**
84+
* @return your Auth0 application client identifier
85+
*/
86+
public String getClientId() {
87+
return clientId;
88+
}
89+
90+
/**
91+
* @return your Auth0 account domain url
92+
*/
93+
public String getDomainUrl() {
94+
return domainUrl;
95+
}
96+
97+
/**
98+
* @return your account configuration url
99+
*/
100+
public String getConfigurationUrl() {
101+
return configurationUrl;
102+
}
103+
104+
/**
105+
* @return a new Authentication API client using your account credentials
106+
*/
107+
public AuthenticationAPIClient newAuthenticationAPIClient() {
108+
return new AuthenticationAPIClient(this);
109+
}
110+
111+
/**
112+
* @return Url to perform the web flow of OAuth
113+
*/
114+
public String getAuthorizeUrl() {
115+
return HttpUrl.parse(domainUrl).newBuilder()
116+
.addEncodedPathSegment("authorize")
117+
.build()
118+
.toString();
119+
}
120+
121+
/**
122+
* @return Auth0 metrics sent in every requests
123+
*/
124+
public Metrics getMetrics() {
125+
return metrics;
126+
}
127+
128+
/**
129+
* Define what metrics are sent to Auth0 on every request.
130+
* @param metrics to send or nil to send nothing
131+
*/
132+
public void setMetrics(Metrics metrics) {
133+
if (metrics == null) {
134+
this.metrics = new BaseMetrics();
135+
} else {
136+
this.metrics = metrics;
137+
}
47138
}
48139

49140
private String resolveConfiguration(String configurationDomain, String domainUrl) {
@@ -73,26 +164,4 @@ private String ensureUrlString(String url) {
73164
return safeUrl;
74165
}
75166

76-
public String getClientId() {
77-
return clientId;
78-
}
79-
80-
public String getDomainUrl() {
81-
return domainUrl;
82-
}
83-
84-
public String getConfigurationUrl() {
85-
return configurationUrl;
86-
}
87-
88-
public AuthenticationAPIClient newAuthenticationAPIClient() {
89-
return new AuthenticationAPIClient(this);
90-
}
91-
92-
public String getAuthorizeUrl() {
93-
return HttpUrl.parse(domainUrl).newBuilder()
94-
.addEncodedPathSegment("authorize")
95-
.build()
96-
.toString();
97-
}
98167
}

core/src/main/java/com/auth0/authentication/api/RequestBodyBuildException.java renamed to core/src/main/java/com/auth0/RequestBodyBuildException.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package com.auth0.authentication.api;
25+
package com.auth0;
2626

2727
import com.auth0.Auth0Exception;
2828

core/src/main/java/com/auth0/authentication/AuthenticationAPIClient.java

Lines changed: 35 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,21 +24,23 @@
2424

2525
package com.auth0.authentication;
2626

27-
import com.auth0.authentication.api.ParameterBuilder;
28-
import com.auth0.authentication.api.ParameterizableRequest;
29-
import com.auth0.authentication.api.Request;
30-
import com.auth0.authentication.api.internal.RequestFactory;
3127
import com.auth0.Auth0;
32-
import com.auth0.DatabaseUser;
33-
import com.auth0.Token;
34-
import com.auth0.UserProfile;
28+
import com.auth0.authentication.result.DatabaseUser;
29+
import com.auth0.authentication.result.Delegation;
30+
import com.auth0.authentication.result.Token;
31+
import com.auth0.authentication.result.UserProfile;
32+
import com.auth0.internal.RequestFactory;
33+
import com.auth0.request.ParameterizableRequest;
34+
import com.auth0.request.Request;
35+
import com.auth0.util.BaseMetrics;
36+
import com.auth0.util.Metrics;
3537
import com.fasterxml.jackson.databind.ObjectMapper;
3638
import com.squareup.okhttp.HttpUrl;
3739
import com.squareup.okhttp.OkHttpClient;
3840

3941
import java.util.Map;
4042

41-
import static com.auth0.authentication.api.ParameterBuilder.GRANT_TYPE_PASSWORD;
43+
import static com.auth0.authentication.ParameterBuilder.GRANT_TYPE_PASSWORD;
4244

4345
/**
4446
* API client for Auth0 Authentication API.
@@ -58,6 +60,7 @@ public class AuthenticationAPIClient {
5860
private final Auth0 auth0;
5961
private final OkHttpClient client;
6062
private final ObjectMapper mapper;
63+
private final RequestFactory factory;
6164

6265
private String defaultDbConnection = DEFAULT_DB_CONNECTION;
6366

@@ -73,17 +76,22 @@ public AuthenticationAPIClient(Auth0 auth0) {
7376
* Creates a new API client instance providing Auth API and Configuration Urls different than the default. (Useful for on premise deploys).
7477
* @param clientID Your application clientID.
7578
* @param baseURL Auth0's auth API endpoint
76-
* @param configurationURL Auth0's enpoint where App info can be retrieved.
79+
* @param configurationURL Auth0's endpoint where App info can be retrieved.
7780
*/
7881
@SuppressWarnings("unused")
7982
public AuthenticationAPIClient(String clientID, String baseURL, String configurationURL) {
8083
this(new Auth0(clientID, baseURL, configurationURL));
8184
}
8285

83-
protected AuthenticationAPIClient(Auth0 auth0, OkHttpClient client, ObjectMapper mapper) {
86+
private AuthenticationAPIClient(Auth0 auth0, OkHttpClient client, ObjectMapper mapper) {
8487
this.auth0 = auth0;
8588
this.client = client;
8689
this.mapper = mapper;
90+
this.factory = new RequestFactory();
91+
final Metrics metrics = auth0.getMetrics();
92+
if (metrics != null) {
93+
factory.setClientInfo(metrics.getValue());
94+
}
8795
}
8896

8997
public String getClientId() {
@@ -94,6 +102,14 @@ public String getBaseURL() {
94102
return auth0.getDomainUrl();
95103
}
96104

105+
/**
106+
* Set the value of 'User-Agent' header for every request to Auth0 Authentication API
107+
* @param userAgent value to send in every request to Auth0
108+
*/
109+
public void setUserAgent(String userAgent) {
110+
factory.setUserAgent(userAgent);
111+
}
112+
97113
/**
98114
* Set the default DB connection name used. By default is 'Username-Password-Authentication'
99115
* @param defaultDbConnection name to use on every login with DB connection
@@ -136,7 +152,7 @@ public AuthenticationRequest loginWithOAuthAccessToken(String token, String conn
136152
.asDictionary();
137153

138154
final ParameterizableRequest<UserProfile> profileRequest = profileRequest();
139-
ParameterizableRequest<Token> credentialsRequest = RequestFactory.POST(url, client, mapper, Token.class)
155+
ParameterizableRequest<Token> credentialsRequest = factory.POST(url, client, mapper, Token.class)
140156
.addParameters(parameters);
141157
return new AuthenticationRequest(credentialsRequest, profileRequest);
142158
}
@@ -208,7 +224,7 @@ public ParameterizableRequest<DatabaseUser> createUser(String email, String pass
208224
.setConnection(defaultDbConnection)
209225
.setClientId(getClientId())
210226
.asDictionary();
211-
return RequestFactory.POST(url, client, mapper, DatabaseUser.class)
227+
return factory.POST(url, client, mapper, DatabaseUser.class)
212228
.addParameters(parameters);
213229
}
214230

@@ -266,7 +282,7 @@ public ChangePasswordRequest changePassword(String email) {
266282
.setConnection(defaultDbConnection)
267283
.asDictionary();
268284

269-
ParameterizableRequest<Void> request = RequestFactory.POST(url, client, mapper)
285+
ParameterizableRequest<Void> request = factory.POST(url, client, mapper)
270286
.addParameters(parameters);
271287
return new ChangePasswordRequest(request);
272288
}
@@ -355,7 +371,7 @@ public Request<Void> unlink(String userId, String accessToken) {
355371
HttpUrl url = HttpUrl.parse(auth0.getDomainUrl()).newBuilder()
356372
.addPathSegment("unlink")
357373
.build();
358-
return RequestFactory.POST(url, client, mapper)
374+
return factory.POST(url, client, mapper)
359375
.addParameters(parameters);
360376
}
361377

@@ -407,7 +423,7 @@ public ParameterizableRequest<Map<String, Object>> delegation() {
407423
.setClientId(getClientId())
408424
.setGrantType(ParameterBuilder.GRANT_TYPE_JWT)
409425
.asDictionary();
410-
return RequestFactory.rawPOST(url, client, mapper)
426+
return factory.rawPOST(url, client, mapper)
411427
.addParameters(parameters);
412428
}
413429

@@ -420,7 +436,7 @@ protected <T> ParameterizableRequest<T> delegation(Class<T> clazz) {
420436
.setClientId(getClientId())
421437
.setGrantType(ParameterBuilder.GRANT_TYPE_JWT)
422438
.asDictionary();
423-
return RequestFactory.POST(url, client, mapper, clazz)
439+
return factory.POST(url, client, mapper, clazz)
424440
.addParameters(parameters);
425441
}
426442

@@ -439,7 +455,7 @@ public ParameterizableRequest<Void> passwordless() {
439455
.setClientId(getClientId())
440456
.asDictionary();
441457

442-
return RequestFactory.POST(url, client, mapper)
458+
return factory.POST(url, client, mapper)
443459
.addParameters(parameters);
444460
}
445461

@@ -453,7 +469,7 @@ protected ParameterizableRequest<Token> loginWithResourceOwner() {
453469
.setClientId(getClientId())
454470
.setConnection(defaultDbConnection)
455471
.asDictionary();
456-
ParameterizableRequest<Token> request = RequestFactory.POST(url, client, mapper, Token.class)
472+
ParameterizableRequest<Token> request = factory.POST(url, client, mapper, Token.class)
457473
.addParameters(requestParameters);
458474
return request;
459475
}
@@ -462,7 +478,7 @@ private ParameterizableRequest<UserProfile> profileRequest() {
462478
HttpUrl url = HttpUrl.parse(auth0.getDomainUrl()).newBuilder()
463479
.addPathSegment("tokeninfo")
464480
.build();
465-
return RequestFactory.POST(url, client, mapper, UserProfile.class);
481+
return factory.POST(url, client, mapper, UserProfile.class);
466482

467483
}
468484

core/src/main/java/com/auth0/authentication/AuthenticationRequest.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,12 @@
2525
package com.auth0.authentication;
2626

2727
import com.auth0.Auth0Exception;
28-
import com.auth0.authentication.api.ParameterBuilder;
29-
import com.auth0.authentication.api.ParameterizableRequest;
30-
import com.auth0.authentication.api.Request;
31-
import com.auth0.authentication.api.callback.BaseCallback;
32-
import com.auth0.Token;
33-
import com.auth0.UserProfile;
28+
import com.auth0.request.ParameterizableRequest;
29+
import com.auth0.request.Request;
30+
import com.auth0.callback.BaseCallback;
31+
import com.auth0.authentication.result.Token;
32+
import com.auth0.authentication.result.UserProfile;
33+
import com.auth0.authentication.result.Authentication;
3434

3535
import java.util.Map;
3636

core/src/main/java/com/auth0/authentication/ChangePasswordRequest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@
2525
package com.auth0.authentication;
2626

2727
import com.auth0.Auth0Exception;
28-
import com.auth0.authentication.api.ParameterizableRequest;
29-
import com.auth0.authentication.api.callback.BaseCallback;
28+
import com.auth0.request.ParameterizableRequest;
29+
import com.auth0.callback.BaseCallback;
3030

3131
import java.util.HashMap;
3232
import java.util.Map;

core/src/main/java/com/auth0/authentication/DelegationRequest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@
2525
package com.auth0.authentication;
2626

2727
import com.auth0.Auth0Exception;
28-
import com.auth0.authentication.api.ParameterBuilder;
29-
import com.auth0.authentication.api.ParameterizableRequest;
30-
import com.auth0.authentication.api.Request;
31-
import com.auth0.authentication.api.callback.BaseCallback;
28+
import com.auth0.request.ParameterizableRequest;
29+
import com.auth0.request.Request;
30+
import com.auth0.callback.BaseCallback;
31+
import com.auth0.authentication.result.Delegation;
3232

3333
import java.util.HashMap;
3434
import java.util.Map;

core/src/main/java/com/auth0/authentication/api/ParameterBuilder.java renamed to core/src/main/java/com/auth0/authentication/ParameterBuilder.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,9 @@
2222
* THE SOFTWARE.
2323
*/
2424

25-
package com.auth0.authentication.api;
25+
package com.auth0.authentication;
2626

27-
import com.auth0.authentication.PasswordlessType;
28-
import com.auth0.authentication.api.util.CheckHelper;
27+
import com.auth0.util.CheckHelper;
2928

3029
import java.util.HashMap;
3130
import java.util.Map;

0 commit comments

Comments
 (0)