Skip to content

Commit 5367042

Browse files
[PAY-5294] - Add support for $wager event type
1 parent c41008a commit 5367042

File tree

6 files changed

+192
-4
lines changed

6 files changed

+192
-4
lines changed

CHANGES.MD

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
3.17.0 (2024-11-15)
2+
=================
3+
- Added support for `$wager` event type
4+
15
3.16.0 (2024-09-26)
26
=================
37
- Added support for `$iata_carrier_code` to the `$booking` complex field

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@ Java 1.7 or later.
1313
<dependency>
1414
<groupId>com.siftscience</groupId>
1515
<artifactId>sift-java</artifactId>
16-
<version>3.16.0</version>
16+
<version>3.17.0</version>
1717
</dependency>
1818
```
1919
### Gradle
2020
```
2121
dependencies {
22-
compile 'com.siftscience:sift-java:3.16.0'
22+
compile 'com.siftscience:sift-java:3.17.0'
2323
}
2424
```
2525
### Other

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ apply plugin: 'signing'
55
apply plugin: 'java-library-distribution'
66

77
group = 'com.siftscience'
8-
version = '3.16.0'
8+
version = '3.17.0'
99

1010
repositories {
1111
mavenCentral()
Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
package com.siftscience.model;
2+
3+
import com.google.gson.annotations.Expose;
4+
import com.google.gson.annotations.SerializedName;
5+
6+
public class WagerFieldSet extends EventsApiRequestFieldSet<WagerFieldSet> {
7+
8+
@Expose @SerializedName("$wager_id") private String wagerId;
9+
@Expose @SerializedName("$wager_type") private String wagerType;
10+
@Expose @SerializedName("$wager_status") private String wagerStatus;
11+
@Expose @SerializedName("$amount") private Long amount;
12+
@Expose @SerializedName("$currency_code") private String currencyCode;
13+
@Expose @SerializedName("$wager_event_type") private String wagerEventType;
14+
@Expose @SerializedName("$wager_event_name") private String wagerEventName;
15+
@Expose @SerializedName("$wager_event_id") private String wagerEventId;
16+
@Expose @SerializedName("$minimum_wager_amount") private Long minimumWagerAmount;
17+
18+
@Override
19+
public String getEventType() {
20+
return "$wager";
21+
}
22+
23+
public static WagerFieldSet fromJson(String json) {
24+
return gson.fromJson(json, WagerFieldSet.class);
25+
}
26+
27+
public String getWagerId() {
28+
return wagerId;
29+
}
30+
31+
public WagerFieldSet setWagerId(String wagerId) {
32+
this.wagerId = wagerId;
33+
return this;
34+
}
35+
36+
public String getWagerType() {
37+
return wagerType;
38+
}
39+
40+
public WagerFieldSet setWagerType(String wagerType) {
41+
this.wagerType = wagerType;
42+
return this;
43+
}
44+
45+
public String getWagerStatus() {
46+
return wagerStatus;
47+
}
48+
49+
public WagerFieldSet setWagerStatus(String wagerStatus) {
50+
this.wagerStatus = wagerStatus;
51+
return this;
52+
}
53+
54+
public Long getAmount() {
55+
return amount;
56+
}
57+
58+
public WagerFieldSet setAmount(Long amount) {
59+
this.amount = amount;
60+
return this;
61+
}
62+
63+
public String getCurrencyCode() {
64+
return currencyCode;
65+
}
66+
67+
public WagerFieldSet setCurrencyCode(String currencyCode) {
68+
this.currencyCode = currencyCode;
69+
return this;
70+
}
71+
72+
public String getWagerEventType() {
73+
return wagerEventType;
74+
}
75+
76+
public WagerFieldSet setWagerEventType(String wagerEventType) {
77+
this.wagerEventType = wagerEventType;
78+
return this;
79+
}
80+
81+
public String getWagerEventName() {
82+
return wagerEventName;
83+
}
84+
85+
public WagerFieldSet setWagerEventName(String wagerEventName) {
86+
this.wagerEventName = wagerEventName;
87+
return this;
88+
}
89+
90+
public String getWagerEventId() {
91+
return wagerEventId;
92+
}
93+
94+
public WagerFieldSet setWagerEventId(String wagerEventId) {
95+
this.wagerEventId = wagerEventId;
96+
return this;
97+
}
98+
99+
public Long getMinimumWagerAmount() {
100+
return minimumWagerAmount;
101+
}
102+
103+
public WagerFieldSet setMinimumWagerAmount(Long minimumWagerAmount) {
104+
this.minimumWagerAmount = minimumWagerAmount;
105+
return this;
106+
}
107+
}

src/test/java/com/siftscience/TransactionEventTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
import java.util.List;
77

88
import com.siftscience.model.DigitalOrder;
9-
import com.siftscience.model.PaymentMethod;
109
import com.siftscience.model.TransactionFieldSet;
1110
import okhttp3.OkHttpClient;
1211
import okhttp3.mockwebserver.MockResponse;
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.siftscience;
2+
3+
import static java.net.HttpURLConnection.HTTP_OK;
4+
5+
import com.siftscience.model.WagerFieldSet;
6+
import okhttp3.OkHttpClient;
7+
import okhttp3.mockwebserver.MockResponse;
8+
import okhttp3.mockwebserver.MockWebServer;
9+
import okhttp3.mockwebserver.RecordedRequest;
10+
import org.junit.Assert;
11+
import org.junit.Test;
12+
import org.skyscreamer.jsonassert.JSONAssert;
13+
14+
public class WagerFieldSetTest {
15+
@Test
16+
public void testWagerEvent() throws Exception {
17+
String expectedRequestBody = "{\n" +
18+
" \"$type\" : \"$wager\",\n" +
19+
" \"$api_key\" : \"YOUR_API_KEY\",\n" +
20+
" \"$user_id\" : \"billy_jones_301\",\n" +
21+
" \"$wager_id\" : \"wager_id_123\",\n" +
22+
" \"$wager_type\" : \"win_1\",\n" +
23+
" \"$wager_status\" : \"$accept\",\n" +
24+
" \"$amount\" : 506790000,\n" +
25+
" \"$currency_code\" : \"USD\",\n" +
26+
" \"$wager_event_type\" : \"sportsbook\",\n" +
27+
" \"$wager_event_name\" : \"NFL\",\n" +
28+
" \"$wager_event_id\" : \"NFL_2024_N1234\",\n" +
29+
" \"$minimum_wager_amount\" : 1000000,\n" +
30+
"}";
31+
32+
// Start a new mock server and enqueue a mock response.
33+
MockWebServer server = new MockWebServer();
34+
MockResponse response = new MockResponse();
35+
response.setResponseCode(HTTP_OK);
36+
response.setBody("{\n" +
37+
" \"status\" : 0,\n" +
38+
" \"error_message\" : \"OK\",\n" +
39+
" \"time\" : 1327604222,\n" +
40+
" \"request\" : \"" + TestUtils.unescapeJson(expectedRequestBody) + "\"\n" +
41+
"}");
42+
server.enqueue(response);
43+
server.start();
44+
45+
// Create a new client and link it to the mock server.
46+
SiftClient client = new SiftClient("YOUR_API_KEY", "YOUR_ACCOUNT_ID",
47+
new OkHttpClient.Builder()
48+
.addInterceptor(OkHttpUtils.urlRewritingInterceptor(server))
49+
.build());
50+
51+
// Build and execute the request against the mock server.
52+
EventRequest request = client.buildRequest(new WagerFieldSet()
53+
.setUserId("billy_jones_301")
54+
.setWagerId("wager_id_123")
55+
.setWagerType("win_1")
56+
.setWagerStatus("$accept")
57+
.setAmount(506790000L)
58+
.setCurrencyCode("USD")
59+
.setWagerEventType("sportsbook")
60+
.setWagerEventName("NFL")
61+
.setWagerEventId("NFL_2024_N1234")
62+
.setMinimumWagerAmount(1000000L));
63+
EventResponse siftResponse = request.send();
64+
65+
// Verify the request.
66+
RecordedRequest request1 = server.takeRequest();
67+
Assert.assertEquals("POST", request1.getMethod());
68+
Assert.assertEquals("/v205/events", request1.getPath());
69+
JSONAssert.assertEquals(expectedRequestBody, request.getFieldSet().toJson(), true);
70+
71+
// Verify the response.
72+
Assert.assertEquals(HTTP_OK, siftResponse.getHttpStatusCode());
73+
Assert.assertEquals(0, (int) siftResponse.getBody().getStatus());
74+
JSONAssert.assertEquals(response.getBody().readUtf8(),
75+
siftResponse.getBody().toJson(), true);
76+
server.shutdown();
77+
}
78+
}

0 commit comments

Comments
 (0)