Skip to content

Commit a2dde04

Browse files
authored
Merge pull request #96 from sreejithKExalture/verification_api_impl
Support of Verification API
2 parents 09c2f3a + 7178cbd commit a2dde04

17 files changed

+843
-0
lines changed

src/main/java/com/siftscience/SiftClient.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
import com.siftscience.model.CreateMerchantFieldSet;
1313
import com.siftscience.model.UpdateMerchantFieldSet;
1414
import com.siftscience.model.GetMerchantsFieldSet;
15+
import com.siftscience.model.VerificationSendFieldSet;
16+
import com.siftscience.model.VerificationResendFieldSet;
17+
import com.siftscience.model.VerificationCheckFieldSet;
1518
import okhttp3.HttpUrl;
1619
import okhttp3.OkHttpClient;
1720

@@ -142,6 +145,21 @@ public UpdateMerchantRequest buildRequest(UpdateMerchantFieldSet fields, String
142145
return new UpdateMerchantRequest(baseUrl, getAccountId(), okClient, fields, merchantId);
143146
}
144147

148+
public VerificationSendRequest buildRequest(VerificationSendFieldSet fields) {
149+
setupApiKey(fields);
150+
return new VerificationSendRequest(baseUrl, getAccountId(), okClient, fields);
151+
}
152+
153+
public VerificationResendRequest buildRequest(VerificationResendFieldSet fields) {
154+
setupApiKey(fields);
155+
return new VerificationResendRequest(baseUrl, getAccountId(), okClient, fields);
156+
}
157+
158+
public VerificationCheckRequest buildRequest(VerificationCheckFieldSet fields) {
159+
setupApiKey(fields);
160+
return new VerificationCheckRequest(baseUrl, getAccountId(), okClient, fields);
161+
}
162+
145163
private void setupApiKey(FieldSet fields) {
146164
fields.setApiKey(getApiKey());
147165
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.siftscience;
2+
3+
import com.siftscience.model.VerificationCheckFieldSet;
4+
import okhttp3.OkHttpClient;
5+
import okhttp3.HttpUrl;
6+
import okhttp3.Response;
7+
import okhttp3.Request;
8+
import okhttp3.Credentials;
9+
import okhttp3.MediaType;
10+
import okhttp3.RequestBody;
11+
12+
import java.io.IOException;
13+
14+
15+
/**
16+
* The check call is used for verifying the OTP provided by the end user to Sift.
17+
* Check out https://sift.com/developers/docs/java/verification-api/check for more information on our request/response structure.
18+
*/
19+
public class VerificationCheckRequest extends SiftRequest<VerificationCheckResponse> {
20+
21+
VerificationCheckRequest(HttpUrl baseUrl, String accountId, OkHttpClient okClient, VerificationCheckFieldSet fields) {
22+
super(baseUrl, accountId, okClient, fields);
23+
}
24+
25+
@Override
26+
protected HttpUrl path(HttpUrl baseUrl) {
27+
return baseUrl.newBuilder()
28+
.addPathSegment("v1")
29+
.addPathSegment("verification")
30+
.addPathSegment("check").build();
31+
}
32+
33+
@Override
34+
VerificationCheckResponse buildResponse(Response response, FieldSet requestFields) throws IOException {
35+
return new VerificationCheckResponse(response, requestFields);
36+
}
37+
38+
@Override
39+
protected void modifyRequestBuilder(Request.Builder builder) {
40+
super.modifyRequestBuilder(builder);
41+
builder.header("Authorization", Credentials.basic(fieldSet.getApiKey(), "")).get();
42+
builder.post(RequestBody.create(MediaType.parse("application/json"), fieldSet.toJson()));
43+
}
44+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.siftscience;
2+
3+
import com.siftscience.model.VerificationCheckResponseBody;
4+
import okhttp3.Response;
5+
6+
import java.io.IOException;
7+
8+
public class VerificationCheckResponse extends SiftResponse<VerificationCheckResponseBody> {
9+
VerificationCheckResponse(Response okResponse, FieldSet requestBody) throws IOException {
10+
super(okResponse, requestBody);
11+
}
12+
13+
@Override
14+
public void populateBodyFromJson(String jsonBody) {
15+
body = VerificationCheckResponseBody.fromJson(jsonBody);
16+
}
17+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package com.siftscience;
2+
3+
import com.siftscience.model.VerificationResendFieldSet;
4+
import okhttp3.OkHttpClient;
5+
import okhttp3.HttpUrl;
6+
import okhttp3.Response;
7+
import okhttp3.Request;
8+
import okhttp3.Credentials;
9+
import okhttp3.MediaType;
10+
import okhttp3.RequestBody;
11+
12+
import java.io.IOException;
13+
14+
/**
15+
* The resend call generates a new OTP and sends it to the original recipient with the same settings.
16+
* Check out https://sift.com/developers/docs/java/verification-api/resend for more information on our request/response structuree.
17+
* */
18+
public class VerificationResendRequest extends SiftRequest<VerificationResendResponse> {
19+
20+
VerificationResendRequest(HttpUrl baseUrl, String accountId, OkHttpClient okClient, VerificationResendFieldSet fields) {
21+
super(baseUrl, accountId, okClient, fields);
22+
}
23+
24+
@Override
25+
protected HttpUrl path(HttpUrl baseUrl) {
26+
return baseUrl.newBuilder()
27+
.addPathSegment("v1")
28+
.addPathSegment("verification")
29+
.addPathSegment("resend").build();
30+
}
31+
32+
@Override
33+
VerificationResendResponse buildResponse(Response response, FieldSet requestFields) throws IOException {
34+
return new VerificationResendResponse(response, requestFields);
35+
}
36+
37+
@Override
38+
protected void modifyRequestBuilder(Request.Builder builder) {
39+
super.modifyRequestBuilder(builder);
40+
builder.header("Authorization", Credentials.basic(fieldSet.getApiKey(), "")).get();
41+
builder.post(RequestBody.create(MediaType.parse("application/json"), fieldSet.toJson()));
42+
}
43+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.siftscience;
2+
3+
import com.siftscience.model.VerificationResendResponseBody;
4+
import okhttp3.Response;
5+
6+
import java.io.IOException;
7+
8+
public class VerificationResendResponse extends SiftResponse<VerificationResendResponseBody> {
9+
VerificationResendResponse(Response okResponse, FieldSet requestBody) throws IOException {
10+
super(okResponse, requestBody);
11+
}
12+
13+
@Override
14+
public void populateBodyFromJson(String jsonBody) {
15+
body = VerificationResendResponseBody.fromJson(jsonBody);
16+
}
17+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package com.siftscience;
2+
3+
import com.siftscience.model.VerificationSendFieldSet;
4+
import okhttp3.OkHttpClient;
5+
import okhttp3.HttpUrl;
6+
import okhttp3.Response;
7+
import okhttp3.Request;
8+
import okhttp3.Credentials;
9+
import okhttp3.MediaType;
10+
import okhttp3.RequestBody;
11+
12+
import java.io.IOException;
13+
14+
/**
15+
*The send call triggers the generation of an OTP code that is stored by Sift
16+
* and email/sms the code to the user.
17+
* Check out https://sift.com/developers/docs/java/verification-api/send for more information on our request/response structure.
18+
* */
19+
public class VerificationSendRequest extends SiftRequest<VerificationSendResponse> {
20+
21+
VerificationSendRequest(HttpUrl baseUrl, String accountId, OkHttpClient okClient, VerificationSendFieldSet fields) {
22+
super(baseUrl, accountId, okClient, fields);
23+
}
24+
25+
@Override
26+
protected HttpUrl path(HttpUrl baseUrl) {
27+
return baseUrl.newBuilder()
28+
.addPathSegment("v1")
29+
.addPathSegment("verification")
30+
.addPathSegment("send").build();
31+
}
32+
33+
@Override
34+
VerificationSendResponse buildResponse(Response response, FieldSet requestFields) throws IOException {
35+
return new VerificationSendResponse(response, requestFields);
36+
}
37+
38+
@Override
39+
protected void modifyRequestBuilder(Request.Builder builder) {
40+
super.modifyRequestBuilder(builder);
41+
builder.header("Authorization", Credentials.basic(fieldSet.getApiKey(), "")).get();
42+
builder.post(RequestBody.create(MediaType.parse("application/json"), fieldSet.toJson()));
43+
}
44+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.siftscience;
2+
3+
import com.siftscience.model.VerificationSendResponseBody;
4+
import okhttp3.Response;
5+
6+
import java.io.IOException;
7+
8+
public class VerificationSendResponse extends SiftResponse<VerificationSendResponseBody> {
9+
VerificationSendResponse(Response okResponse, FieldSet requestBody) throws IOException {
10+
super(okResponse, requestBody);
11+
}
12+
13+
@Override
14+
public void populateBodyFromJson(String jsonBody) {
15+
body = VerificationSendResponseBody.fromJson(jsonBody);
16+
}
17+
}
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
package com.siftscience.model;
2+
3+
import com.google.gson.annotations.Expose;
4+
import com.google.gson.annotations.SerializedName;
5+
6+
public class Event {
7+
8+
@Expose @SerializedName("$session_id") private String sessionId;
9+
@Expose @SerializedName("$verified_event") private String verifiedEvent;
10+
@Expose @SerializedName("$reason") private String reason;
11+
@Expose @SerializedName("$ip") private String ip;
12+
13+
@Expose @SerializedName("$browser") private Browser browser;
14+
15+
@Expose @SerializedName("$app") private App app;
16+
17+
public String getSessionId() {
18+
return sessionId;
19+
}
20+
21+
public Event setSessionId(String sessionId) {
22+
this.sessionId = sessionId;
23+
return this;
24+
}
25+
26+
public String getVerifiedEvent() {
27+
return verifiedEvent;
28+
}
29+
30+
public Event setVerifiedEvent(String verifiedEvent) {
31+
this.verifiedEvent = verifiedEvent;
32+
return this;
33+
}
34+
35+
public String getReason() {
36+
return reason;
37+
}
38+
39+
public Event setReason(String reason) {
40+
this.reason = reason;
41+
return this;
42+
}
43+
44+
public String getIp() {
45+
return ip;
46+
}
47+
48+
public Event setIp(String ip) {
49+
this.ip = ip;
50+
return this;
51+
}
52+
53+
public Browser getBrowser() {
54+
return browser;
55+
}
56+
57+
public Event setBrowser(Browser browser) {
58+
this.browser = browser;
59+
return this;
60+
}
61+
62+
public App getApp() {
63+
return app;
64+
}
65+
66+
public Event setApp(App app) {
67+
this.app = app;
68+
return this;
69+
}
70+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package com.siftscience.model;
2+
3+
import com.google.gson.annotations.Expose;
4+
import com.google.gson.annotations.SerializedName;
5+
import com.siftscience.FieldSet;
6+
7+
public class VerificationCheckFieldSet extends FieldSet<VerificationCheckFieldSet> {
8+
9+
public static VerificationCheckFieldSet fromJson(String json) {
10+
return gson.fromJson(json, VerificationCheckFieldSet.class);
11+
}
12+
@Expose @SerializedName(USER_ID) private String userId;
13+
@Expose @SerializedName("$code") private String code;
14+
@Expose @SerializedName("$verified_event") private String verifiedEvent;
15+
@Expose @SerializedName("$verified_entity_id") private String verifiedEntityId;
16+
17+
public String getUserId() {
18+
return userId;
19+
}
20+
21+
public VerificationCheckFieldSet setUserId(String userId) {
22+
this.userId = userId;
23+
return this;
24+
}
25+
26+
public String getVerifiedEvent() {
27+
return verifiedEvent;
28+
}
29+
30+
public VerificationCheckFieldSet setVerifiedEvent(String verifiedEvent) {
31+
this.verifiedEvent = verifiedEvent;
32+
return this;
33+
}
34+
35+
public String getVerifiedEntityId() {
36+
return verifiedEntityId;
37+
}
38+
39+
public VerificationCheckFieldSet setVerifiedEntityId(String verifiedEntityId) {
40+
this.verifiedEntityId = verifiedEntityId;
41+
return this;
42+
}
43+
44+
public String getCode() {
45+
return code;
46+
}
47+
48+
public VerificationCheckFieldSet setCode(String code) {
49+
this.code = code;
50+
return this;
51+
}
52+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package com.siftscience.model;
2+
3+
import com.google.gson.annotations.Expose;
4+
import com.google.gson.annotations.SerializedName;
5+
6+
public class VerificationCheckResponseBody extends BaseResponseBody<VerificationCheckResponseBody> {
7+
8+
@Expose @SerializedName("checked_at") private Long checkedAt;
9+
10+
public static VerificationCheckResponseBody fromJson(String json) {
11+
return gson.fromJson(json, VerificationCheckResponseBody.class);
12+
}
13+
14+
public Long getCheckedAt() {
15+
return checkedAt;
16+
}
17+
18+
public VerificationCheckResponseBody setCheckedAt(Long checkedAt) {
19+
this.checkedAt = checkedAt;
20+
return this;
21+
}
22+
}
23+

0 commit comments

Comments
 (0)