Skip to content

Commit 9d1296d

Browse files
Merge upstream and update generated code for v2204 and
2 parents 26c7670 + 2bdec26 commit 9d1296d

7 files changed

Lines changed: 131 additions & 111 deletions

File tree

CODEGEN_VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
273184f052dd3c191b1993098365d0c2437d2cb4
1+
19704d8af6f1949f2d8f646ca37978ad12f936a4

justfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ import? '../sdk-codegen/utils.just'
55
_default:
66
just --list --unsorted
77

8+
# ⭐ run format and tests to prepare for CI
9+
[no-exit-message]
10+
prepare: format test
11+
812
# ⭐ run the whole test suite
913
[no-exit-message]
1014
test *args:

src/main/java/com/stripe/model/v2/core/EventNotification.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,12 @@ public static EventNotification fromJson(String payload, StripeClient client) {
106106
}
107107

108108
private RawRequestOptions getRequestOptions() {
109-
if (context == null) {
110-
return null;
109+
RawRequestOptions.RawRequestOptionsBuilder builder =
110+
RawRequestOptions.builder().setStripeRequestTrigger("event=" + id);
111+
if (context != null) {
112+
builder.setStripeContext(context.toString());
111113
}
112-
return new RawRequestOptions.RawRequestOptionsBuilder()
113-
.setStripeContext(context.toString())
114-
.build();
114+
return builder.build();
115115
}
116116

117117
/* retrieves the full payload for an event. Protected because individual push classes use it, but type it correctly */

src/main/java/com/stripe/net/RawRequestOptions.java

Lines changed: 10 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -8,34 +8,9 @@
88
public class RawRequestOptions extends RequestOptions {
99
private Map<String, String> additionalHeaders;
1010

11-
public RawRequestOptions(
12-
Authenticator authenticator,
13-
String clientId,
14-
String idempotencyKey,
15-
String stripeContext,
16-
String stripeAccount,
17-
String stripeVersionOverride,
18-
String baseUrl,
19-
Integer connectTimeout,
20-
Integer readTimeout,
21-
Integer maxNetworkRetries,
22-
Proxy connectionProxy,
23-
PasswordAuthentication proxyCredential,
24-
Map<String, String> additionalHeaders) {
25-
super(
26-
authenticator,
27-
clientId,
28-
idempotencyKey,
29-
stripeContext,
30-
stripeAccount,
31-
stripeVersionOverride,
32-
baseUrl,
33-
connectTimeout,
34-
readTimeout,
35-
maxNetworkRetries,
36-
connectionProxy,
37-
proxyCredential);
38-
this.additionalHeaders = additionalHeaders;
11+
private RawRequestOptions(RawRequestOptionsBuilder builder) {
12+
super(builder);
13+
this.additionalHeaders = builder.additionalHeaders;
3914
}
4015

4116
public Map<String, String> getAdditionalHeaders() {
@@ -88,6 +63,12 @@ public RawRequestOptionsBuilder setStripeContext(StripeContext stripeContext) {
8863
return this;
8964
}
9065

66+
@Override
67+
public RawRequestOptionsBuilder setStripeRequestTrigger(String stripeRequestTrigger) {
68+
super.setStripeRequestTrigger(stripeRequestTrigger);
69+
return this;
70+
}
71+
9172
@Override
9273
public RawRequestOptionsBuilder setStripeAccount(String stripeAccount) {
9374
super.setStripeAccount(stripeAccount);
@@ -132,20 +113,7 @@ public RawRequestOptionsBuilder setProxyCredential(PasswordAuthentication proxyC
132113

133114
@Override
134115
public RawRequestOptions build() {
135-
return new RawRequestOptions(
136-
authenticator,
137-
normalizeClientId(this.clientId),
138-
normalizeIdempotencyKey(this.idempotencyKey),
139-
normalizeStripeContext(this.stripeContext),
140-
normalizeStripeAccount(this.stripeAccount),
141-
normalizeStripeVersion(this.stripeVersionOverride),
142-
normalizeBaseUrl(this.baseUrl),
143-
connectTimeout,
144-
readTimeout,
145-
maxNetworkRetries,
146-
connectionProxy,
147-
proxyCredential,
148-
additionalHeaders);
116+
return new RawRequestOptions(this);
149117
}
150118
}
151119
}

src/main/java/com/stripe/net/RequestOptions.java

Lines changed: 89 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class RequestOptions {
1313
private final Authenticator authenticator;
1414
private final String clientId;
1515
private final String stripeContext;
16+
private final String stripeRequestTrigger;
1617
private final String idempotencyKey;
1718
private final String stripeAccount;
1819

@@ -33,15 +34,15 @@ public class RequestOptions {
3334
private final PasswordAuthentication proxyCredential;
3435

3536
public static RequestOptions getDefault() {
36-
return new RequestOptions(
37-
null, null, null, null, null, null, null, null, null, null, null, null);
37+
return new RequestOptionsBuilder().build();
3838
}
3939

40-
protected RequestOptions(
40+
private RequestOptions(
4141
Authenticator authenticator,
4242
String clientId,
4343
String idempotencyKey,
4444
String stripeContext,
45+
String stripeRequestTrigger,
4546
String stripeAccount,
4647
String stripeVersionOverride,
4748
String baseUrl,
@@ -54,6 +55,7 @@ protected RequestOptions(
5455
this.clientId = clientId;
5556
this.idempotencyKey = idempotencyKey;
5657
this.stripeContext = stripeContext;
58+
this.stripeRequestTrigger = stripeRequestTrigger;
5759
this.stripeAccount = stripeAccount;
5860
this.stripeVersionOverride = stripeVersionOverride;
5961
this.baseUrl = baseUrl;
@@ -64,6 +66,23 @@ protected RequestOptions(
6466
this.proxyCredential = proxyCredential;
6567
}
6668

69+
RequestOptions(RequestOptionsBuilder builder) {
70+
this(
71+
builder.authenticator,
72+
normalizeClientId(builder.clientId),
73+
normalizeIdempotencyKey(builder.idempotencyKey),
74+
builder.stripeContext,
75+
builder.stripeRequestTrigger,
76+
normalizeStripeAccount(builder.stripeAccount),
77+
normalizeStripeVersion(builder.stripeVersionOverride),
78+
normalizeBaseUrl(builder.baseUrl),
79+
builder.connectTimeout,
80+
builder.readTimeout,
81+
builder.maxNetworkRetries,
82+
builder.connectionProxy,
83+
builder.proxyCredential);
84+
}
85+
6786
public Authenticator getAuthenticator() {
6887
return this.authenticator;
6988
}
@@ -84,6 +103,10 @@ public String getStripeContext() {
84103
return stripeContext;
85104
}
86105

106+
public String getStripeRequestTrigger() {
107+
return stripeRequestTrigger;
108+
}
109+
87110
public String getIdempotencyKey() {
88111
return idempotencyKey;
89112
}
@@ -155,6 +178,7 @@ public RequestOptionsBuilder toBuilderFullCopy() {
155178
.setClientId(this.clientId)
156179
.setIdempotencyKey(this.idempotencyKey)
157180
.setStripeAccount(this.stripeAccount)
181+
.setStripeRequestTrigger(this.stripeRequestTrigger)
158182
.setConnectTimeout(this.connectTimeout)
159183
.setReadTimeout(this.readTimeout)
160184
.setMaxNetworkRetries(this.maxNetworkRetries)
@@ -168,6 +192,7 @@ public static class RequestOptionsBuilder {
168192
protected String clientId;
169193
protected String idempotencyKey;
170194
protected String stripeContext;
195+
protected String stripeRequestTrigger;
171196
protected String stripeAccount;
172197
protected String stripeVersionOverride;
173198
protected Integer connectTimeout;
@@ -253,6 +278,15 @@ public RequestOptionsBuilder clearStripeContext() {
253278
return this;
254279
}
255280

281+
public String getStripeRequestTrigger() {
282+
return stripeRequestTrigger;
283+
}
284+
285+
public RequestOptionsBuilder setStripeRequestTrigger(String stripeRequestTrigger) {
286+
this.stripeRequestTrigger = stripeRequestTrigger;
287+
return this;
288+
}
289+
256290
public RequestOptionsBuilder setIdempotencyKey(String idempotencyKey) {
257291
this.idempotencyKey = idempotencyKey;
258292
return this;
@@ -368,19 +402,7 @@ public RequestOptionsBuilder setBaseUrl(final String baseUrl) {
368402

369403
/** Constructs a {@link RequestOptions} with the specified values. */
370404
public RequestOptions build() {
371-
return new RequestOptions(
372-
this.authenticator,
373-
normalizeClientId(this.clientId),
374-
normalizeIdempotencyKey(this.idempotencyKey),
375-
stripeContext,
376-
normalizeStripeAccount(this.stripeAccount),
377-
normalizeStripeVersion(this.stripeVersionOverride),
378-
normalizeBaseUrl(this.baseUrl),
379-
connectTimeout,
380-
readTimeout,
381-
maxNetworkRetries,
382-
connectionProxy,
383-
proxyCredential);
405+
return new RequestOptions(this);
384406
}
385407
}
386408

@@ -470,20 +492,17 @@ protected static String normalizeStripeAccount(String stripeAccount) {
470492

471493
static RequestOptions merge(StripeResponseGetterOptions clientOptions, RequestOptions options) {
472494
if (options == null) {
473-
return new RequestOptions(
474-
clientOptions.getAuthenticator(), // authenticator
475-
clientOptions.getClientId(), // clientId
476-
null, // idempotencyKey
477-
clientOptions.getStripeContext(), // stripeContext
478-
clientOptions.getStripeAccount(), // stripeAccount
479-
null, // stripeVersionOverride
480-
null, // baseUrl
481-
clientOptions.getConnectTimeout(), // connectTimeout
482-
clientOptions.getReadTimeout(), // readTimeout
483-
clientOptions.getMaxNetworkRetries(), // maxNetworkRetries
484-
clientOptions.getConnectionProxy(), // connectionProxy
485-
clientOptions.getProxyCredential() // proxyCredential
486-
);
495+
return new RequestOptionsBuilder()
496+
.setAuthenticator(clientOptions.getAuthenticator())
497+
.setClientId(clientOptions.getClientId())
498+
.setStripeContext(clientOptions.getStripeContext())
499+
.setStripeAccount(clientOptions.getStripeAccount())
500+
.setConnectTimeout(clientOptions.getConnectTimeout())
501+
.setReadTimeout(clientOptions.getReadTimeout())
502+
.setMaxNetworkRetries(clientOptions.getMaxNetworkRetries())
503+
.setConnectionProxy(clientOptions.getConnectionProxy())
504+
.setProxyCredential(clientOptions.getProxyCredential())
505+
.build();
487506
}
488507

489508
// callers need to be able to explicitly unset context per-request
@@ -500,33 +519,46 @@ static RequestOptions merge(StripeResponseGetterOptions clientOptions, RequestOp
500519
} else {
501520
stripeContext = clientOptions.getStripeContext();
502521
}
503-
return new RequestOptions(
504-
options.getAuthenticator() != null
505-
? options.getAuthenticator()
506-
: clientOptions.getAuthenticator(),
507-
options.getClientId() != null ? options.getClientId() : clientOptions.getClientId(),
508-
options.getIdempotencyKey(),
509-
stripeContext,
510-
options.getStripeAccount() != null
511-
? options.getStripeAccount()
512-
: clientOptions.getStripeAccount(),
513-
RequestOptions.unsafeGetStripeVersionOverride(options),
514-
options.getBaseUrl(),
515-
options.getConnectTimeout() != null
516-
? options.getConnectTimeout()
517-
: clientOptions.getConnectTimeout(),
518-
options.getReadTimeout() != null
519-
? options.getReadTimeout()
520-
: clientOptions.getReadTimeout(),
521-
options.getMaxNetworkRetries() != null
522-
? options.getMaxNetworkRetries()
523-
: clientOptions.getMaxNetworkRetries(),
524-
options.getConnectionProxy() != null
525-
? options.getConnectionProxy()
526-
: clientOptions.getConnectionProxy(),
527-
options.getProxyCredential() != null
528-
? options.getProxyCredential()
529-
: clientOptions.getProxyCredential());
522+
523+
return RequestOptionsBuilder.unsafeSetStripeVersionOverride(
524+
new RequestOptionsBuilder()
525+
.setAuthenticator(
526+
options.getAuthenticator() != null
527+
? options.getAuthenticator()
528+
: clientOptions.getAuthenticator())
529+
.setClientId(
530+
options.getClientId() != null
531+
? options.getClientId()
532+
: clientOptions.getClientId())
533+
.setIdempotencyKey(options.getIdempotencyKey())
534+
.setStripeContext(stripeContext)
535+
.setStripeRequestTrigger(options.getStripeRequestTrigger())
536+
.setStripeAccount(
537+
options.getStripeAccount() != null
538+
? options.getStripeAccount()
539+
: clientOptions.getStripeAccount())
540+
.setConnectTimeout(
541+
options.getConnectTimeout() != null
542+
? options.getConnectTimeout()
543+
: clientOptions.getConnectTimeout())
544+
.setReadTimeout(
545+
options.getReadTimeout() != null
546+
? options.getReadTimeout()
547+
: clientOptions.getReadTimeout())
548+
.setMaxNetworkRetries(
549+
options.getMaxNetworkRetries() != null
550+
? options.getMaxNetworkRetries()
551+
: clientOptions.getMaxNetworkRetries())
552+
.setConnectionProxy(
553+
options.getConnectionProxy() != null
554+
? options.getConnectionProxy()
555+
: clientOptions.getConnectionProxy())
556+
.setProxyCredential(
557+
options.getProxyCredential() != null
558+
? options.getProxyCredential()
559+
: clientOptions.getProxyCredential()),
560+
RequestOptions.unsafeGetStripeVersionOverride(options))
561+
.build();
530562
}
531563

532564
public static class InvalidRequestOptionsException extends RuntimeException {

src/main/java/com/stripe/net/StripeRequest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,11 @@ private static HttpHeaders buildHeaders(
321321
headerMap.put("Stripe-Context", Arrays.asList(options.getStripeContext()));
322322
}
323323

324+
// Stripe-Request-Trigger
325+
if (options.getStripeRequestTrigger() != null) {
326+
headerMap.put("Stripe-Request-Trigger", Arrays.asList(options.getStripeRequestTrigger()));
327+
}
328+
324329
// Stripe-Account
325330
if (options.getStripeAccount() != null) {
326331
headerMap.put("Stripe-Account", Arrays.asList(options.getStripeAccount()));

src/test/java/com/stripe/model/v2/EventTests.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,15 @@
88
import com.stripe.model.billing.Meter;
99
import com.stripe.model.v2.core.Event;
1010
import com.stripe.net.ApiResource;
11+
import com.stripe.net.HttpHeaders;
12+
import com.stripe.net.StripeResponse;
1113
import java.io.IOException;
1214
import java.time.Instant;
15+
import java.util.Collections;
1316
import org.junit.jupiter.api.BeforeEach;
1417
import org.junit.jupiter.api.Test;
18+
import org.mockito.Mockito;
19+
import org.mockito.stubbing.Answer;
1520

1621
public class EventTests extends BaseStripeTest {
1722
public static String v2PayloadNoData = null;
@@ -115,12 +120,13 @@ public void retrieveObjectFetchesAndDeserializesObject() throws StripeException,
115120
V1BillingMeterErrorReportTriggeredEvent event =
116121
(V1BillingMeterErrorReportTriggeredEvent) Event.parse(v2PayloadNoData);
117122
event.setResponseGetter(networkSpy);
118-
stubRequest(
119-
ApiResource.RequestMethod.GET,
120-
"/v1/billing/meters/meter_123",
121-
null,
122-
Meter.class,
123-
getResourceAsString("/api_fixtures/billing_meter.json"));
123+
String fixtureJson = getResourceAsString("/api_fixtures/billing_meter.json");
124+
Mockito.doAnswer(
125+
(Answer<StripeResponse>)
126+
invocation ->
127+
new StripeResponse(200, HttpHeaders.of(Collections.emptyMap()), fixtureJson))
128+
.when(httpClientSpy)
129+
.request(Mockito.any());
124130

125131
assertEquals("/v1/billing/meters/meter_123", event.getRelatedObject().getUrl());
126132
assertEquals("meter_123", event.getRelatedObject().getId());
@@ -141,6 +147,11 @@ public void retrieveObjectFetchesAndDeserializesObject() throws StripeException,
141147
assertEquals("active", meter.getStatus());
142148
assertNull(meter.getStatusTransitions().getDeactivatedAt());
143149
assertEquals(1727303036, meter.getUpdated());
150+
151+
verifyStripeRequest(
152+
req ->
153+
assertEquals(
154+
"event=evt_234", req.headers().firstValue("Stripe-Request-Trigger").orElse(null)));
144155
}
145156

146157
// FIXME (jar) this should no longer be possible; confirm this and remove before merge

0 commit comments

Comments
 (0)