Skip to content

Commit 0db4b32

Browse files
SirBifwing328
authored andcommitted
[objc] Let the developer specify the timezone to be used for date serialisation (#6628)
* [objc] Update deployment target to 8.0 Updates the test project deployment target to 8.0, as that's the lowest supported by the latest XCode. * [objc] Update petstore tests based on current master Makes sure the tests are based on the latest version of master. * [objc] Allow specifying the serialization timezone Now it's possible to specify the timezone used for serializing dates
1 parent 567ae3f commit 0db4b32

File tree

23 files changed

+117
-22
lines changed

23 files changed

+117
-22
lines changed

modules/swagger-codegen/src/main/resources/objc/DefaultConfiguration-header.mustache

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,11 @@
7474
*/
7575
@property (nonatomic) NSString *sslCaCert;
7676

77+
/**
78+
* The time zone to use for date serialization
79+
*/
80+
@property (nonatomic) NSTimeZone *serializationTimeZone;
81+
7782
/**
7883
* Sets API key
7984
*

modules/swagger-codegen/src/main/resources/objc/JSONValueTransformer+ISO8601-body.mustache

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#import <ISO8601/NSDate+ISO8601.h>
22
#import "JSONValueTransformer+ISO8601.h"
3+
#import "{{classPrefix}}Sanitizer.h"
34

45
@implementation JSONValueTransformer (ISO8601)
56

@@ -8,4 +9,9 @@
89
return [NSDate dateWithISO8601String:string];
910
}
1011

12+
- (NSString *)JSONObjectFromNSDate:(NSDate *)date
13+
{
14+
return [{{classPrefix}}Sanitizer dateToString:date];
15+
}
16+
1117
@end

modules/swagger-codegen/src/main/resources/objc/Sanitizer-body.mustache

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#import "{{classPrefix}}Sanitizer.h"
22
#import "{{classPrefix}}Object.h"
33
#import "{{classPrefix}}QueryParamCollection.h"
4+
#import "{{classPrefix}}DefaultConfiguration.h"
45
#import <ISO8601/ISO8601.h>
56

67
NSString * const k{{classPrefix}}ApplicationJSONType = @"application/json";
@@ -63,7 +64,7 @@ NSString * {{classPrefix}}PercentEscapedStringFromString(NSString *string) {
6364
return object;
6465
}
6566
else if ([object isKindOfClass:[NSDate class]]) {
66-
return [self dateParameterToString:object];
67+
return [{{classPrefix}}Sanitizer dateToString:object];
6768
}
6869
else if ([object isKindOfClass:[NSArray class]]) {
6970
NSArray *objectArray = object;
@@ -107,7 +108,7 @@ NSString * {{classPrefix}}PercentEscapedStringFromString(NSString *string) {
107108
return [param stringValue];
108109
}
109110
else if ([param isKindOfClass:[NSDate class]]) {
110-
return [self dateParameterToString:param];
111+
return [{{classPrefix}}Sanitizer dateToString:param];
111112
}
112113
else if ([param isKindOfClass:[NSArray class]]) {
113114
NSMutableArray *mutableParam = [NSMutableArray array];
@@ -125,8 +126,9 @@ NSString * {{classPrefix}}PercentEscapedStringFromString(NSString *string) {
125126
}
126127
}
127128

128-
- (NSString *)dateParameterToString:(id)param {
129-
return [param ISO8601String];
129+
+ (NSString *)dateToString:(id)date {
130+
NSTimeZone* timeZone = [{{classPrefix}}DefaultConfiguration sharedConfig].serializationTimeZone;
131+
return [date ISO8601StringWithTimeZone:timeZone usingCalendar:nil];
130132
}
131133

132134
#pragma mark - Utility Methods

modules/swagger-codegen/src/main/resources/objc/Sanitizer-header.mustache

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,11 @@ extern NSString * const k{{classPrefix}}ApplicationJSONType;
2020
*/
2121
- (NSString *) parameterToString: (id) param;
2222

23+
/**
24+
* Convert date to NSString
25+
*/
26+
+ (NSString *)dateToString:(id)date;
27+
2328
/**
2429
* Detects Accept header from accepts NSArray
2530
*
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
2.3.0-SNAPSHOT

samples/client/petstore-security-test/objc/SwaggerClient/Api/SWGFakeApi.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ extern NSInteger kSWGFakeApiMissingParamErrorCode;
2929
///
3030
/// code:400 message:"To test code injection *_/ ' \" =end -- \\r\\n \\n \\r"
3131
///
32-
/// @return
32+
/// @return void
3333
-(NSURLSessionTask*) testCodeInjectEndRnNRWithTestCodeInjectEndRnNR: (NSString*) testCodeInjectEndRnNR
3434
completionHandler: (void (^)(NSError* error)) handler;
3535

samples/client/petstore-security-test/objc/SwaggerClient/Core/JSONValueTransformer+ISO8601.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#import <ISO8601/NSDate+ISO8601.h>
22
#import "JSONValueTransformer+ISO8601.h"
3+
#import "SWGSanitizer.h"
34

45
@implementation JSONValueTransformer (ISO8601)
56

@@ -8,4 +9,9 @@ - (NSDate *) NSDateFromNSString:(NSString *)string
89
return [NSDate dateWithISO8601String:string];
910
}
1011

12+
- (NSString *)JSONObjectFromNSDate:(NSDate *)date
13+
{
14+
return [SWGSanitizer dateToString:date];
15+
}
16+
1117
@end

samples/client/petstore-security-test/objc/SwaggerClient/Core/SWGApiClient.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,27 @@ extern NSString *const SWGResponseObjectErrorKey;
3434

3535
@property(nonatomic, strong) id<SWGSanitizer> sanitizer;
3636

37+
/**
38+
* Gets if the client is unreachable
39+
*
40+
* @return The client offline state
41+
*/
42+
+(BOOL) getOfflineState;
43+
44+
/**
45+
* Sets the client reachability, this may be overridden by the reachability manager if reachability changes
46+
*
47+
* @param status The client reachability status.
48+
*/
49+
+(void) setReachabilityStatus:(AFNetworkReachabilityStatus) status;
50+
51+
/**
52+
* Gets the client reachability
53+
*
54+
* @return The client reachability.
55+
*/
56+
+(AFNetworkReachabilityStatus) getReachabilityStatus;
57+
3758
@property (nonatomic, strong) NSDictionary< NSString *, AFHTTPRequestSerializer <AFURLRequestSerialization> *>* requestSerializerForContentType;
3859

3960
/**

samples/client/petstore-security-test/objc/SwaggerClient/Core/SWGConfiguration.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,4 @@ static NSString * const kSWGAPIVersion = @"1.0.0";
8686
*/
8787
@property (readonly, nonatomic, strong) NSDictionary *defaultHeaders;
8888

89-
@end
89+
@end

samples/client/petstore-security-test/objc/SwaggerClient/Core/SWGDefaultConfiguration.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
*/
8686
@property (nonatomic) NSString *sslCaCert;
8787

88+
/**
89+
* The time zone to use for date serialization
90+
*/
91+
@property (nonatomic) NSTimeZone *serializationTimeZone;
92+
8893
/**
8994
* Sets API key
9095
*

samples/client/petstore-security-test/objc/SwaggerClient/Core/SWGSanitizer.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ extern NSString * const kSWGApplicationJSONType;
3131
*/
3232
- (NSString *) parameterToString: (id) param;
3333

34+
/**
35+
* Convert date to NSString
36+
*/
37+
+ (NSString *)dateToString:(id)date;
38+
3439
/**
3540
* Detects Accept header from accepts NSArray
3641
*

samples/client/petstore-security-test/objc/SwaggerClient/Core/SWGSanitizer.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#import "SWGSanitizer.h"
22
#import "SWGObject.h"
33
#import "SWGQueryParamCollection.h"
4+
#import "SWGDefaultConfiguration.h"
45
#import <ISO8601/ISO8601.h>
56

67
NSString * const kSWGApplicationJSONType = @"application/json";
@@ -63,7 +64,7 @@ - (id) sanitizeForSerialization:(id) object {
6364
return object;
6465
}
6566
else if ([object isKindOfClass:[NSDate class]]) {
66-
return [self dateParameterToString:object];
67+
return [SWGSanitizer dateToString:object];
6768
}
6869
else if ([object isKindOfClass:[NSArray class]]) {
6970
NSArray *objectArray = object;
@@ -107,7 +108,7 @@ - (NSString *) parameterToString:(id)param {
107108
return [param stringValue];
108109
}
109110
else if ([param isKindOfClass:[NSDate class]]) {
110-
return [self dateParameterToString:param];
111+
return [SWGSanitizer dateToString:param];
111112
}
112113
else if ([param isKindOfClass:[NSArray class]]) {
113114
NSMutableArray *mutableParam = [NSMutableArray array];
@@ -125,8 +126,9 @@ - (NSString *) parameterToString:(id)param {
125126
}
126127
}
127128

128-
- (NSString *)dateParameterToString:(id)param {
129-
return [param ISO8601String];
129+
+ (NSString *)dateToString:(id)date {
130+
NSTimeZone* timeZone = [SWGDefaultConfiguration sharedConfig].serializationTimeZone;
131+
return [date ISO8601StringWithTimeZone:timeZone usingCalendar:nil];
130132
}
131133

132134
#pragma mark - Utility Methods

samples/client/petstore-security-test/objc/SwaggerClient/Model/SWGReturn.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717

1818

19+
1920
@protocol SWGReturn
2021
@end
2122

samples/client/petstore/objc/core-data/SwaggerClient/Core/JSONValueTransformer+ISO8601.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#import <ISO8601/NSDate+ISO8601.h>
22
#import "JSONValueTransformer+ISO8601.h"
3+
#import "SWGSanitizer.h"
34

45
@implementation JSONValueTransformer (ISO8601)
56

@@ -8,4 +9,9 @@ - (NSDate *) NSDateFromNSString:(NSString *)string
89
return [NSDate dateWithISO8601String:string];
910
}
1011

12+
- (NSString *)JSONObjectFromNSDate:(NSDate *)date
13+
{
14+
return [SWGSanitizer dateToString:date];
15+
}
16+
1117
@end

samples/client/petstore/objc/core-data/SwaggerClient/Core/SWGDefaultConfiguration.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
*/
8686
@property (nonatomic) NSString *sslCaCert;
8787

88+
/**
89+
* The time zone to use for date serialization
90+
*/
91+
@property (nonatomic) NSTimeZone *serializationTimeZone;
92+
8893
/**
8994
* Sets API key
9095
*

samples/client/petstore/objc/core-data/SwaggerClient/Core/SWGSanitizer.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ extern NSString * const kSWGApplicationJSONType;
3131
*/
3232
- (NSString *) parameterToString: (id) param;
3333

34+
/**
35+
* Convert date to NSString
36+
*/
37+
+ (NSString *)dateToString:(id)date;
38+
3439
/**
3540
* Detects Accept header from accepts NSArray
3641
*

samples/client/petstore/objc/core-data/SwaggerClient/Core/SWGSanitizer.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#import "SWGSanitizer.h"
22
#import "SWGObject.h"
33
#import "SWGQueryParamCollection.h"
4+
#import "SWGDefaultConfiguration.h"
45
#import <ISO8601/ISO8601.h>
56

67
NSString * const kSWGApplicationJSONType = @"application/json";
@@ -63,7 +64,7 @@ - (id) sanitizeForSerialization:(id) object {
6364
return object;
6465
}
6566
else if ([object isKindOfClass:[NSDate class]]) {
66-
return [self dateParameterToString:object];
67+
return [SWGSanitizer dateToString:object];
6768
}
6869
else if ([object isKindOfClass:[NSArray class]]) {
6970
NSArray *objectArray = object;
@@ -107,7 +108,7 @@ - (NSString *) parameterToString:(id)param {
107108
return [param stringValue];
108109
}
109110
else if ([param isKindOfClass:[NSDate class]]) {
110-
return [self dateParameterToString:param];
111+
return [SWGSanitizer dateToString:param];
111112
}
112113
else if ([param isKindOfClass:[NSArray class]]) {
113114
NSMutableArray *mutableParam = [NSMutableArray array];
@@ -125,8 +126,9 @@ - (NSString *) parameterToString:(id)param {
125126
}
126127
}
127128

128-
- (NSString *)dateParameterToString:(id)param {
129-
return [param ISO8601String];
129+
+ (NSString *)dateToString:(id)date {
130+
NSTimeZone* timeZone = [SWGDefaultConfiguration sharedConfig].serializationTimeZone;
131+
return [date ISO8601StringWithTimeZone:timeZone usingCalendar:nil];
130132
}
131133

132134
#pragma mark - Utility Methods

samples/client/petstore/objc/default/SwaggerClient/Core/JSONValueTransformer+ISO8601.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
#import <ISO8601/NSDate+ISO8601.h>
22
#import "JSONValueTransformer+ISO8601.h"
3+
#import "SWGSanitizer.h"
34

45
@implementation JSONValueTransformer (ISO8601)
56

@@ -8,4 +9,9 @@ - (NSDate *) NSDateFromNSString:(NSString *)string
89
return [NSDate dateWithISO8601String:string];
910
}
1011

12+
- (NSString *)JSONObjectFromNSDate:(NSDate *)date
13+
{
14+
return [SWGSanitizer dateToString:date];
15+
}
16+
1117
@end

samples/client/petstore/objc/default/SwaggerClient/Core/SWGDefaultConfiguration.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,11 @@
8585
*/
8686
@property (nonatomic) NSString *sslCaCert;
8787

88+
/**
89+
* The time zone to use for date serialization
90+
*/
91+
@property (nonatomic) NSTimeZone *serializationTimeZone;
92+
8893
/**
8994
* Sets API key
9095
*

samples/client/petstore/objc/default/SwaggerClient/Core/SWGSanitizer.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ extern NSString * const kSWGApplicationJSONType;
3131
*/
3232
- (NSString *) parameterToString: (id) param;
3333

34+
/**
35+
* Convert date to NSString
36+
*/
37+
+ (NSString *)dateToString:(id)date;
38+
3439
/**
3540
* Detects Accept header from accepts NSArray
3641
*

samples/client/petstore/objc/default/SwaggerClient/Core/SWGSanitizer.m

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#import "SWGSanitizer.h"
22
#import "SWGObject.h"
33
#import "SWGQueryParamCollection.h"
4+
#import "SWGDefaultConfiguration.h"
45
#import <ISO8601/ISO8601.h>
56

67
NSString * const kSWGApplicationJSONType = @"application/json";
@@ -63,7 +64,7 @@ - (id) sanitizeForSerialization:(id) object {
6364
return object;
6465
}
6566
else if ([object isKindOfClass:[NSDate class]]) {
66-
return [self dateParameterToString:object];
67+
return [SWGSanitizer dateToString:object];
6768
}
6869
else if ([object isKindOfClass:[NSArray class]]) {
6970
NSArray *objectArray = object;
@@ -107,7 +108,7 @@ - (NSString *) parameterToString:(id)param {
107108
return [param stringValue];
108109
}
109110
else if ([param isKindOfClass:[NSDate class]]) {
110-
return [self dateParameterToString:param];
111+
return [SWGSanitizer dateToString:param];
111112
}
112113
else if ([param isKindOfClass:[NSArray class]]) {
113114
NSMutableArray *mutableParam = [NSMutableArray array];
@@ -125,8 +126,9 @@ - (NSString *) parameterToString:(id)param {
125126
}
126127
}
127128

128-
- (NSString *)dateParameterToString:(id)param {
129-
return [param ISO8601String];
129+
+ (NSString *)dateToString:(id)date {
130+
NSTimeZone* timeZone = [SWGDefaultConfiguration sharedConfig].serializationTimeZone;
131+
return [date ISO8601StringWithTimeZone:timeZone usingCalendar:nil];
130132
}
131133

132134
#pragma mark - Utility Methods

samples/client/petstore/objc/default/SwaggerClientTests/SwaggerClient.xcodeproj/project.pbxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -534,7 +534,7 @@
534534
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
535535
GCC_WARN_UNUSED_FUNCTION = YES;
536536
GCC_WARN_UNUSED_VARIABLE = YES;
537-
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
537+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
538538
ONLY_ACTIVE_ARCH = YES;
539539
SDKROOT = iphoneos;
540540
TARGETED_DEVICE_FAMILY = "1,2";
@@ -567,7 +567,7 @@
567567
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
568568
GCC_WARN_UNUSED_FUNCTION = YES;
569569
GCC_WARN_UNUSED_VARIABLE = YES;
570-
IPHONEOS_DEPLOYMENT_TARGET = 7.1;
570+
IPHONEOS_DEPLOYMENT_TARGET = 8.0;
571571
SDKROOT = iphoneos;
572572
TARGETED_DEVICE_FAMILY = "1,2";
573573
VALIDATE_PRODUCT = YES;

0 commit comments

Comments
 (0)