78 lines
2.0 KiB
Objective-C
78 lines
2.0 KiB
Objective-C
//
|
|
// MBIMHTTPUtilities.c
|
|
// kordophoned
|
|
//
|
|
// Created by James Magahern on 11/16/18.
|
|
// Copyright © 2018 James Magahern. All rights reserved.
|
|
//
|
|
|
|
#include "MBIMHTTPUtilities.h"
|
|
|
|
static NSDateFormatter* _dateFormatterRFC822 = nil;
|
|
static NSDateFormatter* _dateFormatterISO8601 = nil;
|
|
static dispatch_queue_t _dateFormatterQueue = NULL;
|
|
|
|
__attribute__((constructor))
|
|
static void __InitializeDateFormatter()
|
|
{
|
|
_dateFormatterQueue = dispatch_queue_create("dateFormatter", DISPATCH_QUEUE_SERIAL);
|
|
|
|
_dateFormatterRFC822 = [[NSDateFormatter alloc] init];
|
|
_dateFormatterRFC822.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
|
|
_dateFormatterRFC822.dateFormat = @"EEE',' dd MMM yyyy HH':'mm':'ss 'GMT'";
|
|
_dateFormatterRFC822.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
|
|
|
|
_dateFormatterISO8601 = [[NSDateFormatter alloc] init];
|
|
_dateFormatterISO8601.timeZone = [NSTimeZone timeZoneWithAbbreviation:@"GMT"];
|
|
_dateFormatterISO8601.dateFormat = @"yyyy-MM-dd'T'HH:mm:ss'+00:00'";
|
|
_dateFormatterISO8601.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
|
|
}
|
|
|
|
NSString* MBIMWebServerFormatRFC822(NSDate *date)
|
|
{
|
|
__block NSString *string = nil;
|
|
dispatch_sync(_dateFormatterQueue, ^{
|
|
string = [_dateFormatterRFC822 stringFromDate:date];
|
|
});
|
|
|
|
return string;
|
|
}
|
|
|
|
NSString* MBIMWebServerFormatISO8601(NSDate *date)
|
|
{
|
|
__block NSString *string = nil;
|
|
dispatch_sync(_dateFormatterQueue, ^{
|
|
string = [_dateFormatterISO8601 stringFromDate:date];
|
|
});
|
|
|
|
return string;
|
|
}
|
|
|
|
@implementation NSDate (MBIMWebServerFormat)
|
|
|
|
- (NSString *)RFC822StringValue
|
|
{
|
|
return MBIMWebServerFormatRFC822(self);
|
|
}
|
|
|
|
- (NSString *)ISO8601StringValue
|
|
{
|
|
return MBIMWebServerFormatISO8601(self);
|
|
}
|
|
|
|
@end
|
|
|
|
@implementation NSString (MBIMWebServerFormat)
|
|
|
|
- (NSDate *)RFC822Date
|
|
{
|
|
return [_dateFormatterRFC822 dateFromString:self];
|
|
}
|
|
|
|
- (NSDate *)ISO8601Date
|
|
{
|
|
return [_dateFormatterISO8601 dateFromString:self];
|
|
}
|
|
|
|
@end
|