Skip to content

Commit dcdf457

Browse files
authored
feat: Add idempotency (#1790)
1 parent ceb4623 commit dcdf457

File tree

5 files changed

+8
-1
lines changed

5 files changed

+8
-1
lines changed

Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.h

+1
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ extern NSString *const PFCommandHeaderNameAppBuildVersion;
2727
extern NSString *const PFCommandHeaderNameAppDisplayVersion;
2828
extern NSString *const PFCommandHeaderNameOSVersion;
2929
extern NSString *const PFCommandHeaderNameSessionToken;
30+
extern NSString *const PFCommandHeaderNameRequestId;
3031

3132
///--------------------------------------
3233
#pragma mark - HTTP Method Override

Parse/Parse/Internal/Commands/CommandRunner/PFCommandRunningConstants.m

+1
Original file line numberDiff line numberDiff line change
@@ -19,5 +19,6 @@
1919
NSString *const PFCommandHeaderNameAppDisplayVersion = @"X-Parse-App-Display-Version";
2020
NSString *const PFCommandHeaderNameOSVersion = @"X-Parse-OS-Version";
2121
NSString *const PFCommandHeaderNameSessionToken = @"X-Parse-Session-Token";
22+
NSString *const PFCommandHeaderNameRequestId = @"X-Parse-Request-Id";
2223

2324
NSString *const PFCommandParameterNameMethodOverride = @"_method";

Parse/Parse/Internal/Commands/CommandRunner/URLRequestConstructor/PFCommandURLRequestConstructor.m

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ + (NSDictionary *)defaultURLRequestHeadersForApplicationId:(NSString *)applicati
141141
if (clientKey) {
142142
mutableHeaders[PFCommandHeaderNameClientKey] = clientKey;
143143
}
144-
144+
mutableHeaders[PFCommandHeaderNameRequestId] = [[NSUUID UUID] UUIDString];
145145
mutableHeaders[PFCommandHeaderNameClientVersion] = [versionPrefix stringByAppendingString:PARSE_VERSION];
146146
mutableHeaders[PFCommandHeaderNameOSVersion] = [PFDevice currentDevice].operatingSystemFullVersion;
147147

Parse/Parse/Source/PFConstants.h

+4
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,10 @@ typedef NS_ENUM(NSInteger, PFErrorCode) {
284284
Application has exceeded its request limit.
285285
*/
286286
kPFErrorRequestLimitExceeded = 155,
287+
/**
288+
Request was a duplicate and has been discarded due to idempotency rules.
289+
*/
290+
kPFErrorDuplicateRequest = 159,
287291
/**
288292
Invalid event name.
289293
*/

Parse/Tests/Unit/CommandURLRequestConstructorTests.m

+1
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ - (void)testDefaultURLRequestHeaders {
155155
XCTAssertNotNil(headers[PFCommandHeaderNameOSVersion]);
156156
XCTAssertNotNil(headers[PFCommandHeaderNameAppBuildVersion]);
157157
XCTAssertNotNil(headers[PFCommandHeaderNameAppDisplayVersion]);
158+
XCTAssertNotNil(headers[PFCommandHeaderNameRequestId]);
158159
}
159160

160161
- (void)testBailOnEncodingError {

0 commit comments

Comments
 (0)