From 26ef245329f0861905c8695f59b2de1fcd2a205d Mon Sep 17 00:00:00 2001 From: Brandon Walkin Date: Tue, 15 Mar 2016 16:42:21 -0700 Subject: [PATCH] Origami 2.2 --- Origami Plugin/DHAppleScriptPatch.h | 19 + Origami Plugin/DHAppleScriptPatch.m | 56 + Origami Plugin/DHAppleScriptPatch.xml | 56 + Origami Plugin/DHImageAtURLPatch.h | 24 + Origami Plugin/DHImageAtURLPatch.m | 137 ++ Origami Plugin/DHImageAtURLPatch.xml | 65 + Origami Plugin/DHImageWithFormattedStrings.h | 20 + Origami Plugin/DHImageWithFormattedStrings.m | 277 +++ .../DHImageWithFormattedStrings.xml | 56 + Origami Plugin/DHJSONImporterPatch.h | 21 + Origami Plugin/DHJSONImporterPatch.m | 86 + Origami Plugin/DHJSONImporterPatch.xml | 63 + Origami Plugin/DHRESTRequest.h | 27 + Origami Plugin/DHRESTRequest.m | 105 + Origami Plugin/DHRESTRequestPatch.h | 27 + Origami Plugin/DHRESTRequestPatch.m | 99 + Origami Plugin/DHRESTRequestPatch.xml | 105 + Origami Plugin/DHSoundPlayerProPatch.h | 25 + Origami Plugin/DHSoundPlayerProPatch.m | 73 + Origami Plugin/DHSoundPlayerProPatch.xml | 67 + Origami Plugin/DHStringAtURLPatch.h | 21 + Origami Plugin/DHStringAtURLPatch.m | 52 + Origami Plugin/DHStringAtURLPatch.xml | 70 + Origami Plugin/DHStringFormatterPatch.h | 27 + Origami Plugin/DHStringFormatterPatch.m | 103 + Origami Plugin/DHStringFormatterPatch.xml | 105 + Origami Plugin/DHStructureAllKeysPatch.h | 20 + Origami Plugin/DHStructureAllKeysPatch.m | 43 + Origami Plugin/DHStructureAllKeysPatch.xml | 56 + Origami Plugin/DHStructureAllValuesPatch.h | 27 + Origami Plugin/DHStructureAllValuesPatch.m | 62 + Origami Plugin/DHStructureAllValuesPatch.xml | 62 + .../DHStructureMultiplePathMembersPatch.h | 20 + .../DHStructureMultiplePathMembersPatch.m | 84 + .../DHStructureMultiplePathMembersPatch.xml | 58 + Origami Plugin/DHStructurePathMemberPatch.h | 23 + Origami Plugin/DHStructurePathMemberPatch.m | 83 + Origami Plugin/DHStructurePathMemberPatch.xml | 65 + .../Export for Origami.sketchplugin | 32 +- Origami Plugin/FBDescriptionPatch.h | 17 + Origami Plugin/FBDescriptionPatch.m | 46 + Origami Plugin/FBDescriptionPatch.xml | 49 + Origami Plugin/FBFPS.h | 18 + Origami Plugin/FBFPS.m | 51 + Origami Plugin/FBFPS.xml | 38 + Origami Plugin/FBFileUpdated.h | 17 + Origami Plugin/FBFileUpdated.m | 75 + Origami Plugin/FBFileUpdated.xml | 49 + Origami Plugin/FBLogToConsole.h | 16 + Origami Plugin/FBLogToConsole.m | 36 + Origami Plugin/FBLogToConsole.xml | 39 + .../FBOrigami.xcodeproj/project.pbxproj | 362 ++++ Origami Plugin/FBOrigamiAdditions+Stats.h | 18 + Origami Plugin/FBOrigamiAdditions+Stats.m | 59 + Origami Plugin/FBOrigamiPrincipal.m | 35 +- Origami Plugin/FBStructureShuffle.h | 18 + Origami Plugin/FBStructureShuffle.m | 48 + Origami Plugin/FBStructureShuffle.xml | 56 + Origami Plugin/Info.plist | 4 +- .../NSAppleEventDescriptor+FBAdditions.h | 14 + .../NSAppleEventDescriptor+FBAdditions.m | 83 + Origami Plugin/NSAppleScript+FBAdditions.h | 20 + Origami Plugin/NSAppleScript+FBAdditions.m | 45 + Origami Plugin/NSArray+FBAdditions.h | 16 + Origami Plugin/NSArray+FBAdditions.m | 44 + Origami Plugin/NSColor+HTMLExtensions.h | 16 + Origami Plugin/NSColor+HTMLExtensions.m | 72 + Origami Plugin/NSDate+FBAdditions.h | 17 + Origami Plugin/NSDate+FBAdditions.m | 38 + Origami Plugin/NSDictionary+FBAdditions.h | 19 + Origami Plugin/NSDictionary+FBAdditions.m | 208 ++ Origami Plugin/NSString+FBAdditions.h | 3 + Origami Plugin/NSString+FBAdditions.m | 134 ++ Origami Plugin/NSString+RelativePath.h | 18 + Origami Plugin/NSString+RelativePath.m | 78 + Origami Plugin/NSURL+FBAdditions.h | 17 + Origami Plugin/NSURL+FBAdditions.m | 51 + Origami Plugin/SocketIO/SBJson/SBJson.h | 36 + Origami Plugin/SocketIO/SBJson/SBJsonParser.h | 86 + Origami Plugin/SocketIO/SBJson/SBJsonParser.m | 91 + .../SocketIO/SBJson/SBJsonStreamParser.h | 174 ++ .../SocketIO/SBJson/SBJsonStreamParser.m | 338 ++++ .../SBJson/SBJsonStreamParserAccumulator.h | 37 + .../SBJson/SBJsonStreamParserAccumulator.m | 51 + .../SBJson/SBJsonStreamParserAdapter.h | 142 ++ .../SBJson/SBJsonStreamParserAdapter.m | 168 ++ .../SocketIO/SBJson/SBJsonStreamParserState.h | 83 + .../SocketIO/SBJson/SBJsonStreamParserState.m | 364 ++++ .../SocketIO/SBJson/SBJsonStreamTokeniser.h | 40 + .../SocketIO/SBJson/SBJsonStreamTokeniser.m | 397 ++++ .../SocketIO/SBJson/SBJsonStreamWriter.h | 210 ++ .../SocketIO/SBJson/SBJsonStreamWriter.m | 367 ++++ .../SBJson/SBJsonStreamWriterAccumulator.h | 36 + .../SBJson/SBJsonStreamWriterAccumulator.m | 56 + .../SocketIO/SBJson/SBJsonStreamWriterState.h | 69 + .../SocketIO/SBJson/SBJsonStreamWriterState.m | 147 ++ Origami Plugin/SocketIO/SBJson/SBJsonWriter.h | 103 + Origami Plugin/SocketIO/SBJson/SBJsonWriter.m | 103 + Origami Plugin/SocketIO/SocketIO.h | 125 ++ Origami Plugin/SocketIO/SocketIO.m | 839 ++++++++ .../SocketIO/SocketIOJSONSerialization.h | 31 + .../SocketIO/SocketIOJSONSerialization.m | 115 ++ Origami Plugin/SocketIO/SocketIOPacket.h | 52 + Origami Plugin/SocketIO/SocketIOPacket.m | 104 + Origami Plugin/SocketIO/SocketIOTransport.h | 50 + .../SocketIO/SocketIOTransportWebsocket.h | 36 + .../SocketIO/SocketIOTransportWebsocket.m | 128 ++ .../SocketIO/SocketIOTransportXHR.h | 37 + .../SocketIO/SocketIOTransportXHR.m | 255 +++ .../SocketRocket/NSData+SRB64Additions.h | 24 + .../SocketRocket/NSData+SRB64Additions.m | 39 + .../SocketIO/SocketRocket/SRWebSocket.h | 114 ++ .../SocketIO/SocketRocket/SRWebSocket.m | 1757 +++++++++++++++++ .../SocketRocket/SocketRocket-Prefix.pch | 27 + Origami Plugin/SocketIO/SocketRocket/base64.c | 314 +++ Origami Plugin/SocketIO/SocketRocket/base64.h | 34 + Origami.plugin/Contents/Info.plist | 18 +- Origami.plugin/Contents/MacOS/Origami | Bin 1164816 -> 1654936 bytes .../Contents/Resources/DHAppleScriptPatch.xml | 56 + .../Contents/Resources/DHImageAtURLPatch.xml | 65 + .../Resources/DHImageWithFormattedStrings.xml | 56 + .../Resources/DHJSONImporterPatch.xml | 63 + .../Contents/Resources/DHRESTRequestPatch.xml | 105 + .../Resources/DHSoundPlayerProPatch.xml | 67 + .../Contents/Resources/DHStringAtURLPatch.xml | 70 + .../Resources/DHStringFormatterPatch.xml | 105 + .../Resources/DHStructureAllKeysPatch.xml | 56 + .../Resources/DHStructureAllValuesPatch.xml | 62 + .../DHStructureMultiplePathMembersPatch.xml | 58 + .../Resources/DHStructurePathMemberPatch.xml | 65 + .../Resources/Export for Origami.sketchplugin | 32 +- .../Contents/Resources/FBCursorPatch.xml | 1 + .../Contents/Resources/FBDescriptionPatch.xml | 49 + Origami.plugin/Contents/Resources/FBFPS.xml | 38 + .../Contents/Resources/FBFileUpdated.xml | 49 + .../Contents/Resources/FBLogToConsole.xml | 39 + .../Contents/Resources/FBStructureShuffle.xml | 56 + 137 files changed, 12608 insertions(+), 46 deletions(-) create mode 100644 Origami Plugin/DHAppleScriptPatch.h create mode 100644 Origami Plugin/DHAppleScriptPatch.m create mode 100644 Origami Plugin/DHAppleScriptPatch.xml create mode 100644 Origami Plugin/DHImageAtURLPatch.h create mode 100644 Origami Plugin/DHImageAtURLPatch.m create mode 100644 Origami Plugin/DHImageAtURLPatch.xml create mode 100644 Origami Plugin/DHImageWithFormattedStrings.h create mode 100644 Origami Plugin/DHImageWithFormattedStrings.m create mode 100644 Origami Plugin/DHImageWithFormattedStrings.xml create mode 100644 Origami Plugin/DHJSONImporterPatch.h create mode 100644 Origami Plugin/DHJSONImporterPatch.m create mode 100644 Origami Plugin/DHJSONImporterPatch.xml create mode 100644 Origami Plugin/DHRESTRequest.h create mode 100644 Origami Plugin/DHRESTRequest.m create mode 100644 Origami Plugin/DHRESTRequestPatch.h create mode 100644 Origami Plugin/DHRESTRequestPatch.m create mode 100644 Origami Plugin/DHRESTRequestPatch.xml create mode 100644 Origami Plugin/DHSoundPlayerProPatch.h create mode 100644 Origami Plugin/DHSoundPlayerProPatch.m create mode 100644 Origami Plugin/DHSoundPlayerProPatch.xml create mode 100644 Origami Plugin/DHStringAtURLPatch.h create mode 100644 Origami Plugin/DHStringAtURLPatch.m create mode 100644 Origami Plugin/DHStringAtURLPatch.xml create mode 100644 Origami Plugin/DHStringFormatterPatch.h create mode 100644 Origami Plugin/DHStringFormatterPatch.m create mode 100644 Origami Plugin/DHStringFormatterPatch.xml create mode 100644 Origami Plugin/DHStructureAllKeysPatch.h create mode 100644 Origami Plugin/DHStructureAllKeysPatch.m create mode 100644 Origami Plugin/DHStructureAllKeysPatch.xml create mode 100644 Origami Plugin/DHStructureAllValuesPatch.h create mode 100644 Origami Plugin/DHStructureAllValuesPatch.m create mode 100644 Origami Plugin/DHStructureAllValuesPatch.xml create mode 100644 Origami Plugin/DHStructureMultiplePathMembersPatch.h create mode 100644 Origami Plugin/DHStructureMultiplePathMembersPatch.m create mode 100644 Origami Plugin/DHStructureMultiplePathMembersPatch.xml create mode 100755 Origami Plugin/DHStructurePathMemberPatch.h create mode 100755 Origami Plugin/DHStructurePathMemberPatch.m create mode 100755 Origami Plugin/DHStructurePathMemberPatch.xml create mode 100644 Origami Plugin/FBDescriptionPatch.h create mode 100644 Origami Plugin/FBDescriptionPatch.m create mode 100755 Origami Plugin/FBDescriptionPatch.xml create mode 100644 Origami Plugin/FBFPS.h create mode 100644 Origami Plugin/FBFPS.m create mode 100755 Origami Plugin/FBFPS.xml create mode 100644 Origami Plugin/FBFileUpdated.h create mode 100644 Origami Plugin/FBFileUpdated.m create mode 100755 Origami Plugin/FBFileUpdated.xml create mode 100644 Origami Plugin/FBLogToConsole.h create mode 100644 Origami Plugin/FBLogToConsole.m create mode 100755 Origami Plugin/FBLogToConsole.xml create mode 100644 Origami Plugin/FBOrigamiAdditions+Stats.h create mode 100644 Origami Plugin/FBOrigamiAdditions+Stats.m create mode 100644 Origami Plugin/FBStructureShuffle.h create mode 100644 Origami Plugin/FBStructureShuffle.m create mode 100755 Origami Plugin/FBStructureShuffle.xml create mode 100644 Origami Plugin/NSAppleEventDescriptor+FBAdditions.h create mode 100644 Origami Plugin/NSAppleEventDescriptor+FBAdditions.m create mode 100644 Origami Plugin/NSAppleScript+FBAdditions.h create mode 100644 Origami Plugin/NSAppleScript+FBAdditions.m create mode 100644 Origami Plugin/NSArray+FBAdditions.h create mode 100644 Origami Plugin/NSArray+FBAdditions.m create mode 100644 Origami Plugin/NSColor+HTMLExtensions.h create mode 100644 Origami Plugin/NSColor+HTMLExtensions.m create mode 100644 Origami Plugin/NSDate+FBAdditions.h create mode 100644 Origami Plugin/NSDate+FBAdditions.m create mode 100644 Origami Plugin/NSDictionary+FBAdditions.h create mode 100644 Origami Plugin/NSDictionary+FBAdditions.m create mode 100755 Origami Plugin/NSString+RelativePath.h create mode 100755 Origami Plugin/NSString+RelativePath.m create mode 100644 Origami Plugin/NSURL+FBAdditions.h create mode 100644 Origami Plugin/NSURL+FBAdditions.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJson.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonParser.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonParser.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.m create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonWriter.h create mode 100755 Origami Plugin/SocketIO/SBJson/SBJsonWriter.m create mode 100755 Origami Plugin/SocketIO/SocketIO.h create mode 100755 Origami Plugin/SocketIO/SocketIO.m create mode 100755 Origami Plugin/SocketIO/SocketIOJSONSerialization.h create mode 100755 Origami Plugin/SocketIO/SocketIOJSONSerialization.m create mode 100755 Origami Plugin/SocketIO/SocketIOPacket.h create mode 100755 Origami Plugin/SocketIO/SocketIOPacket.m create mode 100755 Origami Plugin/SocketIO/SocketIOTransport.h create mode 100755 Origami Plugin/SocketIO/SocketIOTransportWebsocket.h create mode 100755 Origami Plugin/SocketIO/SocketIOTransportWebsocket.m create mode 100755 Origami Plugin/SocketIO/SocketIOTransportXHR.h create mode 100755 Origami Plugin/SocketIO/SocketIOTransportXHR.m create mode 100755 Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.h create mode 100755 Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.m create mode 100755 Origami Plugin/SocketIO/SocketRocket/SRWebSocket.h create mode 100755 Origami Plugin/SocketIO/SocketRocket/SRWebSocket.m create mode 100755 Origami Plugin/SocketIO/SocketRocket/SocketRocket-Prefix.pch create mode 100755 Origami Plugin/SocketIO/SocketRocket/base64.c create mode 100755 Origami Plugin/SocketIO/SocketRocket/base64.h create mode 100644 Origami.plugin/Contents/Resources/DHAppleScriptPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHImageAtURLPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHImageWithFormattedStrings.xml create mode 100644 Origami.plugin/Contents/Resources/DHJSONImporterPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHRESTRequestPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHSoundPlayerProPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHStringAtURLPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHStringFormatterPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHStructureAllKeysPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHStructureAllValuesPatch.xml create mode 100644 Origami.plugin/Contents/Resources/DHStructureMultiplePathMembersPatch.xml create mode 100755 Origami.plugin/Contents/Resources/DHStructurePathMemberPatch.xml create mode 100755 Origami.plugin/Contents/Resources/FBDescriptionPatch.xml create mode 100755 Origami.plugin/Contents/Resources/FBFPS.xml create mode 100755 Origami.plugin/Contents/Resources/FBFileUpdated.xml create mode 100755 Origami.plugin/Contents/Resources/FBLogToConsole.xml create mode 100755 Origami.plugin/Contents/Resources/FBStructureShuffle.xml diff --git a/Origami Plugin/DHAppleScriptPatch.h b/Origami Plugin/DHAppleScriptPatch.h new file mode 100644 index 0000000..8cc4667 --- /dev/null +++ b/Origami Plugin/DHAppleScriptPatch.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface DHAppleScriptPatch : QCPatch +{ + QCStringPort *inputScript; + QCBooleanPort *inputUpdateSignal; + QCVirtualPort *outputResult; +} + +@end diff --git a/Origami Plugin/DHAppleScriptPatch.m b/Origami Plugin/DHAppleScriptPatch.m new file mode 100644 index 0000000..67636cf --- /dev/null +++ b/Origami Plugin/DHAppleScriptPatch.m @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHAppleScriptPatch.h" +#import "NSAppleScript+FBAdditions.h" + +@implementation DHAppleScriptPatch + +- (id)initWithIdentifier:(id)identifier { + if (self = [super initWithIdentifier:identifier]) { + + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProvider; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputScript.wasUpdated || inputUpdateSignal.wasUpdated)) { + return YES; + } + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { + NSString *error = nil; + id result = [NSAppleScript runScript:inputScript.stringValue error:&error]; + + if ([result isKindOfClass:[NSArray class]]) { + result = [[QCStructure alloc] initWithArray:result]; + } else if ([result isKindOfClass:[NSDictionary class]]) { + result = [[QCStructure alloc] initWithDictionary:result]; + } + + outputResult.rawValue = (error) ? error : result; + }); + + return YES; +} + +@end diff --git a/Origami Plugin/DHAppleScriptPatch.xml b/Origami Plugin/DHAppleScriptPatch.xml new file mode 100644 index 0000000..fefe9c9 --- /dev/null +++ b/Origami Plugin/DHAppleScriptPatch.xml @@ -0,0 +1,56 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Executes an AppleScript. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + AppleScript + + inputAttributes + + inputScript + + description + + name + Location + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputResult + + description + + name + Result + + + + diff --git a/Origami Plugin/DHImageAtURLPatch.h b/Origami Plugin/DHImageAtURLPatch.h new file mode 100644 index 0000000..e9aa913 --- /dev/null +++ b/Origami Plugin/DHImageAtURLPatch.h @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHImageAtURLPatch : QCPatch +{ + QCVirtualPort *inputURLOrURLs; + QCBooleanPort *inputUseCache; + QCVirtualPort *outputImageOrStructure; + QCBooleanPort *outputDone; + + NSDictionary *_URLs; + NSMutableSet *_stillDownloading; +} + +@end diff --git a/Origami Plugin/DHImageAtURLPatch.m b/Origami Plugin/DHImageAtURLPatch.m new file mode 100644 index 0000000..ffa58a7 --- /dev/null +++ b/Origami Plugin/DHImageAtURLPatch.m @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHImageAtURLPatch.h" +#import "NSArray+FBAdditions.h" +#import "NSURL+FBAdditions.h" +#import "QCPatch+FBAdditions.h" +#import "NSDocument+FBAdditions.h" + +@interface DHImageAtURLPatch (Private) +- (void)_downloadImageAtURL:(NSString *)URL; +- (void)_updateOutputPorts; +@end + +@implementation DHImageAtURLPatch + +static NSMutableDictionary *_downloadedImages; + +- (id)initWithIdentifier:(id)identifier { + if (self = [super initWithIdentifier:identifier]) { + inputUseCache.booleanValue = YES; + _stillDownloading = [[NSMutableSet alloc] init]; + if (!_downloadedImages) { + _downloadedImages = [[NSMutableDictionary alloc] init]; + } + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputURLOrURLs.wasUpdated || inputUseCache.wasUpdated)) { + return YES; + } + + id inputValue = inputURLOrURLs.rawValue; + if ([inputValue isKindOfClass:[NSString class]]) { + _URLs = @{@(0): inputValue}; + } else if ([inputValue isKindOfClass:[QCStructure class]]) { + _URLs = [inputValue dictionaryRepresentation]; + } else { + _URLs = @{}; + } + + [_stillDownloading removeAllObjects]; + [self _updateOutputPorts]; + + for (id key in _URLs) { + NSString *URL = _URLs[key]; + if (URL && (inputUseCache.booleanValue == NO || _downloadedImages[URL] == nil)) { + [_stillDownloading addObject:URL]; + [NSThread detachNewThreadSelector:@selector(_downloadImageAtURL:) toTarget:self withObject:URL]; + } + } + + return YES; +} + +@end + +@implementation DHImageAtURLPatch (Private) + +- (void)_downloadImageAtURL:(NSString *)URL { + if (!(URL && [URL isKindOfClass:[NSString class]])) { + return; + } + + NSImage *image = [[NSImage alloc] initWithContentsOfURL:[NSURL URLWithQuartzComposerLocation:URL relativeToDocument:self.fb_document]]; + _downloadedImages[URL] = image ? image : [NSNull null]; + [_stillDownloading removeObject:URL]; + + [self performSelectorOnMainThread:@selector(_updateOutputPorts) withObject:nil waitUntilDone:NO]; +} + +- (void)_updateOutputPorts { + if (_URLs.count == 1) { + id result = _downloadedImages[[_URLs allValues][0]]; + outputImageOrStructure.rawValue = (result && result != [NSNull null]) ? result : nil; + outputDone.booleanValue = YES; + return; + } + + NSMutableDictionary *images = [[NSMutableDictionary alloc] initWithCapacity:_URLs.count]; + if (_downloadedImages.count) { + for (id key in _URLs) { + NSString *URL = _URLs[key]; + if (![_stillDownloading containsObject:URL]) { + NSImage *image = _downloadedImages[URL]; + if (image) { + images[key] = image; + } + } + } + } + + BOOL allKeysAreNumbers = YES; + for (id key in images) { + allKeysAreNumbers &= [key isKindOfClass:[NSNumber class]]; + } + + QCStructure *outputStructure = nil; + if (images.count) { + if (!allKeysAreNumbers) { + outputStructure = [[QCStructure alloc] initWithDictionary:images]; + } else { + NSMutableArray *sortedImages = [[NSMutableArray alloc] initWithCapacity:images.count]; + id keysArray = [[images allKeys] sortedArrayUsingAlphabeticalSort]; + for (NSNumber *key in keysArray) { + [sortedImages addObject:images[key]]; + } + outputStructure = [[QCStructure alloc] initWithArray:sortedImages]; + } + } + + outputImageOrStructure.rawValue = outputStructure; + outputDone.booleanValue = images.count ? (images.count == _URLs.count) : NO; +} + +@end diff --git a/Origami Plugin/DHImageAtURLPatch.xml b/Origami Plugin/DHImageAtURLPatch.xml new file mode 100644 index 0000000..664a30c --- /dev/null +++ b/Origami Plugin/DHImageAtURLPatch.xml @@ -0,0 +1,65 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Asynchronously downloads and caches requested images. + +If you specify a single URL (a string), the image at that URL will be returned. If you specify multiple URLs (a structure of strings), a structure of images will be returned. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Image at URL + + inputAttributes + + inputURLOrURLs + + description + + name + URL(s) + + inputUseCache + + description + + name + Use Cache + + + outputAttributes + + outputImageOrStructure + + description + + name + Image(s) + + outputDone + + description + + name + Done + + + + diff --git a/Origami Plugin/DHImageWithFormattedStrings.h b/Origami Plugin/DHImageWithFormattedStrings.h new file mode 100644 index 0000000..77544ac --- /dev/null +++ b/Origami Plugin/DHImageWithFormattedStrings.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHImageWithFormattedStrings : QCPatch +{ + QCStringPort *inputString; + QCImagePort *outputImage; + QCStringPort *outputUnformattedString; +} + +@end diff --git a/Origami Plugin/DHImageWithFormattedStrings.m b/Origami Plugin/DHImageWithFormattedStrings.m new file mode 100644 index 0000000..3ce1485 --- /dev/null +++ b/Origami Plugin/DHImageWithFormattedStrings.m @@ -0,0 +1,277 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHImageWithFormattedStrings.h" +#import "NSString+FBAdditions.h" +#import "NSColor+HTMLExtensions.h" + +@implementation DHImageWithFormattedStrings + +static NSString *DHStyleColor = @"DHStyleColor"; +static NSString *DHStyleFontName = @"DHStyleFontName"; +static NSString *DHStyleFontSize = @"DHStyleFontSize"; +static NSString *DHStyleBold = @"DHStyleBold"; +static NSString *DHStyleItalic = @"DHStyleItalic"; +static NSString *DHStyleUnderline = @"DHStyleUnderline"; +static NSString *DHStyleStrikethrough = @"DHStyleStrikethrough"; +static NSString *DHStyleMaxWidth = @"DHStyleMaxWidth"; +static NSString *DHStyleMaxHeight = @"DHStyleMaxHeight"; + +static NSString *DHFormattedStringTagIdentifier = @"identifier"; +static NSString *DHFormattedStringTagValue = @"value"; +static NSString *DHFormattedStringTagKind = @"kind"; + +typedef enum DHFormattedStringTagKinds : NSInteger { + DHFormattedStringTagKindOpenTag, + DHFormattedStringTagKindCloseTag +} DHFormattedStringTagKinds; + +- (id)initWithIdentifier:(id)identifier { + if (!(self = [super initWithIdentifier:identifier])) { + return nil; + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeIdle; +} + +- (id)_style:(id)style in:(NSDictionary *)dictionary { + id result = [dictionary objectForKey:style]; + return result ? result : @(NO); +} + +- (NSDictionary *)_attributesDictionaryFromStyles:(NSDictionary *)styles { + NSUInteger fontSize = [[self _style:DHStyleFontSize in:styles] integerValue]; + NSFont *font = [NSFont fontWithName: [self _style:DHStyleFontName in:styles] + size:fontSize]; + + if (!font) { + font = [NSFont fontWithName:@"Helvetica" size:fontSize]; + } + + if ([[self _style:DHStyleBold in:styles] boolValue] == YES) { + NSFontManager *fontManager = [NSFontManager sharedFontManager]; + font = [fontManager convertFont:font toHaveTrait:NSBoldFontMask]; + } + + return @{ + NSFontAttributeName: font, + NSForegroundColorAttributeName: [self _style:DHStyleColor in:styles], + NSUnderlineStyleAttributeName: [self _style:DHStyleUnderline in:styles], + NSStrikethroughStyleAttributeName: [self _style:DHStyleStrikethrough in:styles], + }; +} + +- (NSImage *)_imageFromAttributedString:(NSAttributedString *)attributedString withMaxSize:(NSSize)maxSize { + + NSSize size = [attributedString size]; + if (!(size.width && size.height)) { + return nil; + } + + BOOL constrainWidth = ([@(maxSize.width) integerValue]) ? YES : NO; + BOOL constrainHeight = ([@(maxSize.height) integerValue]) ? YES : NO; + + CGFloat imageWidth = constrainWidth ? maxSize.width : size.width; + + NSStringDrawingOptions stringDrawingOptions = (NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading | NSStringDrawingTruncatesLastVisibleLine); + + NSRect boundingRect = [attributedString boundingRectWithSize:CGSizeMake(imageWidth, CGFLOAT_MAX) options:stringDrawingOptions]; + if (constrainWidth) { + boundingRect.size.width = maxSize.width; + } + if (constrainHeight) { + boundingRect.size.height = MIN(boundingRect.size.height, maxSize.height); + } + + NSImage *image = [[NSImage alloc] initWithSize:boundingRect.size]; + [image lockFocus]; + { + [attributedString drawWithRect:boundingRect options:stringDrawingOptions]; + } + [image unlockFocus]; + + return image; +} + +- (NSDictionary *)_informationForTag:(NSString *)tag { + BOOL isCloseTag = [tag hasPrefix:@"/"]; + if (isCloseTag && tag.length > 1) { + tag = [tag substringFromIndex:1]; + } + + NSArray *components = [tag componentsSeparatedByUnescapedDelimeter:@"="]; + NSString *tagIdentifier = components.count > 0 ? [components objectAtIndex:0] : @""; + NSString *tagValue = components.count > 1 ? [components objectAtIndex:1] : @""; + + // Trim whitespace + tagIdentifier = [tagIdentifier stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + tagValue = [tagValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]]; + + // Remove proceeding and trailing quotes + if ([tagValue hasPrefix:@"\""] && tag.length > 1) { + tagValue = [tagValue substringFromIndex:1]; + } + if ([tagValue hasSuffix:@"\""] && tag.length > 1) { + tagValue = [tagValue substringToIndex:tagValue.length - 1]; + } + + return @{DHFormattedStringTagIdentifier: tagIdentifier, + DHFormattedStringTagValue: tagValue, + DHFormattedStringTagKind : isCloseTag ? @(DHFormattedStringTagKindCloseTag) : @(DHFormattedStringTagKindOpenTag)}; +} + + +- (void)_applyTag:(NSString *)tag toStyles:(NSMutableDictionary **)styles { + if (!styles) { + return; + } + + NSDictionary *tagInformation = [self _informationForTag:tag]; + + NSString *tagIdentifier = tagInformation[DHFormattedStringTagIdentifier]; + NSString *tagValue = tagInformation[DHFormattedStringTagValue]; + + DHFormattedStringTagKinds tagKind = [tagInformation[DHFormattedStringTagKind] integerValue]; + BOOL isCloseTag = (tagKind == DHFormattedStringTagKindCloseTag) ? YES : NO; + + NSDictionary *styleTermonologyDictionary = @{ + @"b": DHStyleBold, + @"i": DHStyleItalic, + @"u": DHStyleUnderline, + @"s": DHStyleStrikethrough, + @"color": DHStyleColor, + @"font": DHStyleFontName, + @"size": DHStyleFontSize, + @"width": DHStyleMaxWidth, + @"height": DHStyleMaxHeight + }; + + NSString *styleKey = styleTermonologyDictionary[tagIdentifier]; + id styleValue = tagValue; + + if ([styleKey isEqualToString:DHStyleColor]) { + styleValue = [NSColor colorWithHexString:tagValue]; + } else if ([styleKey isEqualToString:DHStyleBold] || + [styleKey isEqualToString:DHStyleItalic] || + [styleKey isEqualToString:DHStyleUnderline] || + [styleKey isEqualToString:DHStyleStrikethrough]) { + styleValue = isCloseTag ? @(NO) : @(YES); + } + + if (styleKey) { + [*styles setObject:styleValue forKey:styleKey]; + } +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!inputString.wasUpdated) { + return YES; + } + + NSMutableDictionary *currentStyles = + [@{ + DHStyleColor: [NSColor whiteColor], + DHStyleFontName: @"Helvetica", + DHStyleFontSize: @20, + DHStyleBold: @(NO), + DHStyleUnderline: @(NO), + DHStyleStrikethrough: @(NO), + DHStyleMaxWidth: @0, + DHStyleMaxHeight: @0 + } mutableCopy]; + + NSMutableDictionary *rangedStylesDictionary = [[NSMutableDictionary alloc] init]; + NSMutableDictionary *openTags = [NSMutableDictionary dictionary]; + + NSString *string = inputString.stringValue; + NSScanner *scanner = [[NSScanner alloc] initWithString:string]; + [scanner setCharactersToBeSkipped:nil]; + + NSMutableString *unformattedBuffer = [[NSMutableString alloc] init]; + while (YES) { + NSString *content = nil; + [scanner scanUpToString:@"<" intoString:&content]; + if (content) { + [unformattedBuffer appendString:content]; + } + + if ([scanner isAtEnd]) { + break; + } + + if ([content hasSuffix:@"\\"]) { + [scanner scanString:@"<" intoString:NULL]; + [unformattedBuffer deleteCharactersInRange:NSMakeRange(unformattedBuffer.length - 1, 1)]; + [unformattedBuffer appendString:@"<"]; + continue; + } + + NSString *tag = nil; + [scanner scanString:@"<" intoString:NULL]; + [scanner scanUpToString:@">" intoString:&tag]; + + NSDictionary *tagInformation = [self _informationForTag:tag]; + NSString *tagIdentifier = tagInformation[DHFormattedStringTagIdentifier]; + BOOL isCloseTag = [tag hasPrefix:@"/"]; + + if (isCloseTag) { + NSUInteger startRange = 0; + id startRangeOfOpenTag = openTags[tagIdentifier]; + if (startRangeOfOpenTag) { + startRange = [startRangeOfOpenTag integerValue]; + [openTags removeObjectForKey:tagIdentifier]; + } + + [rangedStylesDictionary setObject:[currentStyles copy] forKey:NSStringFromRange(NSMakeRange(startRange, unformattedBuffer.length - startRange))]; + } else { + if (unformattedBuffer.length && !openTags[tagIdentifier]) { + openTags[tagIdentifier] = @(unformattedBuffer.length); + } + } + + [self _applyTag:tag toStyles:¤tStyles]; + [scanner scanString:@">" intoString:NULL]; + }; + + string = unformattedBuffer; + + NSDictionary *attributesDictionary = [self _attributesDictionaryFromStyles:currentStyles]; + NSMutableAttributedString *attributedString = [[[NSAttributedString alloc] initWithString:string attributes:attributesDictionary] mutableCopy]; + + for (NSString *rangeKey in rangedStylesDictionary) { + NSRange range = NSRangeFromString(rangeKey); + NSDictionary *rangedStyles = [rangedStylesDictionary objectForKey:rangeKey]; + NSDictionary *rangedAttributes = [self _attributesDictionaryFromStyles:rangedStyles]; + [attributedString addAttributes:rangedAttributes range:range]; + } + + NSSize maxSize = NSMakeSize([[self _style:DHStyleMaxWidth in:currentStyles] floatValue], + [[self _style:DHStyleMaxHeight in:currentStyles] floatValue]); + + NSImage *image = [self _imageFromAttributedString:attributedString withMaxSize:maxSize]; + + outputImage.imageValue = [[QCImage alloc] initWithNSImage:image options:0]; + outputUnformattedString.stringValue = string; + + return YES; +} + +@end diff --git a/Origami Plugin/DHImageWithFormattedStrings.xml b/Origami Plugin/DHImageWithFormattedStrings.xml new file mode 100644 index 0000000..16beb29 --- /dev/null +++ b/Origami Plugin/DHImageWithFormattedStrings.xml @@ -0,0 +1,56 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Creates an image of a string generated by the String Formatter patch. This lets you put together runs of styled text. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Image With Formatted String + + inputAttributes + + inputString + + description + + name + String + + + outputAttributes + + outputImage + + description + + name + Image + + outputUnformattedString + + description + + name + Unformatted String + + + + diff --git a/Origami Plugin/DHJSONImporterPatch.h b/Origami Plugin/DHJSONImporterPatch.h new file mode 100644 index 0000000..8e1612f --- /dev/null +++ b/Origami Plugin/DHJSONImporterPatch.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHJSONImporterPatch : QCPatch +{ + QCStringPort *inputJSONLocation; + QCBooleanPort *inputUpdateSignal; + QCStructurePort *outputParsedJSON; + QCBooleanPort *outputDoneSignal; +} + +@end diff --git a/Origami Plugin/DHJSONImporterPatch.m b/Origami Plugin/DHJSONImporterPatch.m new file mode 100644 index 0000000..53f4116 --- /dev/null +++ b/Origami Plugin/DHJSONImporterPatch.m @@ -0,0 +1,86 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHJSONImporterPatch.h" +#import "SBJson.h" +#import "NSURL+FBAdditions.h" +#import "QCPatch+FBAdditions.h" + +@implementation DHJSONImporterPatch + +- (id)initWithIdentifier:(id)identifier { + if (self = [super initWithIdentifier:identifier]) { + inputUpdateSignal.booleanValue = YES; + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeIdle; +} + +- (void)_execute:(id)sender { + outputDoneSignal.booleanValue = NO; + + if (!(inputJSONLocation.wasUpdated || (inputUpdateSignal.wasUpdated && inputUpdateSignal.booleanValue == YES))) { + return; + } + + SBJsonParser *parser = [[SBJsonParser alloc] init]; + + NSError *error; + NSURL *url = [NSURL URLWithQuartzComposerLocation:inputJSONLocation.stringValue relativeToDocument:self.fb_document]; + NSString *jsonText = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:&error]; + + NSUInteger arrayStartLocation = [jsonText rangeOfString:@"["].location; + NSUInteger dictionaryStartLocation = [jsonText rangeOfString:@"{"].location; + NSUInteger startLocation = NSNotFound; + + if (arrayStartLocation == NSNotFound) { + startLocation = dictionaryStartLocation; + } else if (dictionaryStartLocation == NSNotFound) { + startLocation = arrayStartLocation; + } else { + startLocation = MIN(arrayStartLocation, dictionaryStartLocation); + } + + if (startLocation != NSNotFound) { + jsonText = [jsonText substringFromIndex:startLocation]; + } + + id parsedResult = [parser objectWithString:jsonText]; + if (parsedResult) { + if ([parsedResult isKindOfClass:[NSArray class]]) { + outputParsedJSON.structureValue = [[QCStructure alloc] initWithArray:parsedResult]; + } else if ([parsedResult isKindOfClass:[NSDictionary class]]) { + outputParsedJSON.structureValue = [[QCStructure alloc] initWithDictionary:parsedResult]; + } + } else { + outputParsedJSON.structureValue = nil; + } + + outputDoneSignal.booleanValue = YES; + return; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + [NSThread detachNewThreadSelector:@selector(_execute:) toTarget:self withObject:self]; + return YES; +} + +@end diff --git a/Origami Plugin/DHJSONImporterPatch.xml b/Origami Plugin/DHJSONImporterPatch.xml new file mode 100644 index 0000000..654eb14 --- /dev/null +++ b/Origami Plugin/DHJSONImporterPatch.xml @@ -0,0 +1,63 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Downloads and parses JSON from a specified URL or file path. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + JSON Importer + + inputAttributes + + inputJSONLocation + + description + + name + Location + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputParsedJSON + + description + + name + Structure + + outputDoneSignal + + description + + name + Done Signal + + + + diff --git a/Origami Plugin/DHRESTRequest.h b/Origami Plugin/DHRESTRequest.h new file mode 100644 index 0000000..611a65d --- /dev/null +++ b/Origami Plugin/DHRESTRequest.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +static NSString *DHRESTRequestTypeCreate = @"POST"; +static NSString *DHRESTRequestTypeRead = @"GET"; +static NSString *DHRESTRequestTypeUpdate = @"PUT"; +static NSString *DHRESTRequestTypeDestroy = @"DELETE"; + +@interface DHRESTRequest : NSObject + ++ (id)createObject:(id)object atURL:(NSURL *)URL; ++ (id)readObjectAtURL:(NSURL *)URL; ++ (id)updateObjectWith:(id)objectChanges atURL:(NSURL *)URL; ++ (id)destroyObjectAtURL:(NSURL *)URL; + ++ (id)resultOfRequestType:(NSString *)requestType withObject:(id)object toURL:(NSURL *)URL; ++ (id)resultOfRequestType:(NSString *)requestType withObject:(id)object toURL:(NSURL *)URL withParameters:(NSDictionary *)parameters headers:(NSDictionary *)headers; + +@end diff --git a/Origami Plugin/DHRESTRequest.m b/Origami Plugin/DHRESTRequest.m new file mode 100644 index 0000000..efcfa05 --- /dev/null +++ b/Origami Plugin/DHRESTRequest.m @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHRESTRequest.h" +#import "Sbjson.h" + +static BOOL _DHRestRequestDebug = NO; + +static NSString * (^URLEncodeString)(NSString *) = ^ NSString * (NSString *string) { + return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, (CFStringRef)string, NULL, CFSTR("!*'();:@&=+$,/?%#[]"), kCFStringEncodingUTF8)); +}; + +@implementation DHRESTRequest + ++ (id)createObject:(id)object atURL:(NSURL *)URL { + return [self resultOfRequestType:DHRESTRequestTypeCreate withObject:object toURL:URL]; +} + ++ (id)readObjectAtURL:(NSURL *)URL { + return [self resultOfRequestType:DHRESTRequestTypeRead withObject:nil toURL:URL]; +} + ++ (id)updateObjectWith:(id)objectChanges atURL:(NSURL *)URL { + return [self resultOfRequestType:DHRESTRequestTypeUpdate withObject:objectChanges toURL:URL]; +} + ++ (id)destroyObjectAtURL:(NSURL *)URL { + return [self resultOfRequestType:DHRESTRequestTypeDestroy withObject:nil toURL:URL]; +} + ++ (id)resultOfRequestType:(NSString *)requestType withObject:(id)object toURL:(NSURL *)URL { + return [self resultOfRequestType:requestType withObject:object toURL:URL withParameters:nil headers:nil]; +} + ++ (id)resultOfRequestType:(NSString *)requestType withObject:(id)object toURL:(NSURL *)URL withParameters:(NSDictionary *)parameters headers:(NSDictionary *)headers { + SBJsonWriter *jsonWriter; + + NSData *jsonData = nil; + if (object && ([requestType isEqualToString:DHRESTRequestTypeCreate] || [requestType isEqualToString:DHRESTRequestTypeUpdate])) { + jsonWriter = [[SBJsonWriter alloc] init]; + NSString *json = ([object isKindOfClass:[NSString class]]) ? object : [jsonWriter stringWithObject:object]; + jsonData = [json dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:NO]; + } + + // Add parameters + if (parameters && [parameters count]) { + NSMutableArray *queryParameters = [NSMutableArray arrayWithCapacity:[parameters count]]; + [parameters enumerateKeysAndObjectsUsingBlock:^ (id key, id obj, BOOL *stop) { + NSMutableString *parameter = [NSMutableString string]; + [parameter appendString:URLEncodeString(key)]; + [parameter appendString:@"="]; + if (![obj isKindOfClass:[NSNull class]]) { + [parameter appendString:URLEncodeString(obj)]; + } + [queryParameters addObject:parameter]; + }]; + NSString *parametersString = [@"?" stringByAppendingString:[queryParameters componentsJoinedByString:@"&"]]; + NSString *URLWithParametersString = [[URL absoluteString] stringByAppendingString:parametersString]; + URL = [NSURL URLWithString:URLWithParametersString]; + } + + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init]; + [request setURL:URL]; + [request setHTTPMethod:requestType]; + [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; + if (headers) { + for (id key in headers) { + id value = headers[key]; + NSString *keyString = ([key isKindOfClass:[NSString class]]) ? key : [key description]; + [request setValue:value forHTTPHeaderField:keyString]; + } + } + if (jsonData) { + [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + [request setHTTPBody:jsonData]; + } + + if (_DHRestRequestDebug) { + NSLog(@"Request: %@", request); + } + + NSHTTPURLResponse *response; + NSError *error; + NSData *resultData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; + if (response.statusCode != 200 && response.statusCode != 201) { + return @(NO); + } + if (!resultData) { + return @(YES); + } + + NSString *resultString = [[NSString alloc] initWithData:resultData encoding:NSASCIIStringEncoding]; + + SBJsonParser *jsonParser = [[SBJsonParser alloc] init]; + id result = [jsonParser objectWithData:resultData]; + return result ? result : resultString; +} + +@end diff --git a/Origami Plugin/DHRESTRequestPatch.h b/Origami Plugin/DHRESTRequestPatch.h new file mode 100644 index 0000000..f9f5aa7 --- /dev/null +++ b/Origami Plugin/DHRESTRequestPatch.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface DHRESTRequestPatch : QCPatch +{ + QCBooleanPort *inputEnable; + QCIndexPort *inputRequestType; + QCStringPort *inputURL; + QCStructurePort *inputParameters; + QCStructurePort *inputHeaders; + QCVirtualPort *inputObject; + QCBooleanPort *inputUpdateSignal; + QCVirtualPort *outputResult; + QCBooleanPort *outputDoneSignal; + + BOOL _debug; +} + +@end diff --git a/Origami Plugin/DHRESTRequestPatch.m b/Origami Plugin/DHRESTRequestPatch.m new file mode 100644 index 0000000..39ab401 --- /dev/null +++ b/Origami Plugin/DHRESTRequestPatch.m @@ -0,0 +1,99 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHRESTRequestPatch.h" +#import "DHRESTRequest.h" +#import "SBJson.h" + +typedef enum DHRESTRequestPatchRequestType : NSInteger { + DHRESTRequestPatchRequestTypeCreate, + DHRESTRequestPatchRequestTypeRead, + DHRESTRequestPatchRequestTypeUpdate, + DHRESTRequestPatchRequestTypeDestroy, + DHRESTRequestPatchRequestTypeCount +} DHRESTRequestPatchRequestType; + +@implementation DHRESTRequestPatch + +- (id)initWithIdentifier:(id)identifier { + if (self = [super initWithIdentifier:identifier]) { + inputRequestType.indexValue = DHRESTRequestPatchRequestTypeRead; + inputRequestType.maxIndexValue = DHRESTRequestPatchRequestTypeCount - 1; + + _debug = NO; + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProvider; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (void)_execute:(id)sender { + outputDoneSignal.booleanValue = NO; + if (!(inputEnable.wasUpdated || inputRequestType.wasUpdated || inputURL.wasUpdated || inputObject.wasUpdated || inputHeaders.wasUpdated || (inputUpdateSignal.wasUpdated && inputUpdateSignal.booleanValue == YES))) { + return; + } + + id requestObject = inputObject.rawValue; + if ([requestObject isKindOfClass:[QCStructure class]]) { + requestObject = [requestObject dictionaryRepresentation]; + } + + NSURL *requestURL = [NSURL URLWithString:inputURL.stringValue]; + NSDictionary *parameters = [inputParameters.structureValue dictionaryRepresentation]; + NSDictionary *headers = [inputHeaders.structureValue dictionaryRepresentation]; + + NSString *requestType = nil; + switch (inputRequestType.indexValue) { + case DHRESTRequestPatchRequestTypeCreate: + requestType = DHRESTRequestTypeCreate; + break; + case DHRESTRequestPatchRequestTypeRead: + requestType = DHRESTRequestTypeRead; + break; + case DHRESTRequestPatchRequestTypeUpdate: + requestType = DHRESTRequestTypeUpdate; + break; + case DHRESTRequestPatchRequestTypeDestroy: + requestType = DHRESTRequestTypeDestroy; + break; + } + + if (_debug) NSLog(@"%@ with %@ to %@ with %@", requestType, requestObject, requestURL, headers); + + id result = [DHRESTRequest resultOfRequestType:requestType withObject:requestObject toURL:requestURL withParameters:parameters headers:headers]; + + if (_debug) NSLog(@"Result: %@", result); + + outputResult.rawValue = result; + outputDoneSignal.booleanValue = YES; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (inputEnable.booleanValue == NO) { + outputResult.rawValue = nil; + outputDoneSignal.booleanValue = NO; + return YES; + } + + [NSThread detachNewThreadSelector:@selector(_execute:) toTarget:self withObject:self]; + return YES; +} + +@end diff --git a/Origami Plugin/DHRESTRequestPatch.xml b/Origami Plugin/DHRESTRequestPatch.xml new file mode 100644 index 0000000..d023eb5 --- /dev/null +++ b/Origami Plugin/DHRESTRequestPatch.xml @@ -0,0 +1,105 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Performs a REST request and returns the result. Supports "Create" (POST), "Read" (GET), "Update" (PUT) and "Destroy" (DELETE) request types. Allows attaching an object to a "Create" or "Update" request and specification of additional headers for any request. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + REST Request + + inputAttributes + + inputEnable + + description + + name + Enable + + inputRequestType + + description + + name + Type + menu + + Create (POST) + Read (GET) + Update (PUT) + Destroy (DELETE) + + + inputURL + + description + + name + URL + + inputParameters + + description + + name + Parameters + + inputHeaders + + description + + name + Headers + + inputObject + + description + + name + Object + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputResult + + description + + name + Result + + outputDoneSignal + + description + + name + Done Signal + + + + diff --git a/Origami Plugin/DHSoundPlayerProPatch.h b/Origami Plugin/DHSoundPlayerProPatch.h new file mode 100644 index 0000000..ee070ed --- /dev/null +++ b/Origami Plugin/DHSoundPlayerProPatch.h @@ -0,0 +1,25 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import +#import + +@interface DHSoundPlayerProPatch : QCPatch +{ + QCStringPort *inputSoundLocation; + QCBooleanPort *inputPlaySound; + QCBooleanPort *inputResetSignal; + QCBooleanPort *inputLooping; + QCNumberPort *inputVolume; + + QTMovieView *_movieView; +} + +@end diff --git a/Origami Plugin/DHSoundPlayerProPatch.m b/Origami Plugin/DHSoundPlayerProPatch.m new file mode 100644 index 0000000..51792d3 --- /dev/null +++ b/Origami Plugin/DHSoundPlayerProPatch.m @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHSoundPlayerProPatch.h" +#import "QCPatch+FBAdditions.h" +#import "NSURL+FBAdditions.h" + +@implementation DHSoundPlayerProPatch + +- (id)initWithIdentifier:(id)identifier { + if (self = [super initWithIdentifier:identifier]) { + inputVolume.minDoubleValue = 0; + inputVolume.maxDoubleValue = 1; + inputVolume.doubleValue = 1; + + _movieView = [[QTMovieView alloc] init]; + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeConsumer; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (void)disable:(QCOpenGLContext*)context { + [_movieView setMovie:nil]; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputSoundLocation.wasUpdated || inputPlaySound.wasUpdated || inputResetSignal.wasUpdated || inputLooping.wasUpdated || inputVolume.wasUpdated)) { + return YES; + } + + if (inputSoundLocation.wasUpdated || ![_movieView movie]) { + NSURL *soundLocationURL = [NSURL URLWithQuartzComposerLocation:inputSoundLocation.stringValue relativeToDocument:self.fb_document]; + + NSError *error; + [_movieView setMovie:[QTMovie movieWithURL:soundLocationURL error:&error]]; + } + + QTMovie *movie = [_movieView movie]; + [movie setAttribute:@(inputLooping.booleanValue) forKey:QTMovieLoopsAttribute]; + [movie setVolume:inputVolume.doubleValue]; + + if (inputResetSignal.booleanValue) { + [movie gotoBeginning]; + } + + if (inputPlaySound.booleanValue) { + [_movieView play:self]; + } else { + [_movieView pause:self]; + } + + return YES; +} + +@end diff --git a/Origami Plugin/DHSoundPlayerProPatch.xml b/Origami Plugin/DHSoundPlayerProPatch.xml new file mode 100644 index 0000000..cf09a53 --- /dev/null +++ b/Origami Plugin/DHSoundPlayerProPatch.xml @@ -0,0 +1,67 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Plays any QuickTime file as a sound. Supports pausing, reseting, looping, and adjusting the volume. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Sound Player Pro + + inputAttributes + + inputSoundLocation + + description + + name + Sound Location + + inputPlaySound + + description + + name + Play Sound + + inputResetSignal + + description + + name + Reset Signal + + inputLooping + + description + + name + Looping + + inputVolume + + description + + name + Volume + + + + diff --git a/Origami Plugin/DHStringAtURLPatch.h b/Origami Plugin/DHStringAtURLPatch.h new file mode 100644 index 0000000..fc7f5ae --- /dev/null +++ b/Origami Plugin/DHStringAtURLPatch.h @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface DHStringAtURLPatch : QCPatch +{ + QCBooleanPort *inputEnable; + QCStringPort *inputURL; + QCBooleanPort *inputUpdateSignal; + QCStringPort *outputString; + QCBooleanPort *outputDoneSignal; +} + +@end diff --git a/Origami Plugin/DHStringAtURLPatch.m b/Origami Plugin/DHStringAtURLPatch.m new file mode 100644 index 0000000..860e01c --- /dev/null +++ b/Origami Plugin/DHStringAtURLPatch.m @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHStringAtURLPatch.h" +#import "QCPatch+FBAdditions.h" +#import "NSURL+FBAdditions.h" + +@implementation DHStringAtURLPatch + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputEnable.wasUpdated || inputURL.wasUpdated || inputUpdateSignal.wasUpdated)) { + return YES; + } + + outputString.stringValue = nil; + outputDoneSignal.booleanValue = NO; + + if (!inputEnable.booleanValue) { + return YES; + } + + dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^(void) { + NSError *error; + outputString.stringValue = [NSString stringWithContentsOfURL:[NSURL URLWithQuartzComposerLocation:inputURL.stringValue relativeToDocument:self.fb_document] encoding:NSUTF8StringEncoding error:&error]; + + dispatch_async(dispatch_get_main_queue(), ^(void) { + outputDoneSignal.booleanValue = YES; + }); + }); + + return YES; +} + +@end diff --git a/Origami Plugin/DHStringAtURLPatch.xml b/Origami Plugin/DHStringAtURLPatch.xml new file mode 100644 index 0000000..325a0bd --- /dev/null +++ b/Origami Plugin/DHStringAtURLPatch.xml @@ -0,0 +1,70 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Asynchronously downloads the contents of a URL. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + String at URL + + inputAttributes + + inputEnable + + description + + name + Enable + + inputURL + + description + + name + URL + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputString + + description + + name + String + + outputDoneSignal + + description + + name + Done Signal + + + + diff --git a/Origami Plugin/DHStringFormatterPatch.h b/Origami Plugin/DHStringFormatterPatch.h new file mode 100644 index 0000000..94562ae --- /dev/null +++ b/Origami Plugin/DHStringFormatterPatch.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHStringFormatterPatch : QCPatch +{ + QCStringPort *inputString; + QCColorPort *inputColor; + QCStringPort *inputFontName; + QCNumberPort *inputFontSize; + QCBooleanPort *inputBold; + QCBooleanPort *inputUnderline; + QCBooleanPort *inputStrikethrough; + QCNumberPort *inputMaxWidth; + QCNumberPort *inputMaxHeight; + QCStringPort *outputFormattedString; +} + +@end diff --git a/Origami Plugin/DHStringFormatterPatch.m b/Origami Plugin/DHStringFormatterPatch.m new file mode 100644 index 0000000..0437392 --- /dev/null +++ b/Origami Plugin/DHStringFormatterPatch.m @@ -0,0 +1,103 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHStringFormatterPatch.h" +#import "NSColor+HTMLExtensions.h" + +@implementation DHStringFormatterPatch + +- (id)initWithIdentifier:(id)identifier { + if (self = [super initWithIdentifier:identifier]) { + + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeIdle; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputString.wasUpdated || + inputColor.wasUpdated || + inputFontName.wasUpdated || + inputFontSize.wasUpdated || + inputBold.wasUpdated || + inputUnderline.wasUpdated || + inputStrikethrough.wasUpdated || + inputMaxWidth.wasUpdated || + inputMaxHeight.wasUpdated)) { + return YES; + } + + NSString *output = inputString.stringValue; + + if (!output.length) { + outputFormattedString.stringValue = @""; + return YES; + } + + // Escape existing "tags" + output = [output stringByReplacingOccurrencesOfString:@"<" withString:@"\\<"]; + + if (inputStrikethrough.booleanValue) { + output = [NSString stringWithFormat:@"%@", output]; + } + + if (inputUnderline.booleanValue) { + output = [NSString stringWithFormat:@"%@", output]; + } + + if (inputBold.booleanValue) { + output = [NSString stringWithFormat:@"%@", output]; + } + + if (inputFontSize.doubleValue) { + output = [NSString stringWithFormat:@"%@", (int)inputFontSize.doubleValue, output]; + } + + if (inputFontName.stringValue.length) { + output = [NSString stringWithFormat:@"%@", inputFontName.stringValue, output]; + } + + NSColor *defaultColor = [[NSColor whiteColor] colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; + if (inputColor.value && !([inputColor.value isEqualTo:defaultColor])) { + CGFloat red, green, blue, alpha; + [inputColor getRed:&red green:&green blue:&blue alpha:&alpha]; + NSColor *color = [NSColor colorWithDeviceRed:red green:green blue:blue alpha:alpha]; + NSString *textualColorRepresentation = [color hexStringRepresentation]; + + if (textualColorRepresentation) { + output = [NSString stringWithFormat:@"%@", textualColorRepresentation, output]; + } + } + + if (inputMaxHeight.doubleValue) { + output = [NSString stringWithFormat:@"%@", (int)inputMaxHeight.doubleValue, output]; + } + + if (inputMaxWidth.doubleValue) { + output = [NSString stringWithFormat:@"%@", (int)inputMaxWidth.doubleValue, output]; + } + + outputFormattedString.stringValue = output; + + return YES; +} + +@end diff --git a/Origami Plugin/DHStringFormatterPatch.xml b/Origami Plugin/DHStringFormatterPatch.xml new file mode 100644 index 0000000..5ce55e4 --- /dev/null +++ b/Origami Plugin/DHStringFormatterPatch.xml @@ -0,0 +1,105 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Creates a formatted string for use by the Image With Formatted String patch. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + String Formatter + + inputAttributes + + inputString + + description + + name + String + + inputColor + + description + + name + Color + + inputFontName + + description + + name + Font Name + + inputFontSize + + description + + name + Font Size + + inputBold + + description + + name + Bold + + inputUnderline + + description + + name + Underline + + inputStrikethrough + + description + + name + Strikethrough + + inputMaxWidth + + description + + name + Width + + inputMaxHeight + + description + + name + Max Height + + + outputAttributes + + outputFormattedString + + description + + name + Formatted String + + + + diff --git a/Origami Plugin/DHStructureAllKeysPatch.h b/Origami Plugin/DHStructureAllKeysPatch.h new file mode 100644 index 0000000..c6713fd --- /dev/null +++ b/Origami Plugin/DHStructureAllKeysPatch.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHStructureAllKeysPatch : QCPatch +{ + QCStructurePort *inputStructure; + QCBooleanPort *inputSort; + QCStructurePort *outputStructure; +} + +@end diff --git a/Origami Plugin/DHStructureAllKeysPatch.m b/Origami Plugin/DHStructureAllKeysPatch.m new file mode 100644 index 0000000..354151d --- /dev/null +++ b/Origami Plugin/DHStructureAllKeysPatch.m @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHStructureAllKeysPatch.h" +#import "NSArray+FBAdditions.h" + +@implementation DHStructureAllKeysPatch + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputStructure.wasUpdated || inputSort.wasUpdated)) { + return YES; + } + + NSArray *allKeys = [[inputStructure.structureValue dictionaryRepresentation] allKeys]; + + if (inputSort.booleanValue) { + allKeys = [allKeys sortedArrayUsingAlphabeticalSort]; + } + + outputStructure.structureValue = [[QCStructure alloc] initWithArray:allKeys]; + + return YES; +} + +@end diff --git a/Origami Plugin/DHStructureAllKeysPatch.xml b/Origami Plugin/DHStructureAllKeysPatch.xml new file mode 100644 index 0000000..3767318 --- /dev/null +++ b/Origami Plugin/DHStructureAllKeysPatch.xml @@ -0,0 +1,56 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Returns the keys from a named structure. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure All Keys + + inputAttributes + + inputStructure + + description + + name + Structure + + inputSort + + description + + name + Sort + + + outputAttributes + + outputStructure + + description + + name + Keys + + + + diff --git a/Origami Plugin/DHStructureAllValuesPatch.h b/Origami Plugin/DHStructureAllValuesPatch.h new file mode 100644 index 0000000..b6d26b2 --- /dev/null +++ b/Origami Plugin/DHStructureAllValuesPatch.h @@ -0,0 +1,27 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHStructureAllValuesPatch : QCPatch +{ + QCStructurePort *inputStructure; + QCIndexPort *inputSort; + QCStructurePort *outputStructure; +} + +typedef enum DHStructureSortMode : NSUInteger { + DHStructureSortModeNone, + DHStructureSortModeUsingKeys, + DHStructureSortModeUsingValues, + DHStructureSortModeCount +} DHStructureSortMode; + +@end diff --git a/Origami Plugin/DHStructureAllValuesPatch.m b/Origami Plugin/DHStructureAllValuesPatch.m new file mode 100644 index 0000000..620e22e --- /dev/null +++ b/Origami Plugin/DHStructureAllValuesPatch.m @@ -0,0 +1,62 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHStructureAllValuesPatch.h" +#import "NSArray+FBAdditions.h" + +@implementation DHStructureAllValuesPatch + +- (id)initWithIdentifier:(id)identifier { + if (self = [super initWithIdentifier:identifier]) { + inputSort.maxIndexValue = DHStructureSortModeCount - 1; + } + + return self; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputStructure.wasUpdated || inputSort.wasUpdated)) { + return YES; + } + + NSDictionary *dictionary = [inputStructure.structureValue dictionaryRepresentation]; + NSArray *allValues = [dictionary allValues]; + + if (inputSort.indexValue == DHStructureSortModeUsingKeys) { + NSMutableArray *sortedValues = [[NSMutableArray alloc] initWithCapacity:[allValues count]]; + NSArray *sortedKeys = [[dictionary allKeys] sortedArrayUsingAlphabeticalSort]; + for (id key in sortedKeys) { + id value = dictionary[key]; + if (value) { + [sortedValues addObject:value]; + } + } + allValues = sortedValues; + } else if (inputSort.indexValue == DHStructureSortModeUsingValues) { + allValues = [allValues sortedArrayUsingAlphabeticalSort]; + } + + outputStructure.structureValue = [[QCStructure alloc] initWithArray:allValues]; + + return YES; +} + +@end diff --git a/Origami Plugin/DHStructureAllValuesPatch.xml b/Origami Plugin/DHStructureAllValuesPatch.xml new file mode 100644 index 0000000..d52798c --- /dev/null +++ b/Origami Plugin/DHStructureAllValuesPatch.xml @@ -0,0 +1,62 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Returns the values from a structure. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure All Values + + inputAttributes + + inputStructure + + description + + name + Structure + + inputSort + + description + + name + Sort + menu + + None + Using Keys + Using Values + + + + outputAttributes + + outputStructure + + description + + name + Values + + + + diff --git a/Origami Plugin/DHStructureMultiplePathMembersPatch.h b/Origami Plugin/DHStructureMultiplePathMembersPatch.h new file mode 100644 index 0000000..3ae2e54 --- /dev/null +++ b/Origami Plugin/DHStructureMultiplePathMembersPatch.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHStructureMultiplePathMembersPatch : QCPatch +{ + QCStructurePort *inputStructure; + QCStringPort *inputPaths; + QCStructurePort *outputStructure; +} + +@end diff --git a/Origami Plugin/DHStructureMultiplePathMembersPatch.m b/Origami Plugin/DHStructureMultiplePathMembersPatch.m new file mode 100644 index 0000000..94d79b4 --- /dev/null +++ b/Origami Plugin/DHStructureMultiplePathMembersPatch.m @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHStructureMultiplePathMembersPatch.h" +#import "DHStructurePathMemberPatch.h" +#import "NSString+FBAdditions.h" + +@implementation DHStructureMultiplePathMembersPatch : QCPatch + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputStructure.wasUpdated || inputPaths.wasUpdated)) { + return YES; + } + + NSDictionary *dictionary = [inputStructure.structureValue dictionaryRepresentation]; + NSString *searchPaths = inputPaths.stringValue; + NSMutableDictionary *results = [[NSMutableDictionary alloc] init]; + + NSArray *paths = [searchPaths componentsSeparatedByUnescapedDelimeter:@","]; + for (NSString *path in paths) { + NSArray *keyAndValue = [path componentsSeparatedByUnescapedDelimeter:@"="]; + if (![keyAndValue count]) { + continue; + } + + NSString *key = [keyAndValue[0] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + NSString *value = [[keyAndValue lastObject] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + + NSArray *keyComponents = [key componentsSeparatedByUnescapedDelimeter:@"/"]; + + id result = [DHStructurePathMemberPatch memberForPath:value inDictionary:dictionary untraversedPaths:NULL]; + if (result) { + if (keyComponents.count == 1) { + results[key] = result; + } else { + NSMutableDictionary *parentBucket = results; + NSMutableDictionary *bucket; + NSUInteger componentIndex; + + for (componentIndex = 0; componentIndex < (keyComponents.count - 1); componentIndex++) { + bucket = parentBucket[keyComponents[componentIndex]]; + if (bucket) { + bucket = [bucket mutableCopy]; + } else { + bucket = [[NSMutableDictionary alloc] init]; + } + parentBucket[keyComponents[componentIndex]] = bucket; + parentBucket = bucket; + } + + bucket[keyComponents.lastObject] = result; + } + } + } + + if (results && [results count]) { + outputStructure.structureValue = [[QCStructure alloc] initWithDictionary:results]; + } else { + outputStructure.structureValue = nil; + } + + return YES; +} + + +@end diff --git a/Origami Plugin/DHStructureMultiplePathMembersPatch.xml b/Origami Plugin/DHStructureMultiplePathMembersPatch.xml new file mode 100644 index 0000000..567dab1 --- /dev/null +++ b/Origami Plugin/DHStructureMultiplePathMembersPatch.xml @@ -0,0 +1,58 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Returns a structure containing the results from multiple search paths, separated by commas. Optionally specify labels for the new structure with equal signs and optionally cluster label sub-groups with a forward slash. + +For example, the path "id = story_id, user/name = actors.0.name.text, user/age = actors.0.age" would yield a structure with two top-level keys ("id" and "user") and two sub-level keys ("name" and "age" within "user"). All of the leaf-node children (in this example, "id", "name" and "age") will contain the values of their respective search path values. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure Multiple Path Members + + inputAttributes + + inputStructure + + description + + name + Structure + + inputPaths + + description + + name + Paths + + + outputAttributes + + outputStructure + + description + + name + Structure + + + + diff --git a/Origami Plugin/DHStructurePathMemberPatch.h b/Origami Plugin/DHStructurePathMemberPatch.h new file mode 100755 index 0000000..2675dc4 --- /dev/null +++ b/Origami Plugin/DHStructurePathMemberPatch.h @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface DHStructurePathMemberPatch : QCPatch +{ + QCStructurePort *inputStructure; + QCStringPort *inputPath; + QCVirtualPort *outputMember; + QCStructurePort *outputUntraversedPaths; +} + ++ (id)memberForPath:(NSString *)path inDictionary:(NSDictionary *)dictionary untraversedPaths:(NSArray **)untraversedPaths; + +@end diff --git a/Origami Plugin/DHStructurePathMemberPatch.m b/Origami Plugin/DHStructurePathMemberPatch.m new file mode 100755 index 0000000..72be44b --- /dev/null +++ b/Origami Plugin/DHStructurePathMemberPatch.m @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "DHStructurePathMemberPatch.h" +#import "NSDictionary+FBAdditions.h" +#import "NSString+FBAdditions.h" + +@implementation DHStructurePathMemberPatch : QCPatch + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)identifier { + return kQCPatchExecutionModeProcessor; +} + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)identifier { + return NO; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)identifier { + return kQCPatchTimeModeIdle; +} + ++ (id)memberForPath:(NSString *)path inDictionary:(NSDictionary *)dictionary untraversedPaths:(NSArray **)untraversedPaths { + NSMutableArray *pathComponents = [[path componentsSeparatedByUnescapedDelimeters:@[@"/",@"."] map:NULL] mutableCopy]; + NSUInteger emptyStringIndex = NSNotFound; + while ((emptyStringIndex = [pathComponents indexOfObject:@""]) != NSNotFound) { + [pathComponents removeObjectAtIndex:emptyStringIndex]; + } + + id result = [dictionary valueAtPath:pathComponents untraversedPaths:untraversedPaths]; + if ([result isKindOfClass:[NSArray class]] && [result count] == 1) { + result = [result lastObject]; + } + + return result; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if (!(inputStructure.wasUpdated || inputPath.wasUpdated)) { + return YES; + } + + NSDictionary *dictionary = [inputStructure.structureValue dictionaryRepresentation]; + if (!dictionary) { + outputUntraversedPaths.structureValue = nil; + return YES; + } + + NSArray *untraversedPaths = nil; + NSString *path = (NSString *)inputPath.stringValue; + if (![path length]) { + outputMember.rawValue = inputStructure.structureValue; + outputUntraversedPaths.structureValue = nil; + return YES; + } + + id result = [DHStructurePathMemberPatch memberForPath:path inDictionary:dictionary untraversedPaths:&untraversedPaths]; + + if (result && [result isKindOfClass:[NSArray class]]) { + outputMember.rawValue = [[QCStructure alloc] initWithArray:result]; + } else if (result && [result isKindOfClass:[NSDictionary class]]) { + outputMember.rawValue = [[QCStructure alloc] initWithDictionary:result]; + } else if (result && (result != [NSNull null])) { + outputMember.rawValue = result; + } else { + outputMember.rawValue = nil; + } + + if (untraversedPaths) { + outputUntraversedPaths.structureValue = [[QCStructure alloc] initWithArray:untraversedPaths]; + } else { + outputUntraversedPaths.structureValue = nil; + } + + return YES; +} + +@end diff --git a/Origami Plugin/DHStructurePathMemberPatch.xml b/Origami Plugin/DHStructurePathMemberPatch.xml new file mode 100755 index 0000000..5a99e6f --- /dev/null +++ b/Origami Plugin/DHStructurePathMemberPatch.xml @@ -0,0 +1,65 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch returns a member or members in a structure resulting from a path search. + +For example, if you had an indexed structure with two members, a structure with key "name", value "Cat", and a structure with key "name", value "Dog", you could use a path of "0.name" to get the value "Cat". If you used a key of "*.name", you'd get a structure with "Cat" and "Dog". + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure Path Member + + inputAttributes + + inputStructure + + description + + name + Structure + + inputPath + + description + + name + Path + + + outputAttributes + + outputMember + + description + + name + Member + + outputUntraversedPaths + + description + + name + Untraversed Paths + + + + diff --git a/Origami Plugin/Export for Origami.sketchplugin b/Origami Plugin/Export for Origami.sketchplugin index b855338..195c841 100644 --- a/Origami Plugin/Export for Origami.sketchplugin +++ b/Origami Plugin/Export for Origami.sketchplugin @@ -53,8 +53,6 @@ function main() { var group_name = ""; if (is_group(layer)) { group_name = [layer name]; - } - if (![layer isMemberOfClass:[MSArtboardGroup class]]) { inside_top_level_group = true; top_level_group_pos = calculate_real_position_for(layer); } @@ -211,27 +209,23 @@ function export_layer(layer, depth, artboard_name) { function metadata_for(layer, layer_copy) { loggle("Getting metadata for " + [layer name]); - var gkrect = [GKRect rectWithRect:[MSSliceTrimming trimmedRectForSlice:layer_copy]], + var cgrect = [MSSliceTrimming trimmedRectForSlice:layer_copy], position = calculate_real_position_for(layer), x,y,w,h, layer_hidden = [layer name].indexOf("@@hidden") > -1; x = position.x; y = position.y; - w = [gkrect width]; - h = [gkrect height]; + w = cgrect.size.width; + h = cgrect.size.height; - if ([layer isMemberOfClass:[MSArtboardGroup class]]) { + // If this is an artboard we should ignore its position (at least for now) + if (is_artboard(layer)) { loggle("Resetting x and y to 0 because artboard"); x = 0; y = 0; } - if (inside_top_level_group) { - x-= top_level_group_pos.x; - y-= top_level_group_pos.y; - loggle("Shifting x by: " + top_level_group_pos.x); - loggle("Shifting y by: " + top_level_group_pos.y); - } + loggle("Metadata for <" + [layer name] + ">: { x:"+x+", y:"+y+", width:"+w+", height:"+h+"}"); return { x: x, @@ -244,15 +238,15 @@ function metadata_for(layer, layer_copy) { } function calculate_real_position_for(layer) { - var gkrect = [GKRect rectWithRect:[MSSliceTrimming trimmedRectForSlice:layer]], + var cgrect = [MSSliceTrimming trimmedRectForSlice:layer], absrect = [layer absoluteRect]; var rulerDeltaX = [absrect rulerX] - [absrect x], rulerDeltaY = [absrect rulerY] - [absrect y], - GKRectRulerX = [gkrect x] + rulerDeltaX, - GKRectRulerY = [gkrect y] + rulerDeltaY; + CGRectRulerX = cgrect.origin.x + rulerDeltaX, + CGRectRulerY = cgrect.origin.y + rulerDeltaY; return { - x: Math.round(GKRectRulerX), - y: Math.round(GKRectRulerY) + x: Math.round(CGRectRulerX), + y: Math.round(CGRectRulerY) } } @@ -311,6 +305,10 @@ function is_group(layer) { return [layer isMemberOfClass:[MSLayerGroup class]] || [layer isMemberOfClass:[MSArtboardGroup class]] } +function is_artboard(layer) { + return [layer isMemberOfClass:[MSArtboardGroup class]]; +} + function is_symbol(layer) { return [layer parentOrSelfIsSymbol]; } diff --git a/Origami Plugin/FBDescriptionPatch.h b/Origami Plugin/FBDescriptionPatch.h new file mode 100644 index 0000000..4d3c8e4 --- /dev/null +++ b/Origami Plugin/FBDescriptionPatch.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface FBDescriptionPatch : QCPatch { + QCVirtualPort *inputObject; + QCStringPort *outputDescription; +} + +@end diff --git a/Origami Plugin/FBDescriptionPatch.m b/Origami Plugin/FBDescriptionPatch.m new file mode 100644 index 0000000..3834cf0 --- /dev/null +++ b/Origami Plugin/FBDescriptionPatch.m @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "FBDescriptionPatch.h" + +@implementation FBDescriptionPatch + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)fp8 { + return NO; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)fp8 { + return kQCPatchExecutionModeProcessor; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)fp8 { + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments +{ + if (inputObject.wasUpdated == NO) { + return YES; + } + + id theObject = [inputObject rawValue]; + + if ([theObject respondsToSelector:@selector(description)]) { + if ([theObject respondsToSelector:@selector(dictionaryRepresentation)]) { + theObject = [theObject dictionaryRepresentation]; + } + + NSString *description = [theObject description]; + [outputDescription setStringValue:description]; + } + + return YES; +} + +@end diff --git a/Origami Plugin/FBDescriptionPatch.xml b/Origami Plugin/FBDescriptionPatch.xml new file mode 100755 index 0000000..42e552b --- /dev/null +++ b/Origami Plugin/FBDescriptionPatch.xml @@ -0,0 +1,49 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch outputs a string description of an object. It should be similar to what you see in the tooltip when hovered over a port. It's helpful for inspecting complex structures. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + Description + + inputAttributes + + inputObject + + description + Object + name + Object + + + outputAttributes + + outputDescription + + description + Description + name + Description + + + + \ No newline at end of file diff --git a/Origami Plugin/FBFPS.h b/Origami Plugin/FBFPS.h new file mode 100644 index 0000000..b8bbe19 --- /dev/null +++ b/Origami Plugin/FBFPS.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface FBFPS : QCPatch +{ + QCNumberPort *outputFPS; + QCStringPort *outputFPSString; +} + +@end diff --git a/Origami Plugin/FBFPS.m b/Origami Plugin/FBFPS.m new file mode 100644 index 0000000..a40c3c5 --- /dev/null +++ b/Origami Plugin/FBFPS.m @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "FBFPS.h" + +@interface FBFPS () { + QCView *_qcView; + double _previousTime; +} +@end + +@implementation FBFPS + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)fp8 { + return NO; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)fp8 { + return kQCPatchExecutionModeProvider; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)fp8 { + return kQCPatchTimeModeIdle; +} + +- (void)enable:(QCOpenGLContext *)context { + id value = self._renderingInfo.context.userInfo[@".QCView"]; + _qcView = [value pointerValue]; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + if ([_qcView respondsToSelector:@selector(averageFPS)]) { + [outputFPS setDoubleValue:_qcView.averageFPS]; + + if (roundf(time * 2.0) / 2.0 != roundf(_previousTime * 2.0) / 2.0) { // Execute every 0.5s + [outputFPSString setStringValue:[NSString stringWithFormat:@"%.2f FPS",_qcView.averageFPS]]; + } + } + + _previousTime = time; + + return YES; +} + +@end diff --git a/Origami Plugin/FBFPS.xml b/Origami Plugin/FBFPS.xml new file mode 100755 index 0000000..d542b3e --- /dev/null +++ b/Origami Plugin/FBFPS.xml @@ -0,0 +1,38 @@ + + + + + nodeAttributes + + category + FPS + categories + + Environment + + copyright + Brandon Walkin + description + This patch outputs the frames per second of the composition. + name + FPS + + outputAttributes + + outputFPS + + description + Frames per second + name + FPS + + outputFPSString + + description + Frames per second string + name + FPS String + + + + \ No newline at end of file diff --git a/Origami Plugin/FBFileUpdated.h b/Origami Plugin/FBFileUpdated.h new file mode 100644 index 0000000..f90bc8a --- /dev/null +++ b/Origami Plugin/FBFileUpdated.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface FBFileUpdated : QCPatch { + QCStringPort *inputPath; + QCBooleanPort *outputUpdated; +} + +@end diff --git a/Origami Plugin/FBFileUpdated.m b/Origami Plugin/FBFileUpdated.m new file mode 100644 index 0000000..899b785 --- /dev/null +++ b/Origami Plugin/FBFileUpdated.m @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "FBFileUpdated.h" +#import "CDEvents.h" +#import "QCPatch+FBAdditions.h" +#import "NSString+RelativePath.h" + +@interface FBFileUpdated () +@property (retain, nonatomic) CDEvents *events; +@property (assign, nonatomic) NSDocument *document; +@property BOOL shouldSendUpdatePulse; +@end + +@implementation FBFileUpdated + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)fp8 { + return NO; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)fp8 { + return kQCPatchExecutionModeProvider; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)fp8 { + return kQCPatchTimeModeIdle; +} + +- (BOOL)setup:(QCOpenGLContext *)context { + self.document = [self fb_document]; + + return [super setup:context]; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments +{ + if (outputUpdated.booleanValue) { + outputUpdated.booleanValue = NO; + } + + if (self.shouldSendUpdatePulse) { + outputUpdated.booleanValue = YES; + self.shouldSendUpdatePulse = NO; + } + + if (inputPath.wasUpdated && ![inputPath.stringValue isEqualToString:@""]) { + NSString *path = inputPath.stringValue; + + NSString *filePath = path; + + if (![path isAbsolutePath] && self.document.fileURL) { + NSString *baseDirPath = [self.document.fileURL.path stringByDeletingLastPathComponent]; + filePath = [path absolutePathFromBaseDirPath:baseDirPath]; + } + + NSURL *url = [NSURL fileURLWithPath:filePath isDirectory:NO]; + + if (url) { + self.events = [[CDEvents alloc] initWithURLs:[NSArray arrayWithObject:url] block:^(CDEvents *watcher, CDEvent *event) { + self.shouldSendUpdatePulse = YES; + }]; + } + + } + + return YES; +} + +@end diff --git a/Origami Plugin/FBFileUpdated.xml b/Origami Plugin/FBFileUpdated.xml new file mode 100755 index 0000000..cef59fd --- /dev/null +++ b/Origami Plugin/FBFileUpdated.xml @@ -0,0 +1,49 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch outputs a pulse when the file at the specified path is modified. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + File Updated + + inputAttributes + + inputPath + + description + Path + name + Path + + + outputAttributes + + outputUpdated + + description + A pulse when the file is updated + name + Updated + + + + \ No newline at end of file diff --git a/Origami Plugin/FBLogToConsole.h b/Origami Plugin/FBLogToConsole.h new file mode 100644 index 0000000..58f8a3f --- /dev/null +++ b/Origami Plugin/FBLogToConsole.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface FBLogToConsole : QCPatch { + QCStringPort *inputMessage; +} + +@end diff --git a/Origami Plugin/FBLogToConsole.m b/Origami Plugin/FBLogToConsole.m new file mode 100644 index 0000000..b42b44a --- /dev/null +++ b/Origami Plugin/FBLogToConsole.m @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "FBLogToConsole.h" + +@implementation FBLogToConsole + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)fp8 +{ + return NO; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)fp8 +{ + return kQCPatchExecutionModeConsumer; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)fp8 +{ + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments +{ + NSLog(@"QCLOG: %@",[inputMessage stringValue]); + + return YES; +} + +@end diff --git a/Origami Plugin/FBLogToConsole.xml b/Origami Plugin/FBLogToConsole.xml new file mode 100755 index 0000000..c1d456e --- /dev/null +++ b/Origami Plugin/FBLogToConsole.xml @@ -0,0 +1,39 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch logs the input string to the console when it's enabled. It logs during each frame the viewer is rendering. Open Console.app to view the messages. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + Log to Console + + inputAttributes + + inputMessage + + description + The string you want to log. + name + Message + + + + \ No newline at end of file diff --git a/Origami Plugin/FBOrigami.xcodeproj/project.pbxproj b/Origami Plugin/FBOrigami.xcodeproj/project.pbxproj index aff60c7..d0b905e 100644 --- a/Origami Plugin/FBOrigami.xcodeproj/project.pbxproj +++ b/Origami Plugin/FBOrigami.xcodeproj/project.pbxproj @@ -142,6 +142,58 @@ B574FDC11861130100668D86 /* FBOrigamiAdditions+DimDisabledConsumers.m in Sources */ = {isa = PBXBuildFile; fileRef = B574FDC01861130100668D86 /* FBOrigamiAdditions+DimDisabledConsumers.m */; }; B574FDC41861159D00668D86 /* FBOrigamiAdditions+TextFieldShortcuts.m in Sources */ = {isa = PBXBuildFile; fileRef = B574FDC31861159D00668D86 /* FBOrigamiAdditions+TextFieldShortcuts.m */; }; B574FDCA1861289E00668D86 /* FBOrigamiAdditions+WindowMods.m in Sources */ = {isa = PBXBuildFile; fileRef = B574FDC91861289E00668D86 /* FBOrigamiAdditions+WindowMods.m */; }; + B57798FE1C94DB5000B1BDC9 /* DHJSONImporterPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B57798FC1C94DB5000B1BDC9 /* DHJSONImporterPatch.m */; }; + B57798FF1C94DB5000B1BDC9 /* DHJSONImporterPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57798FD1C94DB5000B1BDC9 /* DHJSONImporterPatch.xml */; }; + B577992A1C94DD7700B1BDC9 /* SBJsonParser.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799041C94DD7700B1BDC9 /* SBJsonParser.m */; }; + B577992B1C94DD7700B1BDC9 /* SBJsonStreamParser.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799061C94DD7700B1BDC9 /* SBJsonStreamParser.m */; }; + B577992C1C94DD7700B1BDC9 /* SBJsonStreamParserAccumulator.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799081C94DD7700B1BDC9 /* SBJsonStreamParserAccumulator.m */; }; + B577992D1C94DD7700B1BDC9 /* SBJsonStreamParserAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = B577990A1C94DD7700B1BDC9 /* SBJsonStreamParserAdapter.m */; }; + B577992E1C94DD7700B1BDC9 /* SBJsonStreamParserState.m in Sources */ = {isa = PBXBuildFile; fileRef = B577990C1C94DD7700B1BDC9 /* SBJsonStreamParserState.m */; }; + B577992F1C94DD7700B1BDC9 /* SBJsonStreamTokeniser.m in Sources */ = {isa = PBXBuildFile; fileRef = B577990E1C94DD7700B1BDC9 /* SBJsonStreamTokeniser.m */; }; + B57799301C94DD7700B1BDC9 /* SBJsonStreamWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799101C94DD7700B1BDC9 /* SBJsonStreamWriter.m */; }; + B57799311C94DD7700B1BDC9 /* SBJsonStreamWriterAccumulator.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799121C94DD7700B1BDC9 /* SBJsonStreamWriterAccumulator.m */; }; + B57799321C94DD7700B1BDC9 /* SBJsonStreamWriterState.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799141C94DD7700B1BDC9 /* SBJsonStreamWriterState.m */; }; + B57799331C94DD7700B1BDC9 /* SBJsonWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799161C94DD7700B1BDC9 /* SBJsonWriter.m */; }; + B57799341C94DD7700B1BDC9 /* SocketIO.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799181C94DD7700B1BDC9 /* SocketIO.m */; }; + B57799351C94DD7700B1BDC9 /* SocketIOJSONSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = B577991A1C94DD7700B1BDC9 /* SocketIOJSONSerialization.m */; }; + B57799361C94DD7700B1BDC9 /* SocketIOPacket.m in Sources */ = {isa = PBXBuildFile; fileRef = B577991C1C94DD7700B1BDC9 /* SocketIOPacket.m */; }; + B57799371C94DD7700B1BDC9 /* SocketIOTransportWebsocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B577991F1C94DD7700B1BDC9 /* SocketIOTransportWebsocket.m */; }; + B57799381C94DD7700B1BDC9 /* SocketIOTransportXHR.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799211C94DD7700B1BDC9 /* SocketIOTransportXHR.m */; }; + B57799391C94DD7700B1BDC9 /* base64.c in Sources */ = {isa = PBXBuildFile; fileRef = B57799231C94DD7700B1BDC9 /* base64.c */; }; + B577993A1C94DD7700B1BDC9 /* NSData+SRB64Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799261C94DD7700B1BDC9 /* NSData+SRB64Additions.m */; }; + B577993B1C94DD7700B1BDC9 /* SRWebSocket.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799291C94DD7700B1BDC9 /* SRWebSocket.m */; }; + B577993E1C94DDB300B1BDC9 /* NSURL+FBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B577993D1C94DDB300B1BDC9 /* NSURL+FBAdditions.m */; }; + B57799411C94DF1000B1BDC9 /* NSString+RelativePath.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799401C94DF1000B1BDC9 /* NSString+RelativePath.m */; }; + B57799451C94EB1400B1BDC9 /* DHAppleScriptPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799431C94EB1400B1BDC9 /* DHAppleScriptPatch.m */; }; + B57799461C94EB1400B1BDC9 /* DHAppleScriptPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799441C94EB1400B1BDC9 /* DHAppleScriptPatch.xml */; }; + B577994D1C94EBB600B1BDC9 /* NSAppleEventDescriptor+FBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799481C94EBB600B1BDC9 /* NSAppleEventDescriptor+FBAdditions.m */; }; + B577994E1C94EBB600B1BDC9 /* NSAppleScript+FBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B577994A1C94EBB600B1BDC9 /* NSAppleScript+FBAdditions.m */; }; + B577994F1C94EBB600B1BDC9 /* NSDate+FBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B577994C1C94EBB600B1BDC9 /* NSDate+FBAdditions.m */; }; + B57799591C94F03800B1BDC9 /* DHImageAtURLPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799571C94F03800B1BDC9 /* DHImageAtURLPatch.m */; }; + B577995A1C94F03800B1BDC9 /* DHImageAtURLPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799581C94F03800B1BDC9 /* DHImageAtURLPatch.xml */; }; + B577995D1C94F29200B1BDC9 /* NSArray+FBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B577995C1C94F29200B1BDC9 /* NSArray+FBAdditions.m */; }; + B57799611C94F65D00B1BDC9 /* DHRESTRequestPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B577995F1C94F65D00B1BDC9 /* DHRESTRequestPatch.m */; }; + B57799621C94F65D00B1BDC9 /* DHRESTRequestPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799601C94F65D00B1BDC9 /* DHRESTRequestPatch.xml */; }; + B57799651C94F72000B1BDC9 /* DHRESTRequest.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799641C94F72000B1BDC9 /* DHRESTRequest.m */; }; + B57799781C95029300B1BDC9 /* FBFileUpdated.m in Sources */ = {isa = PBXBuildFile; fileRef = B577996A1C95029300B1BDC9 /* FBFileUpdated.m */; }; + B57799791C95029300B1BDC9 /* FBFileUpdated.xml in Resources */ = {isa = PBXBuildFile; fileRef = B577996B1C95029300B1BDC9 /* FBFileUpdated.xml */; }; + B577997A1C95029300B1BDC9 /* FBDescriptionPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B577996D1C95029300B1BDC9 /* FBDescriptionPatch.m */; }; + B577997B1C95029300B1BDC9 /* FBDescriptionPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B577996E1C95029300B1BDC9 /* FBDescriptionPatch.xml */; }; + B577997C1C95029300B1BDC9 /* FBStructureShuffle.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799701C95029300B1BDC9 /* FBStructureShuffle.m */; }; + B577997D1C95029300B1BDC9 /* FBStructureShuffle.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799711C95029300B1BDC9 /* FBStructureShuffle.xml */; }; + B577997E1C95029300B1BDC9 /* FBLogToConsole.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799731C95029300B1BDC9 /* FBLogToConsole.m */; }; + B577997F1C95029300B1BDC9 /* FBLogToConsole.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799741C95029300B1BDC9 /* FBLogToConsole.xml */; }; + B57799801C95029300B1BDC9 /* FBFPS.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799761C95029300B1BDC9 /* FBFPS.m */; }; + B57799811C95029300B1BDC9 /* FBFPS.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799771C95029300B1BDC9 /* FBFPS.xml */; }; + B57799851C954C0F00B1BDC9 /* DHStringFormatterPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799831C954C0F00B1BDC9 /* DHStringFormatterPatch.m */; }; + B57799861C954C0F00B1BDC9 /* DHStringFormatterPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799841C954C0F00B1BDC9 /* DHStringFormatterPatch.xml */; }; + B577998A1C954C1700B1BDC9 /* DHImageWithFormattedStrings.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799881C954C1700B1BDC9 /* DHImageWithFormattedStrings.m */; }; + B577998B1C954C1700B1BDC9 /* DHImageWithFormattedStrings.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799891C954C1700B1BDC9 /* DHImageWithFormattedStrings.xml */; }; + B577998E1C954DAF00B1BDC9 /* NSColor+HTMLExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = B577998D1C954DAF00B1BDC9 /* NSColor+HTMLExtensions.m */; }; + B57799961C963A0500B1BDC9 /* DHStringAtURLPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B577998F1C963A0500B1BDC9 /* DHStringAtURLPatch.xml */; }; + B57799971C963A0500B1BDC9 /* DHStringAtURLPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799911C963A0500B1BDC9 /* DHStringAtURLPatch.m */; }; + B57799981C963A0500B1BDC9 /* DHSoundPlayerProPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B57799921C963A0500B1BDC9 /* DHSoundPlayerProPatch.xml */; }; + B57799991C963A0500B1BDC9 /* DHSoundPlayerProPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B57799941C963A0500B1BDC9 /* DHSoundPlayerProPatch.m */; }; B57D530C1A2D301300B805D3 /* Code Export in Resources */ = {isa = PBXBuildFile; fileRef = B57D530B1A2D301300B805D3 /* Code Export */; }; B593F0A61A2737DF003C664A /* FBOrigamiAdditions+CodeExport.m in Sources */ = {isa = PBXBuildFile; fileRef = B593F0A51A2737DF003C664A /* FBOrigamiAdditions+CodeExport.m */; }; B59541B419E1F5F400B4FC3A /* FBDeviceViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B59541B219E1F5F400B4FC3A /* FBDeviceViewController.m */; }; @@ -173,6 +225,15 @@ B5BB6FF01A1020AB005725C1 /* FBMutableOrderedDictionary.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BB6FEF1A1020AB005725C1 /* FBMutableOrderedDictionary.m */; }; B5BB6FF31A1020DD005725C1 /* QCImage+FBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BB6FF21A1020DD005725C1 /* QCImage+FBAdditions.m */; }; B5BB6FF61A102146005725C1 /* FBHashValue.m in Sources */ = {isa = PBXBuildFile; fileRef = B5BB6FF51A102146005725C1 /* FBHashValue.m */; settings = {COMPILER_FLAGS = "-fno-objc-arc"; }; }; + B5C32BE01C98AB4A00E29020 /* DHStructureAllKeysPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B5C32BD51C98AB4A00E29020 /* DHStructureAllKeysPatch.m */; }; + B5C32BE11C98AB4A00E29020 /* DHStructureAllKeysPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B5C32BD61C98AB4A00E29020 /* DHStructureAllKeysPatch.xml */; }; + B5C32BE21C98AB4A00E29020 /* DHStructureAllValuesPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B5C32BD81C98AB4A00E29020 /* DHStructureAllValuesPatch.m */; }; + B5C32BE31C98AB4A00E29020 /* DHStructureAllValuesPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B5C32BD91C98AB4A00E29020 /* DHStructureAllValuesPatch.xml */; }; + B5C32BE41C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B5C32BDB1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.m */; }; + B5C32BE51C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B5C32BDC1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.xml */; }; + B5C32BE61C98AB4A00E29020 /* DHStructurePathMemberPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B5C32BDE1C98AB4A00E29020 /* DHStructurePathMemberPatch.m */; }; + B5C32BE71C98AB4A00E29020 /* DHStructurePathMemberPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B5C32BDF1C98AB4A00E29020 /* DHStructurePathMemberPatch.xml */; }; + B5C32BEA1C98AEC500E29020 /* NSDictionary+FBAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = B5C32BE91C98AEC500E29020 /* NSDictionary+FBAdditions.m */; }; B5D7643F1A30FD9A0054F72F /* FBOStructureCreatorPatch.m in Sources */ = {isa = PBXBuildFile; fileRef = B5D7643E1A30FD9A0054F72F /* FBOStructureCreatorPatch.m */; }; B5D764421A30FEBF0054F72F /* FBOStructureCreatorPatchUI.m in Sources */ = {isa = PBXBuildFile; fileRef = B5D764411A30FEBF0054F72F /* FBOStructureCreatorPatchUI.m */; }; B5D88F9418E0A6F200CFBB7D /* FBOMultiSwitchPatch.xml in Resources */ = {isa = PBXBuildFile; fileRef = B5D88F9218E0A6F200CFBB7D /* FBOMultiSwitchPatch.xml */; }; @@ -409,6 +470,100 @@ B574FDC31861159D00668D86 /* FBOrigamiAdditions+TextFieldShortcuts.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBOrigamiAdditions+TextFieldShortcuts.m"; sourceTree = ""; }; B574FDC81861289E00668D86 /* FBOrigamiAdditions+WindowMods.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FBOrigamiAdditions+WindowMods.h"; sourceTree = ""; }; B574FDC91861289E00668D86 /* FBOrigamiAdditions+WindowMods.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBOrigamiAdditions+WindowMods.m"; sourceTree = ""; }; + B57798FB1C94DB5000B1BDC9 /* DHJSONImporterPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHJSONImporterPatch.h; sourceTree = ""; }; + B57798FC1C94DB5000B1BDC9 /* DHJSONImporterPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHJSONImporterPatch.m; sourceTree = ""; }; + B57798FD1C94DB5000B1BDC9 /* DHJSONImporterPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHJSONImporterPatch.xml; sourceTree = ""; }; + B57799021C94DD7700B1BDC9 /* SBJson.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJson.h; sourceTree = ""; }; + B57799031C94DD7700B1BDC9 /* SBJsonParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonParser.h; sourceTree = ""; }; + B57799041C94DD7700B1BDC9 /* SBJsonParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonParser.m; sourceTree = ""; }; + B57799051C94DD7700B1BDC9 /* SBJsonStreamParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamParser.h; sourceTree = ""; }; + B57799061C94DD7700B1BDC9 /* SBJsonStreamParser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamParser.m; sourceTree = ""; }; + B57799071C94DD7700B1BDC9 /* SBJsonStreamParserAccumulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamParserAccumulator.h; sourceTree = ""; }; + B57799081C94DD7700B1BDC9 /* SBJsonStreamParserAccumulator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamParserAccumulator.m; sourceTree = ""; }; + B57799091C94DD7700B1BDC9 /* SBJsonStreamParserAdapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamParserAdapter.h; sourceTree = ""; }; + B577990A1C94DD7700B1BDC9 /* SBJsonStreamParserAdapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamParserAdapter.m; sourceTree = ""; }; + B577990B1C94DD7700B1BDC9 /* SBJsonStreamParserState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamParserState.h; sourceTree = ""; }; + B577990C1C94DD7700B1BDC9 /* SBJsonStreamParserState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamParserState.m; sourceTree = ""; }; + B577990D1C94DD7700B1BDC9 /* SBJsonStreamTokeniser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamTokeniser.h; sourceTree = ""; }; + B577990E1C94DD7700B1BDC9 /* SBJsonStreamTokeniser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamTokeniser.m; sourceTree = ""; }; + B577990F1C94DD7700B1BDC9 /* SBJsonStreamWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamWriter.h; sourceTree = ""; }; + B57799101C94DD7700B1BDC9 /* SBJsonStreamWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamWriter.m; sourceTree = ""; }; + B57799111C94DD7700B1BDC9 /* SBJsonStreamWriterAccumulator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamWriterAccumulator.h; sourceTree = ""; }; + B57799121C94DD7700B1BDC9 /* SBJsonStreamWriterAccumulator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamWriterAccumulator.m; sourceTree = ""; }; + B57799131C94DD7700B1BDC9 /* SBJsonStreamWriterState.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonStreamWriterState.h; sourceTree = ""; }; + B57799141C94DD7700B1BDC9 /* SBJsonStreamWriterState.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonStreamWriterState.m; sourceTree = ""; }; + B57799151C94DD7700B1BDC9 /* SBJsonWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SBJsonWriter.h; sourceTree = ""; }; + B57799161C94DD7700B1BDC9 /* SBJsonWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SBJsonWriter.m; sourceTree = ""; }; + B57799171C94DD7700B1BDC9 /* SocketIO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketIO.h; sourceTree = ""; }; + B57799181C94DD7700B1BDC9 /* SocketIO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SocketIO.m; sourceTree = ""; }; + B57799191C94DD7700B1BDC9 /* SocketIOJSONSerialization.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketIOJSONSerialization.h; sourceTree = ""; }; + B577991A1C94DD7700B1BDC9 /* SocketIOJSONSerialization.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SocketIOJSONSerialization.m; sourceTree = ""; }; + B577991B1C94DD7700B1BDC9 /* SocketIOPacket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketIOPacket.h; sourceTree = ""; }; + B577991C1C94DD7700B1BDC9 /* SocketIOPacket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SocketIOPacket.m; sourceTree = ""; }; + B577991D1C94DD7700B1BDC9 /* SocketIOTransport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketIOTransport.h; sourceTree = ""; }; + B577991E1C94DD7700B1BDC9 /* SocketIOTransportWebsocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketIOTransportWebsocket.h; sourceTree = ""; }; + B577991F1C94DD7700B1BDC9 /* SocketIOTransportWebsocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SocketIOTransportWebsocket.m; sourceTree = ""; }; + B57799201C94DD7700B1BDC9 /* SocketIOTransportXHR.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SocketIOTransportXHR.h; sourceTree = ""; }; + B57799211C94DD7700B1BDC9 /* SocketIOTransportXHR.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SocketIOTransportXHR.m; sourceTree = ""; }; + B57799231C94DD7700B1BDC9 /* base64.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = base64.c; sourceTree = ""; }; + B57799241C94DD7700B1BDC9 /* base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = ""; }; + B57799251C94DD7700B1BDC9 /* NSData+SRB64Additions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+SRB64Additions.h"; sourceTree = ""; }; + B57799261C94DD7700B1BDC9 /* NSData+SRB64Additions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+SRB64Additions.m"; sourceTree = ""; }; + B57799271C94DD7700B1BDC9 /* SocketRocket-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SocketRocket-Prefix.pch"; sourceTree = ""; }; + B57799281C94DD7700B1BDC9 /* SRWebSocket.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SRWebSocket.h; sourceTree = ""; }; + B57799291C94DD7700B1BDC9 /* SRWebSocket.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SRWebSocket.m; sourceTree = ""; }; + B577993C1C94DDB300B1BDC9 /* NSURL+FBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSURL+FBAdditions.h"; sourceTree = ""; }; + B577993D1C94DDB300B1BDC9 /* NSURL+FBAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSURL+FBAdditions.m"; sourceTree = ""; }; + B577993F1C94DF1000B1BDC9 /* NSString+RelativePath.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+RelativePath.h"; sourceTree = ""; }; + B57799401C94DF1000B1BDC9 /* NSString+RelativePath.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+RelativePath.m"; sourceTree = ""; }; + B57799421C94EB1400B1BDC9 /* DHAppleScriptPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHAppleScriptPatch.h; sourceTree = ""; }; + B57799431C94EB1400B1BDC9 /* DHAppleScriptPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHAppleScriptPatch.m; sourceTree = ""; }; + B57799441C94EB1400B1BDC9 /* DHAppleScriptPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHAppleScriptPatch.xml; sourceTree = ""; }; + B57799471C94EBB600B1BDC9 /* NSAppleEventDescriptor+FBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAppleEventDescriptor+FBAdditions.h"; sourceTree = ""; }; + B57799481C94EBB600B1BDC9 /* NSAppleEventDescriptor+FBAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSAppleEventDescriptor+FBAdditions.m"; sourceTree = ""; }; + B57799491C94EBB600B1BDC9 /* NSAppleScript+FBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSAppleScript+FBAdditions.h"; sourceTree = ""; }; + B577994A1C94EBB600B1BDC9 /* NSAppleScript+FBAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSAppleScript+FBAdditions.m"; sourceTree = ""; }; + B577994B1C94EBB600B1BDC9 /* NSDate+FBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDate+FBAdditions.h"; sourceTree = ""; }; + B577994C1C94EBB600B1BDC9 /* NSDate+FBAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDate+FBAdditions.m"; sourceTree = ""; }; + B57799561C94F03800B1BDC9 /* DHImageAtURLPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHImageAtURLPatch.h; sourceTree = ""; }; + B57799571C94F03800B1BDC9 /* DHImageAtURLPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHImageAtURLPatch.m; sourceTree = ""; }; + B57799581C94F03800B1BDC9 /* DHImageAtURLPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHImageAtURLPatch.xml; sourceTree = ""; }; + B577995B1C94F29200B1BDC9 /* NSArray+FBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSArray+FBAdditions.h"; sourceTree = ""; }; + B577995C1C94F29200B1BDC9 /* NSArray+FBAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSArray+FBAdditions.m"; sourceTree = ""; }; + B577995E1C94F65D00B1BDC9 /* DHRESTRequestPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHRESTRequestPatch.h; sourceTree = ""; }; + B577995F1C94F65D00B1BDC9 /* DHRESTRequestPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHRESTRequestPatch.m; sourceTree = ""; }; + B57799601C94F65D00B1BDC9 /* DHRESTRequestPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHRESTRequestPatch.xml; sourceTree = ""; }; + B57799631C94F72000B1BDC9 /* DHRESTRequest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHRESTRequest.h; sourceTree = ""; }; + B57799641C94F72000B1BDC9 /* DHRESTRequest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHRESTRequest.m; sourceTree = ""; }; + B57799691C95029300B1BDC9 /* FBFileUpdated.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBFileUpdated.h; sourceTree = ""; }; + B577996A1C95029300B1BDC9 /* FBFileUpdated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBFileUpdated.m; sourceTree = ""; }; + B577996B1C95029300B1BDC9 /* FBFileUpdated.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = FBFileUpdated.xml; sourceTree = ""; }; + B577996C1C95029300B1BDC9 /* FBDescriptionPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBDescriptionPatch.h; sourceTree = ""; }; + B577996D1C95029300B1BDC9 /* FBDescriptionPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBDescriptionPatch.m; sourceTree = ""; }; + B577996E1C95029300B1BDC9 /* FBDescriptionPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = FBDescriptionPatch.xml; sourceTree = ""; }; + B577996F1C95029300B1BDC9 /* FBStructureShuffle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBStructureShuffle.h; sourceTree = ""; }; + B57799701C95029300B1BDC9 /* FBStructureShuffle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBStructureShuffle.m; sourceTree = ""; }; + B57799711C95029300B1BDC9 /* FBStructureShuffle.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = FBStructureShuffle.xml; sourceTree = ""; }; + B57799721C95029300B1BDC9 /* FBLogToConsole.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBLogToConsole.h; sourceTree = ""; }; + B57799731C95029300B1BDC9 /* FBLogToConsole.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBLogToConsole.m; sourceTree = ""; }; + B57799741C95029300B1BDC9 /* FBLogToConsole.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = FBLogToConsole.xml; sourceTree = ""; }; + B57799751C95029300B1BDC9 /* FBFPS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBFPS.h; sourceTree = ""; }; + B57799761C95029300B1BDC9 /* FBFPS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBFPS.m; sourceTree = ""; }; + B57799771C95029300B1BDC9 /* FBFPS.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = FBFPS.xml; sourceTree = ""; }; + B57799821C954C0F00B1BDC9 /* DHStringFormatterPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHStringFormatterPatch.h; sourceTree = ""; }; + B57799831C954C0F00B1BDC9 /* DHStringFormatterPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHStringFormatterPatch.m; sourceTree = ""; }; + B57799841C954C0F00B1BDC9 /* DHStringFormatterPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHStringFormatterPatch.xml; sourceTree = ""; }; + B57799871C954C1700B1BDC9 /* DHImageWithFormattedStrings.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHImageWithFormattedStrings.h; sourceTree = ""; }; + B57799881C954C1700B1BDC9 /* DHImageWithFormattedStrings.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHImageWithFormattedStrings.m; sourceTree = ""; }; + B57799891C954C1700B1BDC9 /* DHImageWithFormattedStrings.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHImageWithFormattedStrings.xml; sourceTree = ""; }; + B577998C1C954DAF00B1BDC9 /* NSColor+HTMLExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSColor+HTMLExtensions.h"; sourceTree = ""; }; + B577998D1C954DAF00B1BDC9 /* NSColor+HTMLExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSColor+HTMLExtensions.m"; sourceTree = ""; }; + B577998F1C963A0500B1BDC9 /* DHStringAtURLPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHStringAtURLPatch.xml; sourceTree = ""; }; + B57799901C963A0500B1BDC9 /* DHStringAtURLPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHStringAtURLPatch.h; sourceTree = ""; }; + B57799911C963A0500B1BDC9 /* DHStringAtURLPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHStringAtURLPatch.m; sourceTree = ""; }; + B57799921C963A0500B1BDC9 /* DHSoundPlayerProPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHSoundPlayerProPatch.xml; sourceTree = ""; }; + B57799931C963A0500B1BDC9 /* DHSoundPlayerProPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHSoundPlayerProPatch.h; sourceTree = ""; }; + B57799941C963A0500B1BDC9 /* DHSoundPlayerProPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHSoundPlayerProPatch.m; sourceTree = ""; }; B57D530B1A2D301300B805D3 /* Code Export */ = {isa = PBXFileReference; lastKnownFileType = folder; path = "Code Export"; sourceTree = ""; }; B593F0A41A2737DF003C664A /* FBOrigamiAdditions+CodeExport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FBOrigamiAdditions+CodeExport.h"; sourceTree = ""; }; B593F0A51A2737DF003C664A /* FBOrigamiAdditions+CodeExport.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FBOrigamiAdditions+CodeExport.m"; sourceTree = ""; }; @@ -458,6 +613,20 @@ B5BB6FF21A1020DD005725C1 /* QCImage+FBAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "QCImage+FBAdditions.m"; sourceTree = ""; }; B5BB6FF41A102146005725C1 /* FBHashValue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBHashValue.h; sourceTree = ""; }; B5BB6FF51A102146005725C1 /* FBHashValue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBHashValue.m; sourceTree = ""; }; + B5C32BD41C98AB4A00E29020 /* DHStructureAllKeysPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHStructureAllKeysPatch.h; sourceTree = ""; }; + B5C32BD51C98AB4A00E29020 /* DHStructureAllKeysPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHStructureAllKeysPatch.m; sourceTree = ""; }; + B5C32BD61C98AB4A00E29020 /* DHStructureAllKeysPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHStructureAllKeysPatch.xml; sourceTree = ""; }; + B5C32BD71C98AB4A00E29020 /* DHStructureAllValuesPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHStructureAllValuesPatch.h; sourceTree = ""; }; + B5C32BD81C98AB4A00E29020 /* DHStructureAllValuesPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHStructureAllValuesPatch.m; sourceTree = ""; }; + B5C32BD91C98AB4A00E29020 /* DHStructureAllValuesPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHStructureAllValuesPatch.xml; sourceTree = ""; }; + B5C32BDA1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHStructureMultiplePathMembersPatch.h; sourceTree = ""; }; + B5C32BDB1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHStructureMultiplePathMembersPatch.m; sourceTree = ""; }; + B5C32BDC1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHStructureMultiplePathMembersPatch.xml; sourceTree = ""; }; + B5C32BDD1C98AB4A00E29020 /* DHStructurePathMemberPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DHStructurePathMemberPatch.h; sourceTree = ""; }; + B5C32BDE1C98AB4A00E29020 /* DHStructurePathMemberPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DHStructurePathMemberPatch.m; sourceTree = ""; }; + B5C32BDF1C98AB4A00E29020 /* DHStructurePathMemberPatch.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = DHStructurePathMemberPatch.xml; sourceTree = ""; }; + B5C32BE81C98AEC500E29020 /* NSDictionary+FBAdditions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSDictionary+FBAdditions.h"; sourceTree = ""; }; + B5C32BE91C98AEC500E29020 /* NSDictionary+FBAdditions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSDictionary+FBAdditions.m"; sourceTree = ""; }; B5D7643D1A30FD9A0054F72F /* FBOStructureCreatorPatch.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBOStructureCreatorPatch.h; sourceTree = ""; }; B5D7643E1A30FD9A0054F72F /* FBOStructureCreatorPatch.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FBOStructureCreatorPatch.m; sourceTree = ""; }; B5D764401A30FEBF0054F72F /* FBOStructureCreatorPatchUI.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FBOStructureCreatorPatchUI.h; sourceTree = ""; }; @@ -645,6 +814,61 @@ B596FE001A86D49500C1D132 /* FBViewerDimensionsPatch.h */, B596FE011A86D49500C1D132 /* FBViewerDimensionsPatch.m */, B596FE021A86D49500C1D132 /* FBViewerDimensionsPatch.xml */, + B57799691C95029300B1BDC9 /* FBFileUpdated.h */, + B577996A1C95029300B1BDC9 /* FBFileUpdated.m */, + B577996B1C95029300B1BDC9 /* FBFileUpdated.xml */, + B577996C1C95029300B1BDC9 /* FBDescriptionPatch.h */, + B577996D1C95029300B1BDC9 /* FBDescriptionPatch.m */, + B577996E1C95029300B1BDC9 /* FBDescriptionPatch.xml */, + B577996F1C95029300B1BDC9 /* FBStructureShuffle.h */, + B57799701C95029300B1BDC9 /* FBStructureShuffle.m */, + B57799711C95029300B1BDC9 /* FBStructureShuffle.xml */, + B57799721C95029300B1BDC9 /* FBLogToConsole.h */, + B57799731C95029300B1BDC9 /* FBLogToConsole.m */, + B57799741C95029300B1BDC9 /* FBLogToConsole.xml */, + B57799751C95029300B1BDC9 /* FBFPS.h */, + B57799761C95029300B1BDC9 /* FBFPS.m */, + B57799771C95029300B1BDC9 /* FBFPS.xml */, + B57798FB1C94DB5000B1BDC9 /* DHJSONImporterPatch.h */, + B57798FC1C94DB5000B1BDC9 /* DHJSONImporterPatch.m */, + B57798FD1C94DB5000B1BDC9 /* DHJSONImporterPatch.xml */, + B57799421C94EB1400B1BDC9 /* DHAppleScriptPatch.h */, + B57799431C94EB1400B1BDC9 /* DHAppleScriptPatch.m */, + B57799441C94EB1400B1BDC9 /* DHAppleScriptPatch.xml */, + B57799561C94F03800B1BDC9 /* DHImageAtURLPatch.h */, + B57799571C94F03800B1BDC9 /* DHImageAtURLPatch.m */, + B57799581C94F03800B1BDC9 /* DHImageAtURLPatch.xml */, + B577995E1C94F65D00B1BDC9 /* DHRESTRequestPatch.h */, + B577995F1C94F65D00B1BDC9 /* DHRESTRequestPatch.m */, + B57799601C94F65D00B1BDC9 /* DHRESTRequestPatch.xml */, + B57799631C94F72000B1BDC9 /* DHRESTRequest.h */, + B57799641C94F72000B1BDC9 /* DHRESTRequest.m */, + B57799821C954C0F00B1BDC9 /* DHStringFormatterPatch.h */, + B57799831C954C0F00B1BDC9 /* DHStringFormatterPatch.m */, + B57799841C954C0F00B1BDC9 /* DHStringFormatterPatch.xml */, + B57799871C954C1700B1BDC9 /* DHImageWithFormattedStrings.h */, + B57799881C954C1700B1BDC9 /* DHImageWithFormattedStrings.m */, + B57799891C954C1700B1BDC9 /* DHImageWithFormattedStrings.xml */, + B57799901C963A0500B1BDC9 /* DHStringAtURLPatch.h */, + B57799911C963A0500B1BDC9 /* DHStringAtURLPatch.m */, + B577998F1C963A0500B1BDC9 /* DHStringAtURLPatch.xml */, + B57799931C963A0500B1BDC9 /* DHSoundPlayerProPatch.h */, + B57799941C963A0500B1BDC9 /* DHSoundPlayerProPatch.m */, + B57799921C963A0500B1BDC9 /* DHSoundPlayerProPatch.xml */, + B5C32BD41C98AB4A00E29020 /* DHStructureAllKeysPatch.h */, + B5C32BD51C98AB4A00E29020 /* DHStructureAllKeysPatch.m */, + B5C32BD61C98AB4A00E29020 /* DHStructureAllKeysPatch.xml */, + B5C32BD71C98AB4A00E29020 /* DHStructureAllValuesPatch.h */, + B5C32BD81C98AB4A00E29020 /* DHStructureAllValuesPatch.m */, + B5C32BD91C98AB4A00E29020 /* DHStructureAllValuesPatch.xml */, + B5C32BDA1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.h */, + B5C32BDB1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.m */, + B5C32BDC1C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.xml */, + B5C32BDD1C98AB4A00E29020 /* DHStructurePathMemberPatch.h */, + B5C32BDE1C98AB4A00E29020 /* DHStructurePathMemberPatch.m */, + B5C32BDF1C98AB4A00E29020 /* DHStructurePathMemberPatch.xml */, + B577998C1C954DAF00B1BDC9 /* NSColor+HTMLExtensions.h */, + B577998D1C954DAF00B1BDC9 /* NSColor+HTMLExtensions.m */, ); name = "Other Patches"; sourceTree = ""; @@ -707,6 +931,10 @@ B5BB6FF21A1020DD005725C1 /* QCImage+FBAdditions.m */, B52C92621975D93000AB5A6D /* QCView+FBAdditions.h */, B52C92631975D93000AB5A6D /* QCView+FBAdditions.m */, + B577993C1C94DDB300B1BDC9 /* NSURL+FBAdditions.h */, + B577993D1C94DDB300B1BDC9 /* NSURL+FBAdditions.m */, + B577993F1C94DF1000B1BDC9 /* NSString+RelativePath.h */, + B57799401C94DF1000B1BDC9 /* NSString+RelativePath.m */, B574FDB918610DBF00668D86 /* NSObject+AssociatedObjects.h */, B574FDBA18610DBF00668D86 /* NSObject+AssociatedObjects.m */, B574FDBC18610E9B00668D86 /* NSDocument+FBAdditions.h */, @@ -715,6 +943,16 @@ 3AAF9DB818BAEBF9002B591F /* NSMenu+FBAdditions.m */, B50816BB1980F10E007AEDAF /* NSView+FBAdditions.h */, B50816BC1980F10E007AEDAF /* NSView+FBAdditions.m */, + B577995B1C94F29200B1BDC9 /* NSArray+FBAdditions.h */, + B577995C1C94F29200B1BDC9 /* NSArray+FBAdditions.m */, + B57799471C94EBB600B1BDC9 /* NSAppleEventDescriptor+FBAdditions.h */, + B57799481C94EBB600B1BDC9 /* NSAppleEventDescriptor+FBAdditions.m */, + B57799491C94EBB600B1BDC9 /* NSAppleScript+FBAdditions.h */, + B577994A1C94EBB600B1BDC9 /* NSAppleScript+FBAdditions.m */, + B577994B1C94EBB600B1BDC9 /* NSDate+FBAdditions.h */, + B577994C1C94EBB600B1BDC9 /* NSDate+FBAdditions.m */, + B5C32BE81C98AEC500E29020 /* NSDictionary+FBAdditions.h */, + B5C32BE91C98AEC500E29020 /* NSDictionary+FBAdditions.m */, B5BB6FEE1A1020AB005725C1 /* FBMutableOrderedDictionary.h */, B5BB6FEF1A1020AB005725C1 /* FBMutableOrderedDictionary.m */, 3AFA71081856776900A34E93 /* GRPHookMethod.h */, @@ -725,6 +963,7 @@ B59541B119E1F5F400B4FC3A /* FBDeviceViewController.h */, B59541B219E1F5F400B4FC3A /* FBDeviceViewController.m */, B59541B319E1F5F400B4FC3A /* FBDeviceViewController.xib */, + B57799001C94DD7700B1BDC9 /* SocketIO */, ); name = Other; sourceTree = ""; @@ -933,6 +1172,68 @@ name = "Pop Animation"; sourceTree = ""; }; + B57799001C94DD7700B1BDC9 /* SocketIO */ = { + isa = PBXGroup; + children = ( + B57799011C94DD7700B1BDC9 /* SBJson */, + B57799171C94DD7700B1BDC9 /* SocketIO.h */, + B57799181C94DD7700B1BDC9 /* SocketIO.m */, + B57799191C94DD7700B1BDC9 /* SocketIOJSONSerialization.h */, + B577991A1C94DD7700B1BDC9 /* SocketIOJSONSerialization.m */, + B577991B1C94DD7700B1BDC9 /* SocketIOPacket.h */, + B577991C1C94DD7700B1BDC9 /* SocketIOPacket.m */, + B577991D1C94DD7700B1BDC9 /* SocketIOTransport.h */, + B577991E1C94DD7700B1BDC9 /* SocketIOTransportWebsocket.h */, + B577991F1C94DD7700B1BDC9 /* SocketIOTransportWebsocket.m */, + B57799201C94DD7700B1BDC9 /* SocketIOTransportXHR.h */, + B57799211C94DD7700B1BDC9 /* SocketIOTransportXHR.m */, + B57799221C94DD7700B1BDC9 /* SocketRocket */, + ); + path = SocketIO; + sourceTree = ""; + }; + B57799011C94DD7700B1BDC9 /* SBJson */ = { + isa = PBXGroup; + children = ( + B57799021C94DD7700B1BDC9 /* SBJson.h */, + B57799031C94DD7700B1BDC9 /* SBJsonParser.h */, + B57799041C94DD7700B1BDC9 /* SBJsonParser.m */, + B57799051C94DD7700B1BDC9 /* SBJsonStreamParser.h */, + B57799061C94DD7700B1BDC9 /* SBJsonStreamParser.m */, + B57799071C94DD7700B1BDC9 /* SBJsonStreamParserAccumulator.h */, + B57799081C94DD7700B1BDC9 /* SBJsonStreamParserAccumulator.m */, + B57799091C94DD7700B1BDC9 /* SBJsonStreamParserAdapter.h */, + B577990A1C94DD7700B1BDC9 /* SBJsonStreamParserAdapter.m */, + B577990B1C94DD7700B1BDC9 /* SBJsonStreamParserState.h */, + B577990C1C94DD7700B1BDC9 /* SBJsonStreamParserState.m */, + B577990D1C94DD7700B1BDC9 /* SBJsonStreamTokeniser.h */, + B577990E1C94DD7700B1BDC9 /* SBJsonStreamTokeniser.m */, + B577990F1C94DD7700B1BDC9 /* SBJsonStreamWriter.h */, + B57799101C94DD7700B1BDC9 /* SBJsonStreamWriter.m */, + B57799111C94DD7700B1BDC9 /* SBJsonStreamWriterAccumulator.h */, + B57799121C94DD7700B1BDC9 /* SBJsonStreamWriterAccumulator.m */, + B57799131C94DD7700B1BDC9 /* SBJsonStreamWriterState.h */, + B57799141C94DD7700B1BDC9 /* SBJsonStreamWriterState.m */, + B57799151C94DD7700B1BDC9 /* SBJsonWriter.h */, + B57799161C94DD7700B1BDC9 /* SBJsonWriter.m */, + ); + path = SBJson; + sourceTree = ""; + }; + B57799221C94DD7700B1BDC9 /* SocketRocket */ = { + isa = PBXGroup; + children = ( + B57799231C94DD7700B1BDC9 /* base64.c */, + B57799241C94DD7700B1BDC9 /* base64.h */, + B57799251C94DD7700B1BDC9 /* NSData+SRB64Additions.h */, + B57799261C94DD7700B1BDC9 /* NSData+SRB64Additions.m */, + B57799271C94DD7700B1BDC9 /* SocketRocket-Prefix.pch */, + B57799281C94DD7700B1BDC9 /* SRWebSocket.h */, + B57799291C94DD7700B1BDC9 /* SRWebSocket.m */, + ); + path = SocketRocket; + sourceTree = ""; + }; B57D53081A2D280200B805D3 /* Code Export */ = { isa = PBXGroup; children = ( @@ -1064,14 +1365,18 @@ B5BB6FDB1A101FB6005725C1 /* FB3DOrientationPatch.xml in Resources */, B53EA60C18DD8B9500AD24A6 /* ShowSettings.tiff in Resources */, B53EA5E718DD888C00AD24A6 /* Stop@2x.tiff in Resources */, + B577998B1C954C1700B1BDC9 /* DHImageWithFormattedStrings.xml in Resources */, + B5C32BE31C98AB4A00E29020 /* DHStructureAllValuesPatch.xml in Resources */, B53EA5FF18DD8AE100AD24A6 /* Parent@2x.tiff in Resources */, B53EA5E318DD7DFF00AD24A6 /* SaveImage@2x.tiff in Resources */, B51CE8D91A9BC05D00E1C156 /* FBWirelessInPatch.xml in Resources */, B53EA61518DD8D2E00AD24A6 /* Patcherator@2x.tiff in Resources */, B5BB6FE11A101FB6005725C1 /* FBDeviceVibratePatch.xml in Resources */, + B577997F1C95029300B1BDC9 /* FBLogToConsole.xml in Resources */, B53EA63118DD9D3100AD24A6 /* DebugMode@2x.tiff in Resources */, B12469A11B0E84A30002AFEC /* coscript in Resources */, B51CE8DF1A9BC05D00E1C156 /* FBWirelessOutPatchUI.xib in Resources */, + B57799621C94F65D00B1BDC9 /* DHRESTRequestPatch.xml in Resources */, B53EA63218DD9D3100AD24A6 /* EditMode.tiff in Resources */, B5BB6FDD1A101FB6005725C1 /* FBDeviceInfoPatch.xml in Resources */, B53A9AC518F31B9A00B5E151 /* FBSafariToolbarController.xib in Resources */, @@ -1079,6 +1384,7 @@ B53EA60D18DD8B9500AD24A6 /* ShowSettings@2x.tiff in Resources */, B5B2E9F91A75B30300F93A75 /* FBOStructureCombinePatch.xml in Resources */, B53A9AD118F31E8600B5E151 /* FaviconGeneric.png in Resources */, + B57799981C963A0500B1BDC9 /* DHSoundPlayerProPatch.xml in Resources */, EC61DA18191C85B800E5443A /* POPDecayPatch.xml in Resources */, B53EA61018DD8BF100AD24A6 /* CreateVirtualMacro.tiff in Resources */, B53EA62618DD95CF00AD24A6 /* ZoomToFit@2x.tiff in Resources */, @@ -1090,23 +1396,29 @@ B53EA60918DD8B8400AD24A6 /* Viewer@2x.tiff in Resources */, B53A9ACF18F31E8600B5E151 /* FaviconFacebook.png in Resources */, B52C925E1975D7F100AB5A6D /* FBDragAndDropPatch.xml in Resources */, + B5C32BE11C98AB4A00E29020 /* DHStructureAllKeysPatch.xml in Resources */, + B57799461C94EB1400B1BDC9 /* DHAppleScriptPatch.xml in Resources */, B53A9AE018F32B6800B5E151 /* FBRGBToHex.xml in Resources */, B548D75C196CB12600A7C0B9 /* FBODelayPatch.xml in Resources */, B59692501A315E5D00FD991A /* FBOStructureCreatorPatch.xml in Resources */, B12469A31B0F92F50002AFEC /* Export for Origami.js in Resources */, B51CE8DB1A9BC05D00E1C156 /* FBWirelessInPatchUI.xib in Resources */, + B577995A1C94F03800B1BDC9 /* DHImageAtURLPatch.xml in Resources */, B53A9AD418F31E8600B5E151 /* RefreshIcon@2x.png in Resources */, D9DC9CEF19205EAE006B8241 /* FBOLiveFilePatchUI.xib in Resources */, B53EA62218DD95CF00AD24A6 /* ZoomOut@2x.tiff in Resources */, + B5C32BE71C98AB4A00E29020 /* DHStructurePathMemberPatch.xml in Resources */, B12469A51B0F9C560002AFEC /* Export for Origami.sketchplugin in Resources */, B5D88F9418E0A6F200CFBB7D /* FBOMultiSwitchPatch.xml in Resources */, B5EA16A118CE4F6800A561A4 /* FBOLayerGroup.xml in Resources */, B5BB6FDF1A101FB6005725C1 /* FBDeviceRendererPatch.xml in Resources */, B53EA63318DD9D3100AD24A6 /* EditMode@2x.tiff in Resources */, + B577997D1C95029300B1BDC9 /* FBStructureShuffle.xml in Resources */, B53EA5F218DD891000AD24A6 /* Present.tiff in Resources */, B54831E6186410B4000D2B2A /* OrigamiMenubar-normal.png in Resources */, B51CE8EA1A9BC0F600E1C156 /* Broadcast4x.png in Resources */, B53A9ADE18F32B6800B5E151 /* FBHexToRGB.xml in Resources */, + B57799791C95029300B1BDC9 /* FBFileUpdated.xml in Resources */, B53A9AC118F31B9A00B5E151 /* FBSafariTheme.xml in Resources */, B59541B519E1F5F400B4FC3A /* FBDeviceViewController.xib in Resources */, B53EA63518DD9D3100AD24A6 /* PerformanceMode@2x.tiff in Resources */, @@ -1118,6 +1430,7 @@ B53EA60418DD8B6E00AD24A6 /* Parameters.tiff in Resources */, B53EA62518DD95CF00AD24A6 /* ZoomToFit.tiff in Resources */, B54A5817196393F6004BB2D6 /* POPConverterPatch.xml in Resources */, + B57799861C954C0F00B1BDC9 /* DHStringFormatterPatch.xml in Resources */, B53EA5DC18DD7BC500AD24A6 /* InputParameters.tiff in Resources */, B53A9AD318F31E8600B5E151 /* RefreshIcon.png in Resources */, B53EA63718DD9D3100AD24A6 /* ProfileMode@2x.tiff in Resources */, @@ -1125,6 +1438,7 @@ D9DC9CF8192070EB006B8241 /* FBOLiveFilePatch.xml in Resources */, B53EA63018DD9D3100AD24A6 /* DebugMode.tiff in Resources */, B53EA5D418DD7AC600AD24A6 /* Run.tiff in Resources */, + B57799961C963A0500B1BDC9 /* DHStringAtURLPatch.xml in Resources */, B50F45AB18F9FB92005548DF /* FBCursorPatch.xml in Resources */, B59687C51BADEC72007682C7 /* FBLastValue.xml in Resources */, B545A8181ABA429B00D475A5 /* FBStopWatchPatch.xml in Resources */, @@ -1138,21 +1452,25 @@ B53EA63618DD9D3100AD24A6 /* ProfileMode.tiff in Resources */, B53EA63418DD9D3100AD24A6 /* PerformanceMode.tiff in Resources */, B53EA5FE18DD8AE100AD24A6 /* Parent.tiff in Resources */, + B57799811C95029300B1BDC9 /* FBFPS.xml in Resources */, 3A9D3DF718C1211C0021812A /* FBOInteractionPatch.xml in Resources */, B53EA61418DD8D2E00AD24A6 /* Patcherator.tiff in Resources */, B5B1D6C01A5C693D006E7A6A /* TabsIcon@2x.png in Resources */, B5B4A3F71919A96F0044C3ED /* FBOProgressPatch.xml in Resources */, B53EA60118DD8AE100AD24A6 /* Inspector@2x.tiff in Resources */, B53EA5EF18DD88F800AD24A6 /* Editor@2x.tiff in Resources */, + B5C32BE51C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.xml in Resources */, B53EA61118DD8BF100AD24A6 /* CreateVirtualMacro@2x.tiff in Resources */, B51CE8E91A9BC0F600E1C156 /* Broadcast1x.png in Resources */, 1A7A712918D7CBE80008D05A /* FBOMultiSwitchPatchUI.xib in Resources */, B596FE041A86D49500C1D132 /* FBViewerDimensionsPatch.xml in Resources */, B53EA5FD18DD8AE100AD24A6 /* Macro@2x.tiff in Resources */, + B577997B1C95029300B1BDC9 /* FBDescriptionPatch.xml in Resources */, B53EA5FC18DD8AE100AD24A6 /* Macro.tiff in Resources */, 3A9D3E0318C3FD8A0021812A /* Origami.icns in Resources */, B53EA61F18DD95CF00AD24A6 /* ZoomIn.tiff in Resources */, B53A9AD218F31E8600B5E151 /* FaviconGeneric@2x.png in Resources */, + B57798FF1C94DB5000B1BDC9 /* DHJSONImporterPatch.xml in Resources */, B53EA62118DD95CF00AD24A6 /* ZoomOut.tiff in Resources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1183,6 +1501,7 @@ files = ( 3A63EDCF1A13BF0300298D20 /* FBOrigamiAdditions+StructureIterator.m in Sources */, B160AAEC1AAA0778004AB107 /* FBOrigamiAdditions+FileCreation.m in Sources */, + B577992E1C94DD7700B1BDC9 /* SBJsonStreamParserState.m in Sources */, B574FDBE18610E9B00668D86 /* NSDocument+FBAdditions.m in Sources */, B5741F271A8856CA00C621F7 /* FBOrigamiAdditions+Tooltips.m in Sources */, B51CE8D71A9BC05D00E1C156 /* FBWirelessController.m in Sources */, @@ -1190,26 +1509,35 @@ B5B2E9F61A75AF9400F93A75 /* FBOStructureCombinePatch.m in Sources */, 1A7A712618D7CBE80008D05A /* FBODynamicPortsPatch.m in Sources */, B51CE8E21A9BC07200E1C156 /* FBOrigamiAdditions+Wireless.m in Sources */, + B57799851C954C0F00B1BDC9 /* DHStringFormatterPatch.m in Sources */, + B577994F1C94EBB600B1BDC9 /* NSDate+FBAdditions.m in Sources */, 3AFA71041856768800A34E93 /* FBOrigamiAdditions+Mavericks.m in Sources */, F1481793089E5FE3006FD276 /* FBOrigamiPrincipal.m in Sources */, B5BB6FDE1A101FB6005725C1 /* FBDeviceRendererPatch.m in Sources */, + B57798FE1C94DB5000B1BDC9 /* DHJSONImporterPatch.m in Sources */, B53A9ABF18F31B9A00B5E151 /* FBSafariSegmentedCell.m in Sources */, B5BB6FDC1A101FB6005725C1 /* FBDeviceInfoPatch.m in Sources */, B50816B3198060F1007AEDAF /* FBOrigamiAdditions+InlineValues.m in Sources */, B5EE0034198A2FAB003DDFE6 /* FBOrigamiAdditions+WindowManagement.m in Sources */, + B577997E1C95029300B1BDC9 /* FBLogToConsole.m in Sources */, B574FDC11861130100668D86 /* FBOrigamiAdditions+DimDisabledConsumers.m in Sources */, + B57799451C94EB1400B1BDC9 /* DHAppleScriptPatch.m in Sources */, + B57799321C94DD7700B1BDC9 /* SBJsonStreamWriterState.m in Sources */, B54831DE186385DD000D2B2A /* FBOInteractionController.m in Sources */, B548D75A196C897900A7C0B9 /* FBODelayPatch.m in Sources */, B52C92611975D80000AB5A6D /* QCView+DragAndDrop.m in Sources */, 1A7A712818D7CBE80008D05A /* FBOMultiSwitchPatchUI.m in Sources */, B5FB9D0719E3DB060059028E /* FBDeviceToolbarButton.m in Sources */, + B577997A1C95029300B1BDC9 /* FBDescriptionPatch.m in Sources */, D9DC9D0219209DC0006B8241 /* CDEvent.m in Sources */, B516A2701A16A161009CD3E4 /* FBTextObject.m in Sources */, B53A9AC018F31B9A00B5E151 /* FBSafariTheme.m in Sources */, B54A58151963923F004BB2D6 /* POPConverterPatch.m in Sources */, + B57799611C94F65D00B1BDC9 /* DHRESTRequestPatch.m in Sources */, B5F6D89819624A450057BA6E /* FBOMouseScrollPatch.m in Sources */, B545A8171ABA429B00D475A5 /* FBStopWatchPatch.m in Sources */, EC61DA17191C85B800E5443A /* POPDecayPatch.mm in Sources */, + B57799301C94DD7700B1BDC9 /* SBJsonStreamWriter.m in Sources */, 3AF2FE3218C4210F00CF372C /* FBOrigamiAdditions+LinearPortConnections.m in Sources */, D9DC9CF51920618B006B8241 /* FBOLiveFilePatch.m in Sources */, B51CE8DC1A9BC05D00E1C156 /* FBWirelessOutPatch.m in Sources */, @@ -1218,12 +1546,15 @@ B50277531A7C93240023F1A2 /* FBOrigamiAdditions+KeyboardShortcuts.m in Sources */, B574FDB818610CFD00668D86 /* QCPatch+FBAdditions.m in Sources */, B56DC46718C10E8700BE6BB6 /* FBOrigamiAdditions+RenderInImage.m in Sources */, + B5C32BE01C98AB4A00E29020 /* DHStructureAllKeysPatch.m in Sources */, B5BB6FED1A102083005725C1 /* PTUSBHub.m in Sources */, 3A41C9CB1859100500141593 /* NSObject+FBAdditions.m in Sources */, B574FDC41861159D00668D86 /* FBOrigamiAdditions+TextFieldShortcuts.m in Sources */, 3AACD304185933AE0040742B /* NSString+FBAdditions.m in Sources */, B50816B4198060F1007AEDAF /* FBPatchView.m in Sources */, B5BB6FDA1A101FB6005725C1 /* FB3DOrientationPatch.m in Sources */, + B57799351C94DD7700B1BDC9 /* SocketIOJSONSerialization.m in Sources */, + B5C32BE41C98AB4A00E29020 /* DHStructureMultiplePathMembersPatch.m in Sources */, D9DC9D0119209DC0006B8241 /* CDEvents.m in Sources */, B50816BD1980F10E007AEDAF /* NSView+FBAdditions.m in Sources */, B5BB6FEC1A102083005725C1 /* PTProtocol.m in Sources */, @@ -1231,41 +1562,72 @@ B596FE031A86D49500C1D132 /* FBViewerDimensionsPatch.m in Sources */, B52C925D1975D7F100AB5A6D /* FBDragAndDropPatch.m in Sources */, B51CE8DE1A9BC05D00E1C156 /* FBWirelessOutPatchUI.m in Sources */, + B577992A1C94DD7700B1BDC9 /* SBJsonParser.m in Sources */, 3AFA71071856771A00A34E93 /* FBOrigamiAdditions.m in Sources */, B574FDB518610CEE00668D86 /* QCPatchView+FBAdditions.m in Sources */, + B57799311C94DD7700B1BDC9 /* SBJsonStreamWriterAccumulator.m in Sources */, + B577994E1C94EBB600B1BDC9 /* NSAppleScript+FBAdditions.m in Sources */, B53A9AC418F31B9A00B5E151 /* FBSafariToolbarController.m in Sources */, B53A9ADD18F32B6800B5E151 /* FBHexToRGB.m in Sources */, + B57799781C95029300B1BDC9 /* FBFileUpdated.m in Sources */, B574FDBB18610DBF00668D86 /* NSObject+AssociatedObjects.m in Sources */, 3AAF9DB918BAEBF9002B591F /* NSMenu+FBAdditions.m in Sources */, + B577995D1C94F29200B1BDC9 /* NSArray+FBAdditions.m in Sources */, + B5C32BEA1C98AEC500E29020 /* NSDictionary+FBAdditions.m in Sources */, + B577997C1C95029300B1BDC9 /* FBStructureShuffle.m in Sources */, B54831E11863898E000D2B2A /* NSObject+FBNoArcAdditons.m in Sources */, + B57799391C94DD7700B1BDC9 /* base64.c in Sources */, B593F0A61A2737DF003C664A /* FBOrigamiAdditions+CodeExport.m in Sources */, B574FDAF1861099400668D86 /* FBOrigamiAdditions+DragAndDrop.m in Sources */, + B577993E1C94DDB300B1BDC9 /* NSURL+FBAdditions.m in Sources */, B52C92641975D93000AB5A6D /* QCView+FBAdditions.m in Sources */, + B577998A1C954C1700B1BDC9 /* DHImageWithFormattedStrings.m in Sources */, + B57799801C95029300B1BDC9 /* FBFPS.m in Sources */, + B577992C1C94DD7700B1BDC9 /* SBJsonStreamParserAccumulator.m in Sources */, B51CE8D81A9BC05D00E1C156 /* FBWirelessInPatch.m in Sources */, + B577992F1C94DD7700B1BDC9 /* SBJsonStreamTokeniser.m in Sources */, B5BB6FEB1A102083005725C1 /* PTChannel.m in Sources */, + B577998E1C954DAF00B1BDC9 /* NSColor+HTMLExtensions.m in Sources */, + B57799361C94DD7700B1BDC9 /* SocketIOPacket.m in Sources */, + B57799341C94DD7700B1BDC9 /* SocketIO.m in Sources */, B5BB6FF61A102146005725C1 /* FBHashValue.m in Sources */, + B5C32BE21C98AB4A00E29020 /* DHStructureAllValuesPatch.m in Sources */, + B577994D1C94EBB600B1BDC9 /* NSAppleEventDescriptor+FBAdditions.m in Sources */, B53A9ADF18F32B6800B5E151 /* FBRGBToHex.m in Sources */, + B57799651C94F72000B1BDC9 /* DHRESTRequest.m in Sources */, + B577993B1C94DD7700B1BDC9 /* SRWebSocket.m in Sources */, B5BB6FD91A101FB6005725C1 /* BWDeviceInfoReceiver.m in Sources */, 1A7A712718D7CBE80008D05A /* FBOMultiSwitchPatch.m in Sources */, + B57799411C94DF1000B1BDC9 /* NSString+RelativePath.m in Sources */, B54831BB18627462000D2B2A /* FBOrigamiAdditions+Retina.m in Sources */, B5D764421A30FEBF0054F72F /* FBOStructureCreatorPatchUI.m in Sources */, + B577992D1C94DD7700B1BDC9 /* SBJsonStreamParserAdapter.m in Sources */, EC9AA2E0191B0C2C00F2209F /* POPBouncyPatch.mm in Sources */, + B577993A1C94DD7700B1BDC9 /* NSData+SRB64Additions.m in Sources */, B5D7643F1A30FD9A0054F72F /* FBOStructureCreatorPatch.m in Sources */, + B5C32BE61C98AB4A00E29020 /* DHStructurePathMemberPatch.m in Sources */, + B57799591C94F03800B1BDC9 /* DHImageAtURLPatch.m in Sources */, 3A9D3E0118C134E20021812A /* FBOrigamiAdditions+Preferences.m in Sources */, D9DC9CF219205ED7006B8241 /* FBOLiveFilePatchUI.m in Sources */, B59541B419E1F5F400B4FC3A /* FBDeviceViewController.m in Sources */, B5BB6FE01A101FB6005725C1 /* FBDeviceVibratePatch.m in Sources */, B59687C41BADEC72007682C7 /* FBLastValue.m in Sources */, B5EA169E18CE4E8200A561A4 /* FBOLayerGroup.m in Sources */, + B57799991C963A0500B1BDC9 /* DHSoundPlayerProPatch.m in Sources */, + B57799371C94DD7700B1BDC9 /* SocketIOTransportWebsocket.m in Sources */, + B57799331C94DD7700B1BDC9 /* SBJsonWriter.m in Sources */, B53A9AC218F31B9A00B5E151 /* FBSafariThemeButtons.m in Sources */, B5BB6FF31A1020DD005725C1 /* QCImage+FBAdditions.m in Sources */, B574FDA91861080400668D86 /* FBOrigamiAdditions+PluginLoading.m in Sources */, B50F45AA18F9FB92005548DF /* FBCursorPatch.m in Sources */, + B57799971C963A0500B1BDC9 /* DHStringAtURLPatch.m in Sources */, B5BB6FF01A1020AB005725C1 /* FBMutableOrderedDictionary.m in Sources */, B50277561A7C9F6B0023F1A2 /* FBOrigamiAdditions+PatchMenu.m in Sources */, B574FDB218610AD200668D86 /* QCPort+FBAdditions.m in Sources */, B574FDCA1861289E00668D86 /* FBOrigamiAdditions+WindowMods.m in Sources */, B54831D9186384B5000D2B2A /* FBOInteractionPatch.m in Sources */, + B577992B1C94DD7700B1BDC9 /* SBJsonStreamParser.m in Sources */, + B57799381C94DD7700B1BDC9 /* SocketIOTransportXHR.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/Origami Plugin/FBOrigamiAdditions+Stats.h b/Origami Plugin/FBOrigamiAdditions+Stats.h new file mode 100644 index 0000000..c6aefbe --- /dev/null +++ b/Origami Plugin/FBOrigamiAdditions+Stats.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +// An anonymous count of the amount of people who use Origami every day. + +#import "FBOrigamiAdditions.h" + +@interface FBOrigamiAdditions (Stats) + +- (void)origamiDidLoad; + +@end diff --git a/Origami Plugin/FBOrigamiAdditions+Stats.m b/Origami Plugin/FBOrigamiAdditions+Stats.m new file mode 100644 index 0000000..9a6bf0f --- /dev/null +++ b/Origami Plugin/FBOrigamiAdditions+Stats.m @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +// An anonymous count of the amount of people who use Origami every day. + +#import "FBOrigamiAdditions+Stats.h" + +#define ORIGAMI_STATS_ENDPOINT @"https://origami-stats.herokuapp.com/track/origami" +#define ORIGAMI_STATS_API_KEY @"nveJ23MnX/1xo+ZcVyVBAOv0pqq2x+FJq5BzFaN3gmY=" +#define ORIGAMI_IID_KEY @"OrigamiIID" + +@implementation FBOrigamiAdditions (Stats) + +- (void)origamiDidLoad { + [self trackEvent:@"dau"]; +} + +- (void)trackEvent:(NSString *)eventName { + NSString *ep = [ORIGAMI_STATS_ENDPOINT stringByAppendingPathComponent:eventName]; + NSURL *url = [NSURL URLWithString:ep]; + + NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url]; + + request.HTTPMethod = @"POST"; + NSDictionary *data = @{ @"iid": [self installationID], + @"os_version": [[NSProcessInfo processInfo] operatingSystemVersionString], + @"qc_version": [self qcVersionNumber], + @"origami_version": [[FBOrigamiAdditions origamiBundle] objectForInfoDictionaryKey:@"CFBundleShortVersionString"] + }; + NSError *error; + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data options:0 error:&error]; + if (jsonData){ + [request setValue:@"application/json" forHTTPHeaderField:@"Accept"]; + [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"]; + [request setValue:ORIGAMI_STATS_API_KEY forHTTPHeaderField:@"X-OGS-API-KEY"]; + + [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[jsonData length]] forHTTPHeaderField:@"Content-Length"]; + [request setHTTPBody: jsonData]; + [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:nil]; + } +} + +- (NSString *)installationID { + NSString *iid = [[NSUserDefaults standardUserDefaults] objectForKey:ORIGAMI_IID_KEY]; + if (!iid) { + iid = [[NSUUID UUID] UUIDString]; + [[NSUserDefaults standardUserDefaults] setObject:iid forKey:ORIGAMI_IID_KEY]; + [[NSUserDefaults standardUserDefaults] synchronize]; + } + return iid; +} + +@end diff --git a/Origami Plugin/FBOrigamiPrincipal.m b/Origami Plugin/FBOrigamiPrincipal.m index 80adee7..14487ba 100755 --- a/Origami Plugin/FBOrigamiPrincipal.m +++ b/Origami Plugin/FBOrigamiPrincipal.m @@ -38,6 +38,23 @@ #import "FBWirelessOutPatch.h" #import "FBStopWatchPatch.h" #import "FBLastValue.h" +#import "DHJSONImporterPatch.h" +#import "DHAppleScriptPatch.h" +#import "DHImageAtURLPatch.h" +#import "DHRestRequestPatch.h" +#import "FBFileUpdated.h" +#import "FBDescriptionPatch.h" +#import "FBStructureShuffle.h" +#import "FBLogToConsole.h" +#import "FBFPS.h" +#import "DHImageWithFormattedStrings.h" +#import "DHStringFormatterPatch.h" +#import "DHStringAtURLPatch.h" +#import "DHSoundPlayerProPatch.h" +#import "DHStructureAllKeysPatch.h" +#import "DHStructureAllValuesPatch.h" +#import "DHStructureMultiplePathMembersPatch.h" +#import "DHStructurePathMemberPatch.h" @implementation FBOrigamiPrincipal @@ -69,7 +86,23 @@ + (void)registerNodesWithManager:(QCNodeManager*)manager { KIRegisterPatch(FBWirelessOutPatch); KIRegisterPatch(FBStopWatchPatch); KIRegisterPatch(FBLastValue); - + KIRegisterPatch(DHJSONImporterPatch); + KIRegisterPatch(DHAppleScriptPatch); + KIRegisterPatch(DHImageAtURLPatch); + KIRegisterPatch(DHRESTRequestPatch); + KIRegisterPatch(FBFileUpdated); + KIRegisterPatch(FBDescriptionPatch); + KIRegisterPatch(FBStructureShuffle); + KIRegisterPatch(FBLogToConsole); + KIRegisterPatch(FBFPS); + KIRegisterPatch(DHImageWithFormattedStrings); + KIRegisterPatch(DHStringFormatterPatch); + KIRegisterPatch(DHStringAtURLPatch); + KIRegisterPatch(DHSoundPlayerProPatch); + KIRegisterPatch(DHStructureAllKeysPatch); + KIRegisterPatch(DHStructureAllValuesPatch); + KIRegisterPatch(DHStructureMultiplePathMembersPatch); + KIRegisterPatch(DHStructurePathMemberPatch); [[FBOrigamiAdditions sharedAdditions] initialSetup]; [[BWDeviceInfoReceiver sharedReceiver] initialSetup]; diff --git a/Origami Plugin/FBStructureShuffle.h b/Origami Plugin/FBStructureShuffle.h new file mode 100644 index 0000000..8a672c2 --- /dev/null +++ b/Origami Plugin/FBStructureShuffle.h @@ -0,0 +1,18 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface FBStructureShuffle : QCPatch { + QCStructurePort *inputStructure; + QCBooleanPort *inputShuffleSignal; + QCStructurePort *outputStructure; +} + +@end diff --git a/Origami Plugin/FBStructureShuffle.m b/Origami Plugin/FBStructureShuffle.m new file mode 100644 index 0000000..c88d607 --- /dev/null +++ b/Origami Plugin/FBStructureShuffle.m @@ -0,0 +1,48 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "FBStructureShuffle.h" + +@implementation FBStructureShuffle + ++ (BOOL)allowsSubpatchesWithIdentifier:(id)fp8 +{ + return NO; +} + ++ (QCPatchExecutionMode)executionModeWithIdentifier:(id)fp8 +{ + return kQCPatchExecutionModeProcessor; +} + ++ (QCPatchTimeMode)timeModeWithIdentifier:(id)fp8 +{ + return kQCPatchTimeModeNone; +} + +- (BOOL)execute:(QCOpenGLContext *)context time:(double)time arguments:(NSDictionary *)arguments { + BOOL leadingEdge = [inputShuffleSignal wasUpdated] && [inputShuffleSignal booleanValue] == YES; + + if (leadingEdge || [inputStructure wasUpdated]) { + NSArray *array = [[inputStructure structureValue] arrayRepresentation]; + + NSMutableArray *mutableArray = [array mutableCopy]; + + for (NSUInteger i = array.count; i > 1; i--) { + NSUInteger j = arc4random_uniform(i); + [mutableArray exchangeObjectAtIndex:i-1 withObjectAtIndex:j]; + } + + [outputStructure setStructureValue:[[QCStructure alloc] initWithArray:mutableArray]]; + } + + return YES; +} + +@end diff --git a/Origami Plugin/FBStructureShuffle.xml b/Origami Plugin/FBStructureShuffle.xml new file mode 100755 index 0000000..d85b47a --- /dev/null +++ b/Origami Plugin/FBStructureShuffle.xml @@ -0,0 +1,56 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch takes an indexed structure and outputs a structure with each member in a random position. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + Structure Shuffle + + inputAttributes + + inputStructure + + description + Structure to be shuffled + name + Structure + + inputShuffleSignal + + description + Shuffles on the leading edge of the signal + name + Shuffle Signal + + + outputAttributes + + outputStructure + + description + Shuffled structure + name + Structure + + + + \ No newline at end of file diff --git a/Origami Plugin/Info.plist b/Origami Plugin/Info.plist index aac6ab9..b514587 100755 --- a/Origami Plugin/Info.plist +++ b/Origami Plugin/Info.plist @@ -17,9 +17,9 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 2.1.3 + 2.2 CFBundleVersion - 14 + 16 GFPlugIn NSHumanReadableCopyright diff --git a/Origami Plugin/NSAppleEventDescriptor+FBAdditions.h b/Origami Plugin/NSAppleEventDescriptor+FBAdditions.h new file mode 100644 index 0000000..6045f1f --- /dev/null +++ b/Origami Plugin/NSAppleEventDescriptor+FBAdditions.h @@ -0,0 +1,14 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface NSAppleEventDescriptor (FBAdditions) +- (id)objectValue; +@end diff --git a/Origami Plugin/NSAppleEventDescriptor+FBAdditions.m b/Origami Plugin/NSAppleEventDescriptor+FBAdditions.m new file mode 100644 index 0000000..cc41d17 --- /dev/null +++ b/Origami Plugin/NSAppleEventDescriptor+FBAdditions.m @@ -0,0 +1,83 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "NSAppleEventDescriptor+FBAdditions.h" +#import "NSDate+FBAdditions.h" +#import "NSURL+FBAdditions.h" + +static NSString *NSAppleScriptDescriptorTypeBooleanTrue = @"'true'"; +static NSString *NSAppleScriptDescriptorTypeBooleanFalse = @"'fals'"; +static NSString *NSAppleScriptDescriptorTypeString = @"'utxt'"; +static NSString *NSAppleScriptDescriptorTypeEnum = @"'enum'"; +static NSString *NSAppleScriptDescriptorTypeDouble = @"'doub'"; +static NSString *NSAppleScriptDescriptorTypeLong = @"'long'"; +static NSString *NSAppleScriptDescriptorTypeTIFFImage = @"'TIFF'"; +static NSString *NSAppleScriptDescriptorTypeJPEGImage = @"'JPEG'"; +static NSString *NSAppleScriptDescriptorTypeTDTAImage = @"'tdta'"; +static NSString *NSAppleScriptDescriptorTypeNull = @"'null'"; +static NSString *NSAppleScriptDescriptorTypeObject = @"'obj '"; +static NSString *NSAppleScriptDescriptorTypeList = @"'list'"; +static NSString *NSAppleScriptDescriptorTypeRecord = @"'reco'"; +static NSString *NSAppleScriptDescriptorTypeAlias = @"'alis'"; +static NSString *NSAppleScriptDescriptorTypeDate = @"'ldt '"; + +@implementation NSAppleEventDescriptor (DHTools) + +- (id)objectValue { + DescType descriptorTypeCode = [self descriptorType]; + + if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeNull)) { + return [NSNull null]; + + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeBooleanTrue)) { + return @(YES); + + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeBooleanFalse)) { + return @(NO); + + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeString) || + descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeEnum)) { + return self.stringValue; + + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeDouble) || + descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeLong)) { + return [NSNumber numberWithDouble:[self.stringValue doubleValue]]; + + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeTIFFImage) || + descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeTDTAImage) || + descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeJPEGImage)) { + NSData *imageData = self.data; + return imageData ? [[NSImage alloc] initWithData:self.data] : nil; + + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeObject)) { + return self.description; + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeAlias)) { + return [NSURL URLWithEventDescriptor:self]; + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeDate)) { + return [NSDate dateWithEventDescriptor:self]; + } else if (descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeList) || + descriptorTypeCode == NSHFSTypeCodeFromFileType(NSAppleScriptDescriptorTypeRecord)) { + NSUInteger numberOfItems = self.numberOfItems; + NSMutableArray *array = [NSMutableArray arrayWithCapacity:numberOfItems]; + NSUInteger index; + for (index = 1; index < (numberOfItems + 1); index++) { + id object = [self descriptorAtIndex:index].objectValue; + if (!object) { + object = [NSNull null]; + } + [array addObject:object]; + } + return array; + } else { + NSLog(@"Unkown Type: %@", NSFileTypeForHFSTypeCode(descriptorTypeCode)); + return self.stringValue; + } +} + +@end diff --git a/Origami Plugin/NSAppleScript+FBAdditions.h b/Origami Plugin/NSAppleScript+FBAdditions.h new file mode 100644 index 0000000..e351b58 --- /dev/null +++ b/Origami Plugin/NSAppleScript+FBAdditions.h @@ -0,0 +1,20 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface NSAppleScript (FBAdditions) ++ (NSString *)runScript:(NSString *)script; ++ (id)runScript:(NSString *)script error:(NSString **)error; ++ (NSString *)runScript:(NSString *)script inApplication:(NSString *)applicationName; +@end + +static id RunAppleScript(NSString *application, NSString *script) { + return [NSAppleScript runScript:script inApplication:application]; +} diff --git a/Origami Plugin/NSAppleScript+FBAdditions.m b/Origami Plugin/NSAppleScript+FBAdditions.m new file mode 100644 index 0000000..829ca37 --- /dev/null +++ b/Origami Plugin/NSAppleScript+FBAdditions.m @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "NSAppleScript+FBAdditions.h" +#import "NSAppleEventDescriptor+FBAdditions.h" + +@implementation NSAppleScript (FBAdditions) + ++ (id)runScript:(NSString *)script { + NSString *error = nil; + id result = [NSAppleScript runScript:script error:&error]; + if (error) { + NSLog(@"AppleScript Error: %@", error.description); + return nil; + } + return result; +} + ++ (id)runScript:(NSString *)script error:(NSString **)error { + NSAppleScript *appleScript = [[NSAppleScript alloc] initWithSource:script]; + + NSDictionary *errors = nil; + NSAppleEventDescriptor *eventDescriptor = [appleScript executeAndReturnError:&errors]; + + if (errors) { + if (error) { + *error = errors.description; + } + return nil; + } + + return eventDescriptor.objectValue; +} + ++ (id)runScript:(NSString *)script inApplication:(NSString *)applicationName { + return [NSAppleScript runScript:[NSString stringWithFormat:@"tell application \"%@\" to %@", applicationName, script]]; +} + +@end diff --git a/Origami Plugin/NSArray+FBAdditions.h b/Origami Plugin/NSArray+FBAdditions.h new file mode 100644 index 0000000..59261f4 --- /dev/null +++ b/Origami Plugin/NSArray+FBAdditions.h @@ -0,0 +1,16 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface NSArray (FBAdditions) + +- (NSArray *)sortedArrayUsingAlphabeticalSort; + +@end diff --git a/Origami Plugin/NSArray+FBAdditions.m b/Origami Plugin/NSArray+FBAdditions.m new file mode 100644 index 0000000..9abd434 --- /dev/null +++ b/Origami Plugin/NSArray+FBAdditions.m @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "NSArray+FBAdditions.h" + +@implementation NSArray (FBAdditions) + +id _bestRepresentationForKey(id key) { + if ([key isKindOfClass:[NSString class]]) { + NSNumber *numberRepresentation = [NSNumber numberWithInteger:[key integerValue]]; + if ([key isEqualToString:[numberRepresentation stringValue]]) { + return numberRepresentation; + } + } + + return key; +} + +- (NSArray *)sortedArrayUsingAlphabeticalSort { + return [self sortedArrayUsingComparator:^NSComparisonResult(id a, id b) { + a = _bestRepresentationForKey(a); + b = _bestRepresentationForKey(b); + + if ([a isKindOfClass:[NSString class]] && [b isKindOfClass:[NSString class]]) { + return [a caseInsensitiveCompare:b]; + } else if ([a isKindOfClass:[NSNumber class]] && [b isKindOfClass:[NSNumber class]]) { + return [a compare:b]; + } else if ([a isKindOfClass:[NSNumber class]] && [b isKindOfClass:[NSString class]]) { + return [[a stringValue] caseInsensitiveCompare:b]; + } else if ([a isKindOfClass:[NSString class]] && [b isKindOfClass:[NSNumber class]]) { + return [a caseInsensitiveCompare:[b stringValue]]; + } else { + return NSOrderedSame; + } + }]; +} + +@end diff --git a/Origami Plugin/NSColor+HTMLExtensions.h b/Origami Plugin/NSColor+HTMLExtensions.h new file mode 100644 index 0000000..9f24c46 --- /dev/null +++ b/Origami Plugin/NSColor+HTMLExtensions.h @@ -0,0 +1,16 @@ +// +// NSColor+HTMLExtensions.h +// DHTools +// +// Created by Drew Hamlin on 4/18/13. +// +// + +#import + +@interface NSColor (HTMLExtensions) + ++ (NSColor *)colorWithHexString:(NSString *)hexString; +- (NSString *)hexStringRepresentation; + +@end diff --git a/Origami Plugin/NSColor+HTMLExtensions.m b/Origami Plugin/NSColor+HTMLExtensions.m new file mode 100644 index 0000000..b3f368c --- /dev/null +++ b/Origami Plugin/NSColor+HTMLExtensions.m @@ -0,0 +1,72 @@ +// +// NSColor+HTMLExtensions.m +// DHTools +// +// Created by Drew Hamlin on 4/18/13. +// +// + +#import "NSColor+HTMLExtensions.h" + +@implementation NSColor (HTMLExtensions) + ++ (NSColor *)colorWithHexString:(NSString *)hexString { + if ([hexString hasPrefix:@"#"]) { + hexString = [hexString substringFromIndex:1]; + } + + BOOL shorthand = (hexString.length == 3); + NSInteger charactersToRead = shorthand ? 1: 2; + + NSMutableArray *values = [NSMutableArray arrayWithCapacity:3]; + NSInteger start = 0; + while (start < hexString.length) { + NSString *substring = [hexString substringWithRange:NSMakeRange(start, charactersToRead)]; + if (shorthand) { + substring = [substring stringByAppendingString:substring]; + } + NSScanner *substringScanner = [NSScanner scannerWithString:substring]; + unsigned int result; + [substringScanner scanHexInt:&result]; + [values addObject:@(result)]; + start += charactersToRead; + } + + if (values.count < 3) { + return [NSColor whiteColor]; + } + + CGFloat red = [[values objectAtIndex:0] doubleValue], green = [[values objectAtIndex:1] doubleValue], blue = [[values objectAtIndex:2] doubleValue]; + NSColor *color = [NSColor colorWithCalibratedRed:(red / 255.0) green:(green / 255.0) blue:(blue / 255.0) alpha:1.0]; + return color; +} + +- (NSString *)hexStringRepresentation { + NSColor *rgb = [self colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; + CGFloat redf, greenf, bluef, alphaf; + [rgb getRed:&redf green:&greenf blue:&bluef alpha:&alphaf]; + int red = (int)round(redf * 255), green = (int)round(greenf * 255), blue = (int)round(bluef * 255); + NSString *alpha = [NSString stringWithFormat:@"%.2f", alphaf]; + + if (NO && (1.0 - alphaf) >= 0.000001) { + return [NSString stringWithFormat:@"rgba(%d, %d, %d, %@)", red, green, blue, alpha]; + + } else { + NSArray *intValues = @[@(red), @(green), @(blue)]; + NSMutableArray *hexValues = [NSMutableArray arrayWithCapacity:3]; + NSMutableArray *shorthandHexValues = [NSMutableArray arrayWithCapacity:3]; + + BOOL shorthand = YES; + for (NSNumber *value in intValues) { + NSString *hex = [NSString stringWithFormat:@"%02x", [value intValue]]; + shorthand &= [hex characterAtIndex:0] == [hex characterAtIndex:1]; + [hexValues addObject:hex]; + [shorthandHexValues addObject:[hex substringToIndex:1]]; + } + + id values = !shorthand ? hexValues : shorthandHexValues; + return [NSString stringWithFormat:@"#%@%@%@", [values objectAtIndex:0], [values objectAtIndex:1], [values objectAtIndex:2]]; + } +} + +@end diff --git a/Origami Plugin/NSDate+FBAdditions.h b/Origami Plugin/NSDate+FBAdditions.h new file mode 100644 index 0000000..0c04d0e --- /dev/null +++ b/Origami Plugin/NSDate+FBAdditions.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface NSDate (FBAdditions) + ++ (NSDate *)dateWithEventDescriptor:(NSAppleEventDescriptor *)descriptor; +- (NSString *)formattedDate:(NSString *)dateFormat; + +@end diff --git a/Origami Plugin/NSDate+FBAdditions.m b/Origami Plugin/NSDate+FBAdditions.m new file mode 100644 index 0000000..7bc536f --- /dev/null +++ b/Origami Plugin/NSDate+FBAdditions.m @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "NSDate+FBAdditions.h" + +@implementation NSDate (FBAdditions) + ++ (NSDate *)dateWithEventDescriptor:(NSAppleEventDescriptor *)descriptor { + NSDate *date = nil; + + CFAbsoluteTime absoluteTime; + LongDateTime longDateTime; + + if ([descriptor descriptorType] == typeLongDateTime) { + [[descriptor data] getBytes:&longDateTime length:sizeof(longDateTime)]; + OSStatus status = UCConvertLongDateTimeToCFAbsoluteTime(longDateTime, &absoluteTime); + if (status == noErr) { + date = (NSDate *)CFBridgingRelease(CFDateCreate(NULL, absoluteTime)); + } + } + + return date; +} + +- (NSString *)formattedDate:(NSString *)dateFormat { + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; + [dateFormatter setDateFormat:dateFormat]; + return [dateFormatter stringFromDate:self]; +} + + +@end diff --git a/Origami Plugin/NSDictionary+FBAdditions.h b/Origami Plugin/NSDictionary+FBAdditions.h new file mode 100644 index 0000000..5949394 --- /dev/null +++ b/Origami Plugin/NSDictionary+FBAdditions.h @@ -0,0 +1,19 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import +#import + +@interface NSDictionary (FBAdditions) + +- (id)valueAtPath:(NSArray *)path; +- (id)valueAtPath:(NSArray *)path untraversedPaths:(NSArray **)untraversedPaths; +- (QCStructure *)arrayOrDictionaryStructureFromDictionary; + +@end diff --git a/Origami Plugin/NSDictionary+FBAdditions.m b/Origami Plugin/NSDictionary+FBAdditions.m new file mode 100644 index 0000000..5253437 --- /dev/null +++ b/Origami Plugin/NSDictionary+FBAdditions.m @@ -0,0 +1,208 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "NSDictionary+FBAdditions.h" +#import "NSArray+FBAdditions.h" +#import "NSString+FBAdditions.h" + +@implementation NSDictionary (FBAdditions) + +- (id)valueAtPath:(NSArray *)path { + return [self valueAtPath:path untraversedPaths:nil]; +} + +- (id)valueAtPath:(NSArray *)path untraversedPaths:(NSArray **)untraversedPaths { + NSDictionary *dictionary = self; + BOOL _debug = NO; + + if (_debug) NSLog(@"_objectAtPath:(%@) inDictionary:(%@)", path, dictionary); + if (![path count] || ![dictionary count]) { + return nil; + } + + // The function is recursive so we examine only the first component every time + NSMutableString *nextPathComponent = [[path objectAtIndex:0] mutableCopy]; + BOOL wildcard = ([nextPathComponent isEqualToString:@"*"]); + NSNumber *numericalKey = nil; + + // Check to see if the key value is an index number + NSUInteger numericalIndexForKey = NSNotFound; + if ([nextPathComponent isEqualToString:[[NSNumber numberWithInteger:[nextPathComponent integerValue]] stringValue]]) { + numericalIndexForKey = [nextPathComponent integerValue]; + } else if ([nextPathComponent hasPrefix:@"["] && [nextPathComponent hasSuffix:@"]"] && [nextPathComponent length] >= 3) { + numericalIndexForKey = [[nextPathComponent substringWithRange:NSMakeRange(1, nextPathComponent.length - 2)] integerValue]; + } + if (numericalIndexForKey != NSNotFound && numericalIndexForKey < [dictionary count]) { + NSArray *sortedKeys = [[dictionary allKeys] sortedArrayUsingSelector:@selector(compare:)]; + + id keyForNumericalIndex = [sortedKeys objectAtIndex:numericalIndexForKey]; + if ([keyForNumericalIndex isKindOfClass:[NSString class]]) { + [nextPathComponent setString:keyForNumericalIndex]; + } else if ([keyForNumericalIndex isKindOfClass:[NSNumber class]]) { + nextPathComponent = nil; + numericalKey = keyForNumericalIndex; + } + } + + if (nextPathComponent) { + [nextPathComponent replaceOccurrencesOfString:@"\\[" withString:@"[" options:0 range:NSMakeRange(0, nextPathComponent.length)]; + [nextPathComponent replaceOccurrencesOfString:@"\\\\" withString:@"\\" options:0 range:NSMakeRange(0, nextPathComponent.length)]; + } + + NSArray *keysSpecified = [nextPathComponent componentsSeparatedByUnescapedDelimeter:@"+"]; + + // If there's a wildcard, investigate every branch; otherwise take the specified component key(s) + NSArray *keysToTraverse; + if (wildcard) { + keysToTraverse = [dictionary allKeys]; + } else if (nextPathComponent) { + keysToTraverse = keysSpecified; + } else if (numericalKey) { + keysToTraverse = @[numericalKey]; + } + if (_debug) NSLog(@"keysToTraverse = %@", keysToTraverse); + + // For index-based keys, sort them numerically + BOOL allKeysAreNumbers = YES; + for (id key in keysToTraverse) { + if (![key isKindOfClass:[NSNumber class]]) { + allKeysAreNumbers = NO; + break; + } + } + if (allKeysAreNumbers) { + keysToTraverse = [keysToTraverse sortedArrayUsingAlphabeticalSort]; + } + + NSMutableArray *results = [NSMutableArray arrayWithCapacity:[keysToTraverse count]]; + NSMutableArray *resultingUntraversedPaths = [NSMutableArray arrayWithCapacity:[path count]]; + + // For the non-wildcard case, this loop will only execute once + for (id key in keysToTraverse) { + id object = [dictionary objectForKey:key]; + + NSMutableArray *pathsToTraverseOnBranch = [path mutableCopy]; + if ([path count]) { + [pathsToTraverseOnBranch removeObjectAtIndex:0]; + } + + // Start with the assumption that we find a value + NSArray *untraversedPathsOnBranch = pathsToTraverseOnBranch; + + // If we encounter a dictionary result and still have work to do, invoke the recursive procuedure + if ([object isKindOfClass:[NSDictionary class]] && [pathsToTraverseOnBranch count]) { + object = [object valueAtPath:pathsToTraverseOnBranch untraversedPaths:&untraversedPathsOnBranch]; + } + + if (_debug) NSLog(@"object = %@ for key %@", object, key); + if (object) { + // Collect the result + [results addObject:object]; + } else { + // No value: revert the earlier assumption + [results addObject:[NSNull null]]; + untraversedPathsOnBranch = [[NSArray arrayWithObject:nextPathComponent] arrayByAddingObjectsFromArray:untraversedPathsOnBranch]; + } + + if (untraversedPathsOnBranch) { + // Collect the untraversed path result, which may have been replaced by the recursion + if (_debug) NSLog(@"Untraversed: %@", untraversedPathsOnBranch); + [resultingUntraversedPaths addObject:untraversedPathsOnBranch]; + } + } + + // Flatten results and paths if necessary + if ([results count] == 1) { + results = [results objectAtIndex:0]; + } + if ([resultingUntraversedPaths count] == 1) { + [resultingUntraversedPaths setArray:[resultingUntraversedPaths objectAtIndex:0]]; + } + + // Resolve a remaining untraversed index on the entire result set, if possible + if ([results isKindOfClass:[NSArray class]] && [results count] > 1 && [resultingUntraversedPaths count] == 1) { + id untraversedComponent = [resultingUntraversedPaths lastObject]; + NSUInteger untraversedIndex = [untraversedComponent integerValue]; + if ([untraversedComponent isEqualToString:[[NSNumber numberWithInteger:untraversedIndex] stringValue]]) { + [results setArray:[NSArray arrayWithObject:[results objectAtIndex:untraversedIndex]]]; + } + } + + // If all of our child paths are identical or empty, flatten the result as a single array + BOOL untraversedPathsAreAllIdentical = YES; + BOOL virginity = YES; + id candidateForTestingIdenticalness = nil; + for (id branchPath in resultingUntraversedPaths) { + if (virginity) { + candidateForTestingIdenticalness = branchPath; + virginity = NO; + continue; + } + if (![branchPath isEqual:candidateForTestingIdenticalness]) { + untraversedPathsAreAllIdentical = NO; + break; + } + } + if (untraversedPathsAreAllIdentical) { + if (candidateForTestingIdenticalness && ![candidateForTestingIdenticalness isKindOfClass:[NSArray class]]) { + candidateForTestingIdenticalness = @[candidateForTestingIdenticalness]; + } + if (candidateForTestingIdenticalness && [candidateForTestingIdenticalness count]) { + [resultingUntraversedPaths setArray:candidateForTestingIdenticalness]; + } else { + [resultingUntraversedPaths removeAllObjects]; + } + } + + // Pass discovered untraversed paths back to the calling function + if (_debug) NSLog(@"Resulting untraversed: %@", resultingUntraversedPaths); + if (untraversedPaths) { + *untraversedPaths = resultingUntraversedPaths; + } + + if ([keysToTraverse count] == 1) { + return results; + } + + if (allKeysAreNumbers) { + return results; + } + + // Maintain the original keys when possible + NSUInteger resultIndex; + NSMutableDictionary *dictionaryResult = [NSMutableDictionary dictionaryWithCapacity:results.count]; + for (resultIndex = 0; resultIndex < results.count; resultIndex++) { + [dictionaryResult setObject:results[resultIndex] forKey:keysToTraverse[resultIndex]]; + } + return dictionaryResult; +} + +- (QCStructure *)arrayOrDictionaryStructureFromDictionary { + NSDictionary *dictionary = self; + QCStructure *structureAsDictionary = [[QCStructure alloc] initWithDictionary:dictionary]; + + // Check to see if the structure should be an array: if it has linear numerical keys starting at 0 + NSArray *keys = [[dictionary allKeys] sortedArrayUsingAlphabeticalSort]; + NSInteger previousKey = -1; + NSMutableArray *values = [NSMutableArray arrayWithCapacity:keys.count]; + + for (id key in keys) { + if (!([key isKindOfClass:[NSNumber class]] && [key integerValue] == previousKey + 1)) { + return structureAsDictionary; + } else { + [values addObject:dictionary[key]]; + previousKey++; + } + } + + // Structure is array: just return the values + return [[QCStructure alloc] initWithArray:values]; +} + +@end diff --git a/Origami Plugin/NSString+FBAdditions.h b/Origami Plugin/NSString+FBAdditions.h index 744f460..1a5e3da 100644 --- a/Origami Plugin/NSString+FBAdditions.h +++ b/Origami Plugin/NSString+FBAdditions.h @@ -14,5 +14,8 @@ - (BOOL)fb_containsString:(NSString *)string; - (NSString *)fb_capitalizeFirstLetter; - (NSString *)relativePathFromBaseDirPath:(NSString *)baseDirPath; +- (NSArray *)componentsSeparatedByUnescapedDelimeter:(NSString *)delimeter; +- (NSArray *)componentsSeparatedByUnescapedDelimeters:(NSArray *)delimeters map:(NSArray **)delimeterMap; +- (NSString *)humanReadableString; @end diff --git a/Origami Plugin/NSString+FBAdditions.m b/Origami Plugin/NSString+FBAdditions.m index 47009fe..7b9a7fe 100644 --- a/Origami Plugin/NSString+FBAdditions.m +++ b/Origami Plugin/NSString+FBAdditions.m @@ -48,4 +48,138 @@ - (NSString *)relativePathFromBaseDirPath:(NSString *)baseDirPath { return [NSString pathWithComponents:pathComponents1]; } +- (NSArray *)componentsSeparatedByUnescapedDelimeter:(NSString *)delimeter { + return [self componentsSeparatedByUnescapedDelimeters:@[delimeter] map:NULL]; +} + +- (NSArray *)componentsSeparatedByUnescapedDelimeters:(NSArray *)delimeters map:(NSArray **)delimeterMap { + BOOL _debug = NO; + + if (!(delimeters && [delimeters count])) { + return nil; + } + + static NSString *escape = @"\\"; + static NSString *doubleEscape = @"\\\\"; + + NSMutableArray *components = [NSMutableArray array]; + NSMutableArray *map = [NSMutableArray array]; + + NSScanner *inputScanner = [NSScanner scannerWithString:self]; + [inputScanner setCharactersToBeSkipped:nil]; + + NSString *previousDelimeter = nil; + + while (![inputScanner isAtEnd]) { + NSString *candidate = nil, *previousCandidate = nil, *delimeter = nil; + + do { + previousCandidate = candidate; + + NSString *stringToBeScanned = [[inputScanner string] substringFromIndex:[inputScanner scanLocation]]; + if (_debug) NSLog(@"stringToBeScanned: %@", stringToBeScanned); + NSUInteger firstOccuringLocation = NSNotFound; + NSString *firstOccuringDelimeter = nil; + for (NSString *delimeterCandidate in delimeters) { + NSUInteger delimeterCandidateLocation = [stringToBeScanned rangeOfString:delimeterCandidate].location; + if ((delimeterCandidateLocation != NSNotFound) && + (firstOccuringLocation == NSNotFound || delimeterCandidateLocation < firstOccuringLocation)) { + firstOccuringLocation = delimeterCandidateLocation; + firstOccuringDelimeter = delimeterCandidate; + if (_debug) NSLog(@"firstOccuringDelimeter: %@", firstOccuringDelimeter); + break; + } + } + delimeter = firstOccuringDelimeter; + if (!delimeter) { + [inputScanner scanString:stringToBeScanned intoString:&candidate]; + delimeter = [delimeters objectAtIndex:0]; + break; + } + + [inputScanner scanUpToString:delimeter intoString:&candidate]; + [inputScanner scanString:delimeter intoString:NULL]; + + if (previousCandidate && candidate) { + candidate = [NSString stringWithFormat:@"%@%@%@", previousCandidate, delimeter, candidate]; + if (_debug) NSLog(@"candidate: %@", candidate); + } + } while ([candidate hasSuffix:escape] && ![candidate hasSuffix:doubleEscape] && ![inputScanner isAtEnd]); + + if (candidate) { + if (_debug) NSLog(@"done. canddiate: %@", candidate); + candidate = [candidate stringByReplacingOccurrencesOfString:doubleEscape withString:escape]; + for (NSString *delimeterToEscape in delimeters) { + NSString *delimeterEscape = [escape stringByAppendingString:delimeterToEscape]; + candidate = [candidate stringByReplacingOccurrencesOfString:delimeterEscape withString:delimeterToEscape]; + } + [components addObject:candidate]; + if (_debug) NSLog(@"components: %@", components); + } else { + [components addObject:@""]; + } + + if (delimeter && [delimeter isEqualToString:previousDelimeter]) { + [map addObject:delimeter]; + previousDelimeter = nil; + } else { + [map addObject:@""]; + previousDelimeter = delimeter; + } + } + + if (delimeterMap) { + *delimeterMap = map; + } + + return components; +} + +- (NSString *)humanReadableString { + NSMutableString *key = [[self capitalizedString] mutableCopy]; + [key replaceOccurrencesOfString:@"_" withString:@" " options:0 range:NSMakeRange(0, key.length)]; + + NSArray *exceptions = [NSArray arrayWithObjects: + @"an", @"and", @"at", @"but", @"for", @"from", @"in", @"of", @"or", @"to", @"with", @"within", @"without", + @"AT&T", @"HTTP", @"HTTPS", @"ID", @"IP", @"IDEO", @"UFO", @"URI", @"URL", @"URLs", @"VPN", @"WAN", + @"eBay", @"eMac", @"eMate", @"iCal", @"iMac", @"iPad", @"iPhone", @"iPod", @"iTunes", @"iWork", @"QuickTime", nil]; + + for (NSString *exception in exceptions) { + NSRange previousExceptionRange = NSMakeRange(NSNotFound, 0); + NSRange searchRange = NSMakeRange(0, [key length]); + + while (YES) { + NSRange foundExceptionRange = [key rangeOfString:exception options:NSCaseInsensitiveSearch range:searchRange]; + if (foundExceptionRange.location == NSNotFound || NSEqualRanges(foundExceptionRange, previousExceptionRange)) { + break; + } + + BOOL lowercasedException = ([exception isEqualToString:[exception lowercaseString]]); + + // Only perform the replacement for lowercased exceptions past the first character + if (!lowercasedException || foundExceptionRange.location > 0) { + NSInteger precedingCharacterIndex = (foundExceptionRange.location - 1); + NSInteger subsequentCharacterIndex = (foundExceptionRange.location + foundExceptionRange.length); + if ((precedingCharacterIndex < 0 || [key characterAtIndex:precedingCharacterIndex] == ' ') && + ([key length] <= subsequentCharacterIndex || [key characterAtIndex:subsequentCharacterIndex] == ' ')) { + [key replaceCharactersInRange:foundExceptionRange withString:exception]; + } + } + + previousExceptionRange = foundExceptionRange; + searchRange.location = foundExceptionRange.location + 1; + searchRange.length = [key length] - searchRange.location; + if (searchRange.location >= [key length]) { + break; + } + } + } + + if ([key hasPrefix:@"Http://"] || [key hasPrefix:@"Https://"]) { + [key setString:[key lowercaseString]]; + } + + return [key stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; +} + @end diff --git a/Origami Plugin/NSString+RelativePath.h b/Origami Plugin/NSString+RelativePath.h new file mode 100755 index 0000000..fecb4b5 --- /dev/null +++ b/Origami Plugin/NSString+RelativePath.h @@ -0,0 +1,18 @@ +// +// NSString+RelativePath.h +// +// Created by numata on 2010/01/12. +// Copyright 2010 Satoshi Numata. All rights reserved. +// + +#import + + +@interface NSString (RelativePath) + +- (NSString *)absolutePathFromBaseDirPath:(NSString *)baseDirPath; +- (NSString *)relativePathFromBaseDirPath:(NSString *)baseDirPath; + +@end + + diff --git a/Origami Plugin/NSString+RelativePath.m b/Origami Plugin/NSString+RelativePath.m new file mode 100755 index 0000000..56d7739 --- /dev/null +++ b/Origami Plugin/NSString+RelativePath.m @@ -0,0 +1,78 @@ +// +// NSString+RelativePath.m +// +// Created by numata on 2010/01/12. +// Copyright 2010 Satoshi Numata. All rights reserved. +// + +#import "NSString+RelativePath.h" + + +@implementation NSString (RelativePath) + +- (NSString *)absolutePathFromBaseDirPath:(NSString *)baseDirPath +{ + if ([self hasPrefix:@"~"]) { + return [self stringByExpandingTildeInPath]; + } + + NSString *theBasePath = [baseDirPath stringByExpandingTildeInPath]; + + if (![self hasPrefix:@"."]) { + return [theBasePath stringByAppendingPathComponent:self]; + } + + NSMutableArray *pathComponents1 = [NSMutableArray arrayWithArray:[self pathComponents]]; + NSMutableArray *pathComponents2 = [NSMutableArray arrayWithArray:[theBasePath pathComponents]]; + + while ([pathComponents1 count] > 0) { + NSString *topComponent1 = [pathComponents1 objectAtIndex:0]; + [pathComponents1 removeObjectAtIndex:0]; + + if ([topComponent1 isEqualToString:@".."]) { + if ([pathComponents2 count] == 1) { + // Error + return nil; + } + [pathComponents2 removeLastObject]; + } else if ([topComponent1 isEqualToString:@"."]) { + // Do nothing + } else { + [pathComponents2 addObject:topComponent1]; + } + } + + return [NSString pathWithComponents:pathComponents2]; +} + +- (NSString *)relativePathFromBaseDirPath:(NSString *)baseDirPath +{ + NSString *thePath = [self stringByExpandingTildeInPath]; + NSString *theBasePath = [baseDirPath stringByExpandingTildeInPath]; + + NSMutableArray *pathComponents1 = [NSMutableArray arrayWithArray:[thePath pathComponents]]; + NSMutableArray *pathComponents2 = [NSMutableArray arrayWithArray:[theBasePath pathComponents]]; + + // Remove same path components + while ([pathComponents1 count] > 0 && [pathComponents2 count] > 0) { + NSString *topComponent1 = [pathComponents1 objectAtIndex:0]; + NSString *topComponent2 = [pathComponents2 objectAtIndex:0]; + if (![topComponent1 isEqualToString:topComponent2]) { + break; + } + [pathComponents1 removeObjectAtIndex:0]; + [pathComponents2 removeObjectAtIndex:0]; + } + + // Create result path + for (int i = 0; i < [pathComponents2 count]; i++) { + [pathComponents1 insertObject:@".." atIndex:0]; + } + if ([pathComponents1 count] == 0) { + return @"."; + } + return [NSString pathWithComponents:pathComponents1]; +} + +@end + diff --git a/Origami Plugin/NSURL+FBAdditions.h b/Origami Plugin/NSURL+FBAdditions.h new file mode 100644 index 0000000..1226b1b --- /dev/null +++ b/Origami Plugin/NSURL+FBAdditions.h @@ -0,0 +1,17 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import + +@interface NSURL (FBAdditions) + ++ (NSURL *)URLWithQuartzComposerLocation:(NSString *)location relativeToDocument:(NSDocument *)document; ++ (NSURL *)URLWithEventDescriptor:(NSAppleEventDescriptor *)appleEventDescriptor; + +@end diff --git a/Origami Plugin/NSURL+FBAdditions.m b/Origami Plugin/NSURL+FBAdditions.m new file mode 100644 index 0000000..9a305e8 --- /dev/null +++ b/Origami Plugin/NSURL+FBAdditions.m @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2016-present, Facebook, Inc. + * All rights reserved. + * + * This source code is licensed under the license found in the + * LICENSE file in the root directory of this source tree. + * + */ + +#import "NSURL+FBAdditions.h" +#import "NSString+RelativePath.h" + +@implementation NSURL (FBAdditions) + ++ (NSURL *)URLWithQuartzComposerLocation:(NSString *)location relativeToDocument:(NSDocument *)document { + NSURL *url = [NSURL URLWithString:location]; + + if (!url.scheme.length) { + location = [location stringByStandardizingPath]; + if (!location.isAbsolutePath && document.fileURL) { + NSString *baseDirPath = [document.fileURL.path stringByDeletingLastPathComponent]; + location = [location absolutePathFromBaseDirPath:baseDirPath]; + } + + url = [NSURL fileURLWithPath:location]; + } + + return url; +} + +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + ++ (NSURL *)URLWithEventDescriptor:(NSAppleEventDescriptor *)appleEventDescriptor { + unsigned int theSize = (unsigned int)AEGetDescDataSize([appleEventDescriptor aeDesc]); + Handle aliasHandle = NewHandle(theSize); + HLock(aliasHandle); + AEGetDescData([appleEventDescriptor aeDesc], *aliasHandle, theSize); + HUnlock(aliasHandle); + + NSURL *url = nil; + FSRef theTarget; + Boolean theWasChanged; + if (FSResolveAlias(NULL, (AliasHandle)aliasHandle, &theTarget, &theWasChanged) == noErr) { + url = (NSURL *)CFBridgingRelease(CFURLCreateFromFSRef(kCFAllocatorDefault, &theTarget)); + } + + DisposeHandle(aliasHandle); + return url; +} + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJson.h b/Origami Plugin/SocketIO/SBJson/SBJson.h new file mode 100755 index 0000000..58b9acb --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJson.h @@ -0,0 +1,36 @@ +/* + Copyright (C) 2009-2011 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "SBJsonParser.h" +#import "SBJsonWriter.h" +#import "SBJsonStreamParser.h" +#import "SBJsonStreamParserAdapter.h" +#import "SBJsonStreamWriter.h" +#import "SBJsonStreamTokeniser.h" + diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonParser.h b/Origami Plugin/SocketIO/SBJson/SBJsonParser.h new file mode 100755 index 0000000..ddfff03 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonParser.h @@ -0,0 +1,86 @@ +/* + Copyright (C) 2009 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +/** + Parse JSON Strings and NSData objects + + This uses SBJsonStreamParser internally. + + */ + +@interface SBJsonParser : NSObject + +/** + The maximum recursing depth. + + Defaults to 32. If the input is nested deeper than this the input will be deemed to be + malicious and the parser returns nil, signalling an error. ("Nested too deep".) You can + turn off this security feature by setting the maxDepth value to 0. + */ +@property NSUInteger maxDepth; + +/** + Description of parse error + + This method returns the trace of the last method that failed. + You need to check the return value of the call you're making to figure out + if the call actually failed, before you know call this method. + + @return A string describing the error encountered, or nil if no error occured. + + */ +@property(copy) NSString *error; + +/** + Return the object represented by the given NSData object. + + The data *must* be UTF8 encoded. + + @param data An NSData containing UTF8 encoded data to parse. + @return The NSArray or NSDictionary represented by the object, or nil if an error occured. + + */ +- (id)objectWithData:(NSData*)data; + +/** + Parse string and return the represented dictionary or array. + + Calls objectWithData: internally. + + @param string An NSString containing JSON text. + + @return The NSArray or NSDictionary represented by the object, or nil if an error occured. + */ +- (id)objectWithString:(NSString *)string; + +@end + + diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonParser.m b/Origami Plugin/SocketIO/SBJson/SBJsonParser.m new file mode 100755 index 0000000..15e2823 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonParser.m @@ -0,0 +1,91 @@ +/* + Copyright (C) 2009,2010 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonParser.h" +#import "SBJsonStreamParser.h" +#import "SBJsonStreamParserAdapter.h" +#import "SBJsonStreamParserAccumulator.h" + +@implementation SBJsonParser + +@synthesize maxDepth; +@synthesize error; + +- (id)init { + self = [super init]; + if (self) + self.maxDepth = 32u; + return self; +} + + +#pragma mark Methods + +- (id)objectWithData:(NSData *)data { + + if (!data) { + self.error = @"Input was 'nil'"; + return nil; + } + + SBJsonStreamParserAccumulator *accumulator = [[SBJsonStreamParserAccumulator alloc] init]; + + SBJsonStreamParserAdapter *adapter = [[SBJsonStreamParserAdapter alloc] init]; + adapter.delegate = accumulator; + + SBJsonStreamParser *parser = [[SBJsonStreamParser alloc] init]; + parser.maxDepth = self.maxDepth; + parser.delegate = adapter; + + switch ([parser parse:data]) { + case SBJsonStreamParserComplete: + return accumulator.value; + break; + + case SBJsonStreamParserWaitingForData: + self.error = @"Unexpected end of input"; + break; + + case SBJsonStreamParserError: + self.error = parser.error; + break; + } + + return nil; +} + +- (id)objectWithString:(NSString *)string { + return [self objectWithData:[string dataUsingEncoding:NSUTF8StringEncoding]]; +} + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.h new file mode 100755 index 0000000..930df49 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.h @@ -0,0 +1,174 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@class SBJsonStreamParser; +@class SBJsonStreamParserState; + +typedef enum { + SBJsonStreamParserComplete, + SBJsonStreamParserWaitingForData, + SBJsonStreamParserError, +} SBJsonStreamParserStatus; + + +/** + Delegate for interacting directly with the stream parser + + You will most likely find it much more convenient to implement the + SBJsonStreamParserAdapterDelegate protocol instead. + */ +@protocol SBJsonStreamParserDelegate + +/// Called when object start is found +- (void)parserFoundObjectStart:(SBJsonStreamParser*)parser; + +/// Called when object key is found +- (void)parser:(SBJsonStreamParser*)parser foundObjectKey:(NSString*)key; + +/// Called when object end is found +- (void)parserFoundObjectEnd:(SBJsonStreamParser*)parser; + +/// Called when array start is found +- (void)parserFoundArrayStart:(SBJsonStreamParser*)parser; + +/// Called when array end is found +- (void)parserFoundArrayEnd:(SBJsonStreamParser*)parser; + +/// Called when a boolean value is found +- (void)parser:(SBJsonStreamParser*)parser foundBoolean:(BOOL)x; + +/// Called when a null value is found +- (void)parserFoundNull:(SBJsonStreamParser*)parser; + +/// Called when a number is found +- (void)parser:(SBJsonStreamParser*)parser foundNumber:(NSNumber*)num; + +/// Called when a string is found +- (void)parser:(SBJsonStreamParser*)parser foundString:(NSString*)string; + +@end + + +/** + Parse a stream of JSON data. + + Using this class directly you can reduce the apparent latency for each + download/parse cycle of documents over a slow connection. You can start + parsing *and return chunks of the parsed document* before the entire + document is downloaded. + + Using this class is also useful to parse huge documents on disk + bit by bit so you don't have to keep them all in memory. + + JSON is mapped to Objective-C types in the following way: + + - null -> NSNull + - string -> NSString + - array -> NSMutableArray + - object -> NSMutableDictionary + - true -> NSNumber's -numberWithBool:YES + - false -> NSNumber's -numberWithBool:NO + - number -> NSNumber + + Since Objective-C doesn't have a dedicated class for boolean values, + these turns into NSNumber instances. However, since these are + initialised with the -initWithBool: method they round-trip back to JSON + properly. In other words, they won't silently suddenly become 0 or 1; + they'll be represented as 'true' and 'false' again. + + Integers are parsed into either a `long long` or `unsigned long long` + type if they fit, else a `double` is used. All real & exponential numbers + are represented using a `double`. Previous versions of this library used + an NSDecimalNumber in some cases, but this is no longer the case. + + See also SBJsonStreamParserAdapter for more information. + + */ +@interface SBJsonStreamParser : NSObject + +@property (nonatomic, unsafe_unretained) SBJsonStreamParserState *state; // Private +@property (nonatomic, readonly, strong) NSMutableArray *stateStack; // Private + +/** + Expect multiple documents separated by whitespace + + Normally the -parse: method returns SBJsonStreamParserComplete when it's found a complete JSON document. + Attempting to parse any more data at that point is considered an error. ("Garbage after JSON".) + + If you set this property to true the parser will never return SBJsonStreamParserComplete. Rather, + once an object is completed it will expect another object to immediately follow, separated + only by (optional) whitespace. + + */ +@property BOOL supportMultipleDocuments; + +/** + Delegate to receive messages + + The object set here receives a series of messages as the parser breaks down the JSON stream + into valid tokens. + + Usually this should be an instance of SBJsonStreamParserAdapter, but you can + substitute your own implementation of the SBJsonStreamParserDelegate protocol if you need to. + */ +@property (unsafe_unretained) id delegate; + +/** + The max parse depth + + If the input is nested deeper than this the parser will halt parsing and return an error. + + Defaults to 32. + */ +@property NSUInteger maxDepth; + +/// Holds the error after SBJsonStreamParserError was returned +@property (copy) NSString *error; + +/** + Parse some JSON + + The JSON is assumed to be UTF8 encoded. This can be a full JSON document, or a part of one. + + @param data An NSData object containing the next chunk of JSON + + @return + - SBJsonStreamParserComplete if a full document was found + - SBJsonStreamParserWaitingForData if a partial document was found and more data is required to complete it + - SBJsonStreamParserError if an error occured. (See the error property for details in this case.) + + */ +- (SBJsonStreamParserStatus)parse:(NSData*)data; + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.m new file mode 100755 index 0000000..ba2f748 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParser.m @@ -0,0 +1,338 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonStreamParser.h" +#import "SBJsonStreamTokeniser.h" +#import "SBJsonStreamParserState.h" + +#define SBStringIsSurrogateHighCharacter(character) ((character >= 0xD800UL) && (character <= 0xDBFFUL)) + +@implementation SBJsonStreamParser { + SBJsonStreamTokeniser *tokeniser; +} + +@synthesize supportMultipleDocuments; +@synthesize error; +@synthesize delegate; +@synthesize maxDepth; +@synthesize state; +@synthesize stateStack; + +#pragma mark Housekeeping + +- (id)init { + self = [super init]; + if (self) { + maxDepth = 32u; + stateStack = [[NSMutableArray alloc] initWithCapacity:maxDepth]; + state = [SBJsonStreamParserStateStart sharedInstance]; + tokeniser = [[SBJsonStreamTokeniser alloc] init]; + } + return self; +} + + +#pragma mark Methods + +- (NSString*)tokenName:(sbjson_token_t)token { + switch (token) { + case sbjson_token_array_open: + return @"start of array"; + break; + + case sbjson_token_array_close: + return @"end of array"; + break; + + case sbjson_token_integer: + case sbjson_token_real: + return @"number"; + break; + + case sbjson_token_string: + case sbjson_token_encoded: + return @"string"; + break; + + case sbjson_token_bool: + return @"boolean"; + break; + + case sbjson_token_null: + return @"null"; + break; + + case sbjson_token_entry_sep: + return @"key-value separator"; + break; + + case sbjson_token_value_sep: + return @"value separator"; + break; + + case sbjson_token_object_open: + return @"start of object"; + break; + + case sbjson_token_object_close: + return @"end of object"; + break; + + case sbjson_token_eof: + case sbjson_token_error: + break; + } + NSAssert(NO, @"Should not get here"); + return @""; +} + +- (void)maxDepthError { + self.error = [NSString stringWithFormat:@"Input depth exceeds max depth of %lu", (unsigned long)maxDepth]; + self.state = [SBJsonStreamParserStateError sharedInstance]; +} + +- (void)handleObjectStart { + if (stateStack.count >= maxDepth) { + [self maxDepthError]; + return; + } + + [delegate parserFoundObjectStart:self]; + [stateStack addObject:state]; + self.state = [SBJsonStreamParserStateObjectStart sharedInstance]; +} + +- (void)handleObjectEnd: (sbjson_token_t) tok { + self.state = [stateStack lastObject]; + [stateStack removeLastObject]; + [state parser:self shouldTransitionTo:tok]; + [delegate parserFoundObjectEnd:self]; +} + +- (void)handleArrayStart { + if (stateStack.count >= maxDepth) { + [self maxDepthError]; + return; + } + + [delegate parserFoundArrayStart:self]; + [stateStack addObject:state]; + self.state = [SBJsonStreamParserStateArrayStart sharedInstance]; +} + +- (void)handleArrayEnd: (sbjson_token_t) tok { + self.state = [stateStack lastObject]; + [stateStack removeLastObject]; + [state parser:self shouldTransitionTo:tok]; + [delegate parserFoundArrayEnd:self]; +} + +- (void) handleTokenNotExpectedHere: (sbjson_token_t) tok { + NSString *tokenName = [self tokenName:tok]; + NSString *stateName = [state name]; + + self.error = [NSString stringWithFormat:@"Token '%@' not expected %@", tokenName, stateName]; + self.state = [SBJsonStreamParserStateError sharedInstance]; +} + +- (SBJsonStreamParserStatus)parse:(NSData *)data_ { + @autoreleasepool { + [tokeniser appendData:data_]; + + for (;;) { + + if ([state isError]) + return SBJsonStreamParserError; + + char *token; + NSUInteger token_len; + sbjson_token_t tok = [tokeniser getToken:&token length:&token_len]; + + switch (tok) { + case sbjson_token_eof: + return [state parserShouldReturn:self]; + break; + + case sbjson_token_error: + self.state = [SBJsonStreamParserStateError sharedInstance]; + self.error = tokeniser.error; + return SBJsonStreamParserError; + break; + + default: + + if (![state parser:self shouldAcceptToken:tok]) { + [self handleTokenNotExpectedHere: tok]; + return SBJsonStreamParserError; + } + + switch (tok) { + case sbjson_token_object_open: + [self handleObjectStart]; + break; + + case sbjson_token_object_close: + [self handleObjectEnd: tok]; + break; + + case sbjson_token_array_open: + [self handleArrayStart]; + break; + + case sbjson_token_array_close: + [self handleArrayEnd: tok]; + break; + + case sbjson_token_value_sep: + case sbjson_token_entry_sep: + [state parser:self shouldTransitionTo:tok]; + break; + + case sbjson_token_bool: + [delegate parser:self foundBoolean:token[0] == 't']; + [state parser:self shouldTransitionTo:tok]; + break; + + + case sbjson_token_null: + [delegate parserFoundNull:self]; + [state parser:self shouldTransitionTo:tok]; + break; + + case sbjson_token_integer: { + const int UNSIGNED_LONG_LONG_MAX_DIGITS = 20; + if (token_len <= UNSIGNED_LONG_LONG_MAX_DIGITS) { + if (*token == '-') + [delegate parser:self foundNumber: @(strtoll(token, NULL, 10))]; + else + [delegate parser:self foundNumber: @(strtoull(token, NULL, 10))]; + + [state parser:self shouldTransitionTo:tok]; + break; + } + } + // FALLTHROUGH + + case sbjson_token_real: { + [delegate parser:self foundNumber: @(strtod(token, NULL))]; + [state parser:self shouldTransitionTo:tok]; + break; + } + + case sbjson_token_string: { + NSString *string = [[NSString alloc] initWithBytes:token length:token_len encoding:NSUTF8StringEncoding]; + if ([state needKey]) + [delegate parser:self foundObjectKey:string]; + else + [delegate parser:self foundString:string]; + [state parser:self shouldTransitionTo:tok]; + break; + } + + case sbjson_token_encoded: { + NSString *string = [self decodeStringToken:token length:token_len]; + if ([state needKey]) + [delegate parser:self foundObjectKey:string]; + else + [delegate parser:self foundString:string]; + [state parser:self shouldTransitionTo:tok]; + break; + } + + default: + break; + } + break; + } + } + return SBJsonStreamParserComplete; + } +} + +- (unichar)decodeHexQuad:(char *)quad { + unichar ch = 0; + for (NSUInteger i = 0; i < 4; i++) { + int c = quad[i]; + ch *= 16; + switch (c) { + case '0' ... '9': ch += c - '0'; break; + case 'a' ... 'f': ch += 10 + c - 'a'; break; + case 'A' ... 'F': ch += 10 + c - 'A'; break; + default: @throw @"FUT FUT FUT"; + } + } + return ch; +} + +- (NSString*)decodeStringToken:(char*)bytes length:(NSUInteger)len { + NSMutableString *string = [NSMutableString stringWithCapacity:len]; + + for (NSUInteger i = 0; i < len;) { + switch (bytes[i]) { + case '\\': { + switch (bytes[++i]) { + case '"': [string appendString:@"\""]; i++; break; + case '/': [string appendString:@"/"]; i++; break; + case '\\': [string appendString:@"\\"]; i++; break; + case 'b': [string appendString:@"\b"]; i++; break; + case 'f': [string appendString:@"\f"]; i++; break; + case 'n': [string appendString:@"\n"]; i++; break; + case 'r': [string appendString:@"\r"]; i++; break; + case 't': [string appendString:@"\t"]; i++; break; + case 'u': { + unichar hi = [self decodeHexQuad:bytes + i + 1]; + i += 5; + if (SBStringIsSurrogateHighCharacter(hi)) { + // Skip past \u that we know is there.. + unichar lo = [self decodeHexQuad:bytes + i + 2]; + i += 6; + [string appendFormat:@"%C%C", hi, lo]; + } else { + [string appendFormat:@"%C", hi]; + } + break; + } + default: @throw @"FUT FUT FUT"; + } + break; + } + default: [string appendFormat:@"%c", bytes[i++]]; break; + } + } + return string; +} + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.h new file mode 100755 index 0000000..141d6ee --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.h @@ -0,0 +1,37 @@ +/* + Copyright (C) 2011 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import "SBJsonStreamParserAdapter.h" + +@interface SBJsonStreamParserAccumulator : NSObject + +@property (copy) id value; + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.m new file mode 100755 index 0000000..82d8fe8 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAccumulator.m @@ -0,0 +1,51 @@ +/* + Copyright (C) 2011 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonStreamParserAccumulator.h" + +@implementation SBJsonStreamParserAccumulator + +@synthesize value; + + +#pragma mark SBJsonStreamParserAdapterDelegate + +- (void)parser:(SBJsonStreamParser*)parser foundArray:(NSArray *)array { + value = array; +} + +- (void)parser:(SBJsonStreamParser*)parser foundObject:(NSDictionary *)dict { + value = dict; +} + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.h new file mode 100755 index 0000000..8b4bc5d --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.h @@ -0,0 +1,142 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import +#import "SBJsonStreamParser.h" + +typedef enum { + SBJsonStreamParserAdapterNone, + SBJsonStreamParserAdapterArray, + SBJsonStreamParserAdapterObject, +} SBJsonStreamParserAdapterType; + +/** + Delegate for getting objects & arrays from the stream parser adapter + + */ +@protocol SBJsonStreamParserAdapterDelegate + +/** + Called if a JSON array is found + + This method is called if a JSON array is found. + + */ +- (void)parser:(SBJsonStreamParser*)parser foundArray:(NSArray*)array; + +/** + Called when a JSON object is found + + This method is called if a JSON object is found. + */ +- (void)parser:(SBJsonStreamParser*)parser foundObject:(NSDictionary*)dict; + +@end + +/** + SBJsonStreamParserDelegate protocol adapter + + Rather than implementing the SBJsonStreamParserDelegate protocol yourself you will + most likely find it much more convenient to use an instance of this class and + implement the SBJsonStreamParserAdapterDelegate protocol instead. + + The default behaviour is that the delegate only receives one call from + either the -parser:foundArray: or -parser:foundObject: method when the + document is fully parsed. However, if your inputs contains multiple JSON + documents and you set the parser's -supportMultipleDocuments property to YES + you will get one call for each full method. + + SBJsonStreamParserAdapter *adapter = [[[SBJsonStreamParserAdapter alloc] init] autorelease]; + adapter.delegate = self; + + SBJsonStreamParser *parser = [[[SBJsonStreamParser alloc] init] autorelease]; + parser.delegate = adapter; + parser.supportMultipleDocuments = YES; + + // Note that this input contains multiple top-level JSON documents + NSData *json = [@"[]{}[]{}" dataWithEncoding:NSUTF8StringEncoding]; + [parser parse:data]; + + In the above example self will have the following sequence of methods called on it: + + - -parser:foundArray: + - -parser:foundObject: + - -parser:foundArray: + - -parser:foundObject: + + Often you won't have control over the input you're parsing, so can't make use of + this feature. But, all is not lost: this class will let you get the same effect by + allowing you to skip one or more of the outer enclosing objects. Thus, the next + example results in the same sequence of -parser:foundArray: / -parser:foundObject: + being called on your delegate. + + SBJsonStreamParserAdapter *adapter = [[[SBJsonStreamParserAdapter alloc] init] autorelease]; + adapter.delegate = self; + adapter.levelsToSkip = 1; + + SBJsonStreamParser *parser = [[[SBJsonStreamParser alloc] init] autorelease]; + parser.delegate = adapter; + + // Note that this input contains A SINGLE top-level document + NSData *json = [@"[[],{},[],{}]" dataWithEncoding:NSUTF8StringEncoding]; + [parser parse:data]; + +*/ +@interface SBJsonStreamParserAdapter : NSObject { +@private + NSUInteger depth; + NSMutableArray *array; + NSMutableDictionary *dict; + NSMutableArray *keyStack; + NSMutableArray *stack; + + SBJsonStreamParserAdapterType currentType; +} + +/** + How many levels to skip + + This is useful for parsing huge JSON documents, or documents coming in over a very slow link. + + If you set this to N it will skip the outer N levels and call the -parser:foundArray: + or -parser:foundObject: methods for each of the inner objects, as appropriate. + +*/ +@property NSUInteger levelsToSkip; + +/** + Your delegate object + Set this to the object you want to receive the SBJsonStreamParserAdapterDelegate messages. + */ +@property (unsafe_unretained) id delegate; + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.m new file mode 100755 index 0000000..7259a06 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserAdapter.m @@ -0,0 +1,168 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonStreamParserAdapter.h" + +@interface SBJsonStreamParserAdapter () + +- (void)pop; +- (void)parser:(SBJsonStreamParser*)parser found:(id)obj; + +@end + + + +@implementation SBJsonStreamParserAdapter + +@synthesize delegate; +@synthesize levelsToSkip; + +#pragma mark Housekeeping + +- (id)init { + self = [super init]; + if (self) { + keyStack = [[NSMutableArray alloc] initWithCapacity:32]; + stack = [[NSMutableArray alloc] initWithCapacity:32]; + + currentType = SBJsonStreamParserAdapterNone; + } + return self; +} + + +#pragma mark Private methods + +- (void)pop { + [stack removeLastObject]; + array = nil; + dict = nil; + currentType = SBJsonStreamParserAdapterNone; + + id value = [stack lastObject]; + + if ([value isKindOfClass:[NSArray class]]) { + array = value; + currentType = SBJsonStreamParserAdapterArray; + } else if ([value isKindOfClass:[NSDictionary class]]) { + dict = value; + currentType = SBJsonStreamParserAdapterObject; + } +} + +- (void)parser:(SBJsonStreamParser*)parser found:(id)obj { + NSParameterAssert(obj); + + switch (currentType) { + case SBJsonStreamParserAdapterArray: + [array addObject:obj]; + break; + + case SBJsonStreamParserAdapterObject: + NSParameterAssert(keyStack.count); + [dict setObject:obj forKey:[keyStack lastObject]]; + [keyStack removeLastObject]; + break; + + case SBJsonStreamParserAdapterNone: + if ([obj isKindOfClass:[NSArray class]]) { + [delegate parser:parser foundArray:obj]; + } else { + [delegate parser:parser foundObject:obj]; + } + break; + + default: + break; + } +} + + +#pragma mark Delegate methods + +- (void)parserFoundObjectStart:(SBJsonStreamParser*)parser { + if (++depth > self.levelsToSkip) { + dict = [NSMutableDictionary new]; + [stack addObject:dict]; + currentType = SBJsonStreamParserAdapterObject; + } +} + +- (void)parser:(SBJsonStreamParser*)parser foundObjectKey:(NSString*)key_ { + [keyStack addObject:key_]; +} + +- (void)parserFoundObjectEnd:(SBJsonStreamParser*)parser { + if (depth-- > self.levelsToSkip) { + id value = dict; + [self pop]; + [self parser:parser found:value]; + } +} + +- (void)parserFoundArrayStart:(SBJsonStreamParser*)parser { + if (++depth > self.levelsToSkip) { + array = [NSMutableArray new]; + [stack addObject:array]; + currentType = SBJsonStreamParserAdapterArray; + } +} + +- (void)parserFoundArrayEnd:(SBJsonStreamParser*)parser { + if (depth-- > self.levelsToSkip) { + id value = array; + [self pop]; + [self parser:parser found:value]; + } +} + +- (void)parser:(SBJsonStreamParser*)parser foundBoolean:(BOOL)x { + [self parser:parser found:[NSNumber numberWithBool:x]]; +} + +- (void)parserFoundNull:(SBJsonStreamParser*)parser { + [self parser:parser found:[NSNull null]]; +} + +- (void)parser:(SBJsonStreamParser*)parser foundNumber:(NSNumber*)num { + [self parser:parser found:num]; +} + +- (void)parser:(SBJsonStreamParser*)parser foundString:(NSString*)string { + [self parser:parser found:string]; +} + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.h new file mode 100755 index 0000000..35b3f24 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.h @@ -0,0 +1,83 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +#import "SBJsonStreamTokeniser.h" +#import "SBJsonStreamParser.h" + +@interface SBJsonStreamParserState : NSObject ++ (id)sharedInstance; + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token; +- (SBJsonStreamParserStatus)parserShouldReturn:(SBJsonStreamParser*)parser; +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok; +- (BOOL)needKey; +- (BOOL)isError; + +- (NSString*)name; + +@end + +@interface SBJsonStreamParserStateStart : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateComplete : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateError : SBJsonStreamParserState +@end + + +@interface SBJsonStreamParserStateObjectStart : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateObjectGotKey : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateObjectSeparator : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateObjectGotValue : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateObjectNeedKey : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateArrayStart : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateArrayGotValue : SBJsonStreamParserState +@end + +@interface SBJsonStreamParserStateArrayNeedValue : SBJsonStreamParserState +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.m new file mode 100755 index 0000000..9481f97 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamParserState.m @@ -0,0 +1,364 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonStreamParserState.h" + +#define SINGLETON \ ++ (id)sharedInstance { \ + static id state = nil; \ + if (!state) { \ + @synchronized(self) { \ + if (!state) state = [[self alloc] init]; \ + } \ + } \ + return state; \ +} + +@implementation SBJsonStreamParserState + ++ (id)sharedInstance { return nil; } + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + return NO; +} + +- (SBJsonStreamParserStatus)parserShouldReturn:(SBJsonStreamParser*)parser { + return SBJsonStreamParserWaitingForData; +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok {} + +- (BOOL)needKey { + return NO; +} + +- (NSString*)name { + return @""; +} + +- (BOOL)isError { + return NO; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateStart + +SINGLETON + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + return token == sbjson_token_array_open || token == sbjson_token_object_open; +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + + SBJsonStreamParserState *state = nil; + switch (tok) { + case sbjson_token_array_open: + state = [SBJsonStreamParserStateArrayStart sharedInstance]; + break; + + case sbjson_token_object_open: + state = [SBJsonStreamParserStateObjectStart sharedInstance]; + break; + + case sbjson_token_array_close: + case sbjson_token_object_close: + if (parser.supportMultipleDocuments) + state = parser.state; + else + state = [SBJsonStreamParserStateComplete sharedInstance]; + break; + + case sbjson_token_eof: + return; + + default: + state = [SBJsonStreamParserStateError sharedInstance]; + break; + } + + + parser.state = state; +} + +- (NSString*)name { return @"before outer-most array or object"; } + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateComplete + +SINGLETON + +- (NSString*)name { return @"after outer-most array or object"; } + +- (SBJsonStreamParserStatus)parserShouldReturn:(SBJsonStreamParser*)parser { + return SBJsonStreamParserComplete; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateError + +SINGLETON + +- (NSString*)name { return @"in error"; } + +- (SBJsonStreamParserStatus)parserShouldReturn:(SBJsonStreamParser*)parser { + return SBJsonStreamParserError; +} + +- (BOOL)isError { + return YES; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateObjectStart + +SINGLETON + +- (NSString*)name { return @"at beginning of object"; } + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + switch (token) { + case sbjson_token_object_close: + case sbjson_token_string: + case sbjson_token_encoded: + return YES; + break; + default: + return NO; + break; + } +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + parser.state = [SBJsonStreamParserStateObjectGotKey sharedInstance]; +} + +- (BOOL)needKey { + return YES; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateObjectGotKey + +SINGLETON + +- (NSString*)name { return @"after object key"; } + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + return token == sbjson_token_entry_sep; +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + parser.state = [SBJsonStreamParserStateObjectSeparator sharedInstance]; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateObjectSeparator + +SINGLETON + +- (NSString*)name { return @"as object value"; } + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + switch (token) { + case sbjson_token_object_open: + case sbjson_token_array_open: + case sbjson_token_bool: + case sbjson_token_null: + case sbjson_token_integer: + case sbjson_token_real: + case sbjson_token_string: + case sbjson_token_encoded: + return YES; + break; + + default: + return NO; + break; + } +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + parser.state = [SBJsonStreamParserStateObjectGotValue sharedInstance]; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateObjectGotValue + +SINGLETON + +- (NSString*)name { return @"after object value"; } + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + switch (token) { + case sbjson_token_object_close: + case sbjson_token_value_sep: + return YES; + break; + default: + return NO; + break; + } +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + parser.state = [SBJsonStreamParserStateObjectNeedKey sharedInstance]; +} + + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateObjectNeedKey + +SINGLETON + +- (NSString*)name { return @"in place of object key"; } + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + return sbjson_token_string == token || sbjson_token_encoded == token; +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + parser.state = [SBJsonStreamParserStateObjectGotKey sharedInstance]; +} + +- (BOOL)needKey { + return YES; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateArrayStart + +SINGLETON + +- (NSString*)name { return @"at array start"; } + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + switch (token) { + case sbjson_token_object_close: + case sbjson_token_entry_sep: + case sbjson_token_value_sep: + return NO; + break; + + default: + return YES; + break; + } +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + parser.state = [SBJsonStreamParserStateArrayGotValue sharedInstance]; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateArrayGotValue + +SINGLETON + +- (NSString*)name { return @"after array value"; } + + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + return token == sbjson_token_array_close || token == sbjson_token_value_sep; +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + if (tok == sbjson_token_value_sep) + parser.state = [SBJsonStreamParserStateArrayNeedValue sharedInstance]; +} + +@end + +#pragma mark - + +@implementation SBJsonStreamParserStateArrayNeedValue + +SINGLETON + +- (NSString*)name { return @"as array value"; } + + +- (BOOL)parser:(SBJsonStreamParser*)parser shouldAcceptToken:(sbjson_token_t)token { + switch (token) { + case sbjson_token_array_close: + case sbjson_token_entry_sep: + case sbjson_token_object_close: + case sbjson_token_value_sep: + return NO; + break; + + default: + return YES; + break; + } +} + +- (void)parser:(SBJsonStreamParser*)parser shouldTransitionTo:(sbjson_token_t)tok { + parser.state = [SBJsonStreamParserStateArrayGotValue sharedInstance]; +} + +@end + diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.h new file mode 100755 index 0000000..b24b4ff --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.h @@ -0,0 +1,40 @@ +// +// Created by SuperPappi on 09/01/2013. +// +// To change the template use AppCode | Preferences | File Templates. +// + +#import + +typedef enum { + sbjson_token_error = -1, + sbjson_token_eof, + + sbjson_token_array_open, + sbjson_token_array_close, + sbjson_token_value_sep, + + sbjson_token_object_open, + sbjson_token_object_close, + sbjson_token_entry_sep, + + sbjson_token_bool, + sbjson_token_null, + + sbjson_token_integer, + sbjson_token_real, + + sbjson_token_string, + sbjson_token_encoded, +} sbjson_token_t; + + +@interface SBJsonStreamTokeniser : NSObject + +@property (nonatomic, readonly, copy) NSString *error; + +- (void)appendData:(NSData*)data_; +- (sbjson_token_t)getToken:(char**)tok length:(NSUInteger*)len; + +@end + diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.m new file mode 100755 index 0000000..c0e9b29 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamTokeniser.m @@ -0,0 +1,397 @@ +// +// Created by SuperPappi on 09/01/2013. +// +// To change the template use AppCode | Preferences | File Templates. +// + + +#import "SBJsonStreamTokeniser.h" + +#define SBStringIsIllegalSurrogateHighCharacter(character) (((character) >= 0xD800UL) && ((character) <= 0xDFFFUL)) +#define SBStringIsSurrogateLowCharacter(character) ((character >= 0xDC00UL) && (character <= 0xDFFFUL)) +#define SBStringIsSurrogateHighCharacter(character) ((character >= 0xD800UL) && (character <= 0xDBFFUL)) + +@implementation SBJsonStreamTokeniser { + NSMutableData *data; + const char *bytes; + NSUInteger index; + NSUInteger offset; +} + +- (void)setError:(NSString *)error { + _error = [NSString stringWithFormat:@"%@ at index %lu", error, (unsigned long)(offset + index)]; +} + +- (void)appendData:(NSData *)data_ { + if (!data) { + data = [data_ mutableCopy]; + + } else if (index) { + // Discard data we've already parsed + [data replaceBytesInRange:NSMakeRange(0, index) withBytes:"" length:0]; + [data appendData:data_]; + + // Add to the offset for reporting + offset += index; + + // Reset index to point to current position + index = 0u; + + } + else { + [data appendData:data_]; + } + + bytes = [data bytes]; +} + +- (void)skipWhitespace { + while (index < data.length) { + switch (bytes[index]) { + case ' ': + case '\t': + case '\r': + case '\n': + index++; + break; + default: + return; + } + } +} + +- (BOOL)getUnichar:(unichar *)ch { + if ([self haveRemainingCharacters:1]) { + *ch = (unichar) bytes[index]; + return YES; + } + return NO; +} + +- (BOOL)haveOneMoreCharacter { + return [self haveRemainingCharacters:1]; +} + +- (BOOL)haveRemainingCharacters:(NSUInteger)length { + return data.length - index >= length; +} + +- (sbjson_token_t)match:(char *)str retval:(sbjson_token_t)tok token:(char **)token length:(NSUInteger *)length { + NSUInteger len = strlen(str); + if ([self haveRemainingCharacters:len]) { + if (!memcmp(bytes + index, str, len)) { + *token = str; + *length = len; + index += len; + return tok; + } + [self setError: [NSString stringWithFormat:@"Expected '%s' after initial '%.1s'", str, str]]; + return sbjson_token_error; + } + + return sbjson_token_eof; +} + +- (BOOL)decodeHexQuad:(unichar*)quad { + unichar tmp = 0; + + for (int i = 0; i < 4; i++, index++) { + unichar c = bytes[index]; + tmp *= 16; + switch (c) { + case '0' ... '9': + tmp += c - '0'; + break; + + case 'a' ... 'f': + tmp += 10 + c - 'a'; + break; + + case 'A' ... 'F': + tmp += 10 + c - 'A'; + break; + + default: + return NO; + } + } + *quad = tmp; + return YES; +} + +- (sbjson_token_t)getStringToken:(char **)token length:(NSUInteger *)length { + + // Skip initial " + index++; + + NSUInteger string_start = index; + sbjson_token_t tok = sbjson_token_string; + + for (;;) { + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + + switch (bytes[index]) { + case 0 ... 0x1F: + [self setError:[NSString stringWithFormat:@"Unescaped control character [0x%0.2X] in string", bytes[index]]]; + return sbjson_token_error; + + case '"': + *token = (char *)(bytes + string_start); + *length = index - string_start; + index++; + return tok; + + case '\\': + tok = sbjson_token_encoded; + index++; + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + + if (bytes[index] == 'u') { + index++; + if (![self haveRemainingCharacters:4]) + return sbjson_token_eof; + + unichar hi; + if (![self decodeHexQuad:&hi]) { + [self setError:@"Invalid hex quad"]; + return sbjson_token_error; + } + + if (SBStringIsSurrogateHighCharacter(hi)) { + if (![self haveRemainingCharacters:6]) + return sbjson_token_eof; + + unichar lo; + if (bytes[index++] != '\\' || bytes[index++] != 'u' || ![self decodeHexQuad:&lo]) { + [self setError:@"Missing low character in surrogate pair"]; + return sbjson_token_error; + } + + if (!SBStringIsSurrogateLowCharacter(lo)) { + [self setError:@"Invalid low character in surrogate pair"]; + return sbjson_token_error; + } + + } else if (SBStringIsIllegalSurrogateHighCharacter(hi)) { + [self setError:@"Invalid high character in surrogate pair"]; + return sbjson_token_error; + + } + + + } else { + switch (bytes[index]) { + case '\\': + case '/': + case '"': + case 'b': + case 'n': + case 'r': + case 't': + case 'f': + index++; + break; + + default: + [self setError:[NSString stringWithFormat:@"Illegal escape character [%x]", bytes[index]]]; + return sbjson_token_error; + } + } + + break; + + default: + index++; + break; + } + } + + @throw @"FUT FUT FUT"; +} + +- (sbjson_token_t)getNumberToken:(char **)token length:(NSUInteger *)length { + NSUInteger num_start = index; + if (bytes[index] == '-') { + index++; + + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + } + + sbjson_token_t tok = sbjson_token_integer; + if (bytes[index] == '0') { + index++; + + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + + if (isdigit(bytes[index])) { + [self setError:@"Leading zero is illegal in number"]; + return sbjson_token_error; + } + } + + while (isdigit(bytes[index])) { + index++; + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + } + + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + + + if (bytes[index] == '.') { + index++; + tok = sbjson_token_real; + + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + + NSUInteger frac_start = index; + while (isdigit(bytes[index])) { + index++; + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + } + + if (frac_start == index) { + [self setError:@"No digits after decimal point"]; + return sbjson_token_error; + } + } + + if (bytes[index] == 'e' || bytes[index] == 'E') { + index++; + tok = sbjson_token_real; + + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + + if (bytes[index] == '-' || bytes[index] == '+') { + index++; + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + } + + NSUInteger exp_start = index; + while (isdigit(bytes[index])) { + index++; + if (![self haveOneMoreCharacter]) + return sbjson_token_eof; + } + + if (exp_start == index) { + [self setError:@"No digits in exponent"]; + return sbjson_token_error; + } + + } + + if (num_start + 1 == index && bytes[num_start] == '-') { + [self setError:@"No digits after initial minus"]; + return sbjson_token_error; + } + + *token = (char *)(bytes + num_start); + *length = index - num_start; + return tok; +} + + +- (sbjson_token_t)getToken:(char **)token length:(NSUInteger *)length { + [self skipWhitespace]; + NSUInteger copyOfIndex = index; + + unichar ch; + if (![self getUnichar:&ch]) + return sbjson_token_eof; + + sbjson_token_t tok; + switch (ch) { + case '{': { + index++; + tok = sbjson_token_object_open; + break; + } + case '}': { + index++; + tok = sbjson_token_object_close; + break; + + } + case '[': { + index++; + tok = sbjson_token_array_open; + break; + + } + case ']': { + index++; + tok = sbjson_token_array_close; + break; + + } + case 't': { + tok = [self match:"true" retval:sbjson_token_bool token:token length:length]; + break; + + } + case 'f': { + tok = [self match:"false" retval:sbjson_token_bool token:token length:length]; + break; + + } + case 'n': { + tok = [self match:"null" retval:sbjson_token_null token:token length:length]; + break; + + } + case ',': { + index++; + tok = sbjson_token_value_sep; + break; + + } + case ':': { + index++; + tok = sbjson_token_entry_sep; + break; + + } + case '"': { + tok = [self getStringToken:token length:length]; + break; + + } + case '-': + case '0' ... '9': { + tok = [self getNumberToken:token length:length]; + break; + + } + case '+': { + self.error = @"Leading + is illegal in number"; + tok = sbjson_token_error; + break; + + } + default: { + self.error = [NSString stringWithFormat:@"Illegal start of token [%c]", ch]; + tok = sbjson_token_error; + break; + } + } + + if (tok == sbjson_token_eof) { + // We ran out of bytes before we could finish parsing the current token. + // Back up to the start & wait for more data. + index = copyOfIndex; + } + + return tok; +} + +@end \ No newline at end of file diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.h new file mode 100755 index 0000000..7794a14 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.h @@ -0,0 +1,210 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +/// Enable JSON writing for non-native objects +@interface NSObject (SBProxyForJson) + +/** + Allows generation of JSON for otherwise unsupported classes. + + If you have a custom class that you want to create a JSON representation + for you can implement this method in your class. It should return a + representation of your object defined in terms of objects that can be + translated into JSON. For example, a Person object might implement it like this: + + - (id)proxyForJson { + return [NSDictionary dictionaryWithObjectsAndKeys: + name, @"name", + phone, @"phone", + email, @"email", + nil]; + } + + */ +- (id)proxyForJson; + +@end + +@class SBJsonStreamWriter; + +@protocol SBJsonStreamWriterDelegate + +- (void)writer:(SBJsonStreamWriter*)writer appendBytes:(const void *)bytes length:(NSUInteger)length; + +@end + +@class SBJsonStreamWriterState; + +/** + The Stream Writer class. + + Accepts a stream of messages and writes JSON of these to its delegate object. + + This class provides a range of high-, mid- and low-level methods. You can mix + and match calls to these. For example, you may want to call -writeArrayOpen + to start an array and then repeatedly call -writeObject: with various objects + before finishing off with a -writeArrayClose call. + + Objective-C types are mapped to JSON types in the following way: + + - NSNull -> null + - NSString -> string + - NSArray -> array + - NSDictionary -> object + - NSNumber's -initWithBool:YES -> true + - NSNumber's -initWithBool:NO -> false + - NSNumber -> number + + NSNumber instances created with the -numberWithBool: method are + converted into the JSON boolean "true" and "false" values, and vice + versa. Any other NSNumber instances are converted to a JSON number the + way you would expect. + + @warning: In JSON the keys of an object must be strings. NSDictionary + keys need not be, but attempting to convert an NSDictionary with + non-string keys into JSON will throw an exception.* + + */ + +@interface SBJsonStreamWriter : NSObject { + NSMutableDictionary *cache; +} + +@property (nonatomic, unsafe_unretained) SBJsonStreamWriterState *state; // Internal +@property (nonatomic, readonly, strong) NSMutableArray *stateStack; // Internal + +/** + delegate to receive JSON output + Delegate that will receive messages with output. + */ +@property (unsafe_unretained) id delegate; + +/** + The maximum recursing depth. + + Defaults to 512. If the input is nested deeper than this the input will be deemed to be + malicious and the parser returns nil, signalling an error. ("Nested too deep".) You can + turn off this security feature by setting the maxDepth value to 0. + */ +@property NSUInteger maxDepth; + +/** + Whether we are generating human-readable (multiline) JSON. + + Set whether or not to generate human-readable JSON. The default is NO, which produces + JSON without any whitespace between tokens. If set to YES, generates human-readable + JSON with linebreaks after each array value and dictionary key/value pair, indented two + spaces per nesting level. + */ +@property BOOL humanReadable; + +/** + Whether or not to sort the dictionary keys in the output. + + If this is set to YES, the dictionary keys in the JSON output will be in sorted order. + (This is useful if you need to compare two structures, for example.) The default is NO. + */ +@property BOOL sortKeys; + +/** + An optional comparator to be used if sortKeys is YES. + + If this is nil, sorting will be done via @selector(compare:). + */ +@property (copy) NSComparator sortKeysComparator; + +/// Contains the error description after an error has occured. +@property (copy) NSString *error; + +/** + Write an NSDictionary to the JSON stream. + @return YES if successful, or NO on failure + */ +- (BOOL)writeObject:(NSDictionary*)dict; + +/** + Write an NSArray to the JSON stream. + @return YES if successful, or NO on failure + */ +- (BOOL)writeArray:(NSArray *)array; + +/** + Start writing an Object to the stream + @return YES if successful, or NO on failure +*/ +- (BOOL)writeObjectOpen; + +/** + Close the current object being written + @return YES if successful, or NO on failure +*/ +- (BOOL)writeObjectClose; + +/** Start writing an Array to the stream + @return YES if successful, or NO on failure +*/ +- (BOOL)writeArrayOpen; + +/** Close the current Array being written + @return YES if successful, or NO on failure +*/ +- (BOOL)writeArrayClose; + +/** Write a null to the stream + @return YES if successful, or NO on failure +*/ +- (BOOL)writeNull; + +/** Write a boolean to the stream + @return YES if successful, or NO on failure +*/ +- (BOOL)writeBool:(BOOL)x; + +/** Write a Number to the stream + @return YES if successful, or NO on failure +*/ +- (BOOL)writeNumber:(NSNumber*)n; + +/** Write a String to the stream + @return YES if successful, or NO on failure +*/ +- (BOOL)writeString:(NSString*)s; + +@end + +@interface SBJsonStreamWriter (Private) +- (BOOL)writeValue:(id)v; +- (void)appendBytes:(const void *)bytes length:(NSUInteger)length; +@end + diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.m new file mode 100755 index 0000000..61cd58e --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriter.m @@ -0,0 +1,367 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonStreamWriter.h" +#import "SBJsonStreamWriterState.h" + +static NSNumber *kTrue; +static NSNumber *kFalse; +static NSNumber *kPositiveInfinity; +static NSNumber *kNegativeInfinity; + + +@implementation SBJsonStreamWriter + +@synthesize error; +@synthesize maxDepth; +@synthesize state; +@synthesize stateStack; +@synthesize humanReadable; +@synthesize sortKeys; +@synthesize sortKeysComparator; + ++ (void)initialize { + kPositiveInfinity = [NSNumber numberWithDouble:+HUGE_VAL]; + kNegativeInfinity = [NSNumber numberWithDouble:-HUGE_VAL]; + kTrue = [NSNumber numberWithBool:YES]; + kFalse = [NSNumber numberWithBool:NO]; +} + +#pragma mark Housekeeping + +@synthesize delegate; + +- (id)init { + self = [super init]; + if (self) { + maxDepth = 32u; + stateStack = [[NSMutableArray alloc] initWithCapacity:maxDepth]; + state = [SBJsonStreamWriterStateStart sharedInstance]; + cache = [[NSMutableDictionary alloc] initWithCapacity:32]; + } + return self; +} + +#pragma mark Methods + +- (void)appendBytes:(const void *)bytes length:(NSUInteger)length { + [delegate writer:self appendBytes:bytes length:length]; +} + +- (BOOL)writeObject:(NSDictionary *)dict { + if (![self writeObjectOpen]) + return NO; + + NSArray *keys = [dict allKeys]; + + if (sortKeys) { + if (sortKeysComparator) { + keys = [keys sortedArrayWithOptions:NSSortStable usingComparator:sortKeysComparator]; + } + else{ + keys = [keys sortedArrayUsingSelector:@selector(compare:)]; + } + } + + for (id k in keys) { + if (![k isKindOfClass:[NSString class]]) { + self.error = [NSString stringWithFormat:@"JSON object key must be string: %@", k]; + return NO; + } + + if (![self writeString:k]) + return NO; + if (![self writeValue:[dict objectForKey:k]]) + return NO; + } + + return [self writeObjectClose]; +} + +- (BOOL)writeArray:(NSArray*)array { + if (![self writeArrayOpen]) + return NO; + for (id v in array) + if (![self writeValue:v]) + return NO; + return [self writeArrayClose]; +} + + +- (BOOL)writeObjectOpen { + if ([state isInvalidState:self]) return NO; + if ([state expectingKey:self]) return NO; + [state appendSeparator:self]; + if (humanReadable && stateStack.count) [state appendWhitespace:self]; + + [stateStack addObject:state]; + self.state = [SBJsonStreamWriterStateObjectStart sharedInstance]; + + if (maxDepth && stateStack.count > maxDepth) { + self.error = @"Nested too deep"; + return NO; + } + + [delegate writer:self appendBytes:"{" length:1]; + return YES; +} + +- (BOOL)writeObjectClose { + if ([state isInvalidState:self]) return NO; + + SBJsonStreamWriterState *prev = state; + + self.state = [stateStack lastObject]; + [stateStack removeLastObject]; + + if (humanReadable) [prev appendWhitespace:self]; + [delegate writer:self appendBytes:"}" length:1]; + + [state transitionState:self]; + return YES; +} + +- (BOOL)writeArrayOpen { + if ([state isInvalidState:self]) return NO; + if ([state expectingKey:self]) return NO; + [state appendSeparator:self]; + if (humanReadable && stateStack.count) [state appendWhitespace:self]; + + [stateStack addObject:state]; + self.state = [SBJsonStreamWriterStateArrayStart sharedInstance]; + + if (maxDepth && stateStack.count > maxDepth) { + self.error = @"Nested too deep"; + return NO; + } + + [delegate writer:self appendBytes:"[" length:1]; + return YES; +} + +- (BOOL)writeArrayClose { + if ([state isInvalidState:self]) return NO; + if ([state expectingKey:self]) return NO; + + SBJsonStreamWriterState *prev = state; + + self.state = [stateStack lastObject]; + [stateStack removeLastObject]; + + if (humanReadable) [prev appendWhitespace:self]; + [delegate writer:self appendBytes:"]" length:1]; + + [state transitionState:self]; + return YES; +} + +- (BOOL)writeNull { + if ([state isInvalidState:self]) return NO; + if ([state expectingKey:self]) return NO; + [state appendSeparator:self]; + if (humanReadable) [state appendWhitespace:self]; + + [delegate writer:self appendBytes:"null" length:4]; + [state transitionState:self]; + return YES; +} + +- (BOOL)writeBool:(BOOL)x { + if ([state isInvalidState:self]) return NO; + if ([state expectingKey:self]) return NO; + [state appendSeparator:self]; + if (humanReadable) [state appendWhitespace:self]; + + if (x) + [delegate writer:self appendBytes:"true" length:4]; + else + [delegate writer:self appendBytes:"false" length:5]; + [state transitionState:self]; + return YES; +} + + +- (BOOL)writeValue:(id)o { + if ([o isKindOfClass:[NSDictionary class]]) { + return [self writeObject:o]; + + } else if ([o isKindOfClass:[NSArray class]]) { + return [self writeArray:o]; + + } else if ([o isKindOfClass:[NSString class]]) { + [self writeString:o]; + return YES; + + } else if ([o isKindOfClass:[NSNumber class]]) { + return [self writeNumber:o]; + + } else if ([o isKindOfClass:[NSNull class]]) { + return [self writeNull]; + + } else if ([o respondsToSelector:@selector(proxyForJson)]) { + return [self writeValue:[o proxyForJson]]; + + } + + self.error = [NSString stringWithFormat:@"JSON serialisation not supported for %@", [o class]]; + return NO; +} + +static const char *strForChar(int c) { + switch (c) { + case 0: return "\\u0000"; break; + case 1: return "\\u0001"; break; + case 2: return "\\u0002"; break; + case 3: return "\\u0003"; break; + case 4: return "\\u0004"; break; + case 5: return "\\u0005"; break; + case 6: return "\\u0006"; break; + case 7: return "\\u0007"; break; + case 8: return "\\b"; break; + case 9: return "\\t"; break; + case 10: return "\\n"; break; + case 11: return "\\u000b"; break; + case 12: return "\\f"; break; + case 13: return "\\r"; break; + case 14: return "\\u000e"; break; + case 15: return "\\u000f"; break; + case 16: return "\\u0010"; break; + case 17: return "\\u0011"; break; + case 18: return "\\u0012"; break; + case 19: return "\\u0013"; break; + case 20: return "\\u0014"; break; + case 21: return "\\u0015"; break; + case 22: return "\\u0016"; break; + case 23: return "\\u0017"; break; + case 24: return "\\u0018"; break; + case 25: return "\\u0019"; break; + case 26: return "\\u001a"; break; + case 27: return "\\u001b"; break; + case 28: return "\\u001c"; break; + case 29: return "\\u001d"; break; + case 30: return "\\u001e"; break; + case 31: return "\\u001f"; break; + case 34: return "\\\""; break; + case 92: return "\\\\"; break; + } + NSLog(@"FUTFUTFUT: -->'%c'<---", c); + return "FUTFUTFUT"; +} + +- (BOOL)writeString:(NSString*)string { + if ([state isInvalidState:self]) return NO; + [state appendSeparator:self]; + if (humanReadable) [state appendWhitespace:self]; + + NSMutableData *buf = [cache objectForKey:string]; + if (!buf) { + + NSUInteger len = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + const char *utf8 = [string UTF8String]; + NSUInteger written = 0, i = 0; + + buf = [NSMutableData dataWithCapacity:(NSUInteger)(len * 1.1f)]; + [buf appendBytes:"\"" length:1]; + + for (i = 0; i < len; i++) { + int c = utf8[i]; + BOOL isControlChar = c >= 0 && c < 32; + if (isControlChar || c == '"' || c == '\\') { + if (i - written) + [buf appendBytes:utf8 + written length:i - written]; + written = i + 1; + + const char *t = strForChar(c); + [buf appendBytes:t length:strlen(t)]; + } + } + + if (i - written) + [buf appendBytes:utf8 + written length:i - written]; + + [buf appendBytes:"\"" length:1]; + [cache setObject:buf forKey:string]; + } + + [delegate writer:self appendBytes:[buf bytes] length:[buf length]]; + [state transitionState:self]; + return YES; +} + +- (BOOL)writeNumber:(NSNumber*)number { + if (number == kTrue || number == kFalse) + return [self writeBool:[number boolValue]]; + + if ([state isInvalidState:self]) return NO; + if ([state expectingKey:self]) return NO; + [state appendSeparator:self]; + if (humanReadable) [state appendWhitespace:self]; + + if ([kPositiveInfinity isEqualToNumber:number]) { + self.error = @"+Infinity is not a valid number in JSON"; + return NO; + + } else if ([kNegativeInfinity isEqualToNumber:number]) { + self.error = @"-Infinity is not a valid number in JSON"; + return NO; + + } else if (isnan([number doubleValue])) { + self.error = @"NaN is not a valid number in JSON"; + return NO; + } + + const char *objcType = [number objCType]; + char num[128]; + size_t len; + + switch (objcType[0]) { + case 'c': case 'i': case 's': case 'l': case 'q': + len = snprintf(num, sizeof num, "%lld", [number longLongValue]); + break; + case 'C': case 'I': case 'S': case 'L': case 'Q': + len = snprintf(num, sizeof num, "%llu", [number unsignedLongLongValue]); + break; + case 'f': case 'd': default: { + len = snprintf(num, sizeof num, "%.17g", [number doubleValue]); + break; + } + } + [delegate writer:self appendBytes:num length: len]; + [state transitionState:self]; + return YES; +} + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.h new file mode 100755 index 0000000..b12d0d5 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.h @@ -0,0 +1,36 @@ +/* + Copyright (C) 2011 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import "SBJsonStreamWriter.h" + +@interface SBJsonStreamWriterAccumulator : NSObject + +@property (readonly, copy) NSMutableData* data; + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.m new file mode 100755 index 0000000..d78c317 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterAccumulator.m @@ -0,0 +1,56 @@ +/* + Copyright (C) 2011 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonStreamWriterAccumulator.h" + + +@implementation SBJsonStreamWriterAccumulator + +@synthesize data; + +- (id)init { + self = [super init]; + if (self) { + data = [[NSMutableData alloc] initWithCapacity:8096u]; + } + return self; +} + + +#pragma mark SBJsonStreamWriterDelegate + +- (void)writer:(SBJsonStreamWriter *)writer appendBytes:(const void *)bytes length:(NSUInteger)length { + [data appendBytes:bytes length:length]; +} + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.h b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.h new file mode 100755 index 0000000..90d442a --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.h @@ -0,0 +1,69 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +@class SBJsonStreamWriter; + +@interface SBJsonStreamWriterState : NSObject ++ (id)sharedInstance; +- (BOOL)isInvalidState:(SBJsonStreamWriter*)writer; +- (void)appendSeparator:(SBJsonStreamWriter*)writer; +- (BOOL)expectingKey:(SBJsonStreamWriter*)writer; +- (void)transitionState:(SBJsonStreamWriter*)writer; +- (void)appendWhitespace:(SBJsonStreamWriter*)writer; +@end + +@interface SBJsonStreamWriterStateObjectStart : SBJsonStreamWriterState +@end + +@interface SBJsonStreamWriterStateObjectKey : SBJsonStreamWriterStateObjectStart +@end + +@interface SBJsonStreamWriterStateObjectValue : SBJsonStreamWriterState +@end + +@interface SBJsonStreamWriterStateArrayStart : SBJsonStreamWriterState +@end + +@interface SBJsonStreamWriterStateArrayValue : SBJsonStreamWriterState +@end + +@interface SBJsonStreamWriterStateStart : SBJsonStreamWriterState +@end + +@interface SBJsonStreamWriterStateComplete : SBJsonStreamWriterState +@end + +@interface SBJsonStreamWriterStateError : SBJsonStreamWriterState +@end + diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.m b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.m new file mode 100755 index 0000000..a87b447 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonStreamWriterState.m @@ -0,0 +1,147 @@ +/* + Copyright (c) 2010, Stig Brautaset. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + Neither the name of the the author nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED + TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonStreamWriterState.h" +#import "SBJsonStreamWriter.h" + +#define SINGLETON \ ++ (id)sharedInstance { \ + static id state = nil; \ + if (!state) { \ + @synchronized(self) { \ + if (!state) state = [[self alloc] init]; \ + } \ + } \ + return state; \ +} + + +@implementation SBJsonStreamWriterState ++ (id)sharedInstance { return nil; } +- (BOOL)isInvalidState:(SBJsonStreamWriter*)writer { return NO; } +- (void)appendSeparator:(SBJsonStreamWriter*)writer {} +- (BOOL)expectingKey:(SBJsonStreamWriter*)writer { return NO; } +- (void)transitionState:(SBJsonStreamWriter *)writer {} +- (void)appendWhitespace:(SBJsonStreamWriter*)writer { + [writer appendBytes:"\n" length:1]; + for (NSUInteger i = 0; i < writer.stateStack.count; i++) + [writer appendBytes:" " length:2]; +} +@end + +@implementation SBJsonStreamWriterStateObjectStart + +SINGLETON + +- (void)transitionState:(SBJsonStreamWriter *)writer { + writer.state = [SBJsonStreamWriterStateObjectValue sharedInstance]; +} +- (BOOL)expectingKey:(SBJsonStreamWriter *)writer { + writer.error = @"JSON object key must be string"; + return YES; +} +@end + +@implementation SBJsonStreamWriterStateObjectKey + +SINGLETON + +- (void)appendSeparator:(SBJsonStreamWriter *)writer { + [writer appendBytes:"," length:1]; +} +@end + +@implementation SBJsonStreamWriterStateObjectValue + +SINGLETON + +- (void)appendSeparator:(SBJsonStreamWriter *)writer { + [writer appendBytes:":" length:1]; +} +- (void)transitionState:(SBJsonStreamWriter *)writer { + writer.state = [SBJsonStreamWriterStateObjectKey sharedInstance]; +} +- (void)appendWhitespace:(SBJsonStreamWriter *)writer { + [writer appendBytes:" " length:1]; +} +@end + +@implementation SBJsonStreamWriterStateArrayStart + +SINGLETON + +- (void)transitionState:(SBJsonStreamWriter *)writer { + writer.state = [SBJsonStreamWriterStateArrayValue sharedInstance]; +} +@end + +@implementation SBJsonStreamWriterStateArrayValue + +SINGLETON + +- (void)appendSeparator:(SBJsonStreamWriter *)writer { + [writer appendBytes:"," length:1]; +} +@end + +@implementation SBJsonStreamWriterStateStart + +SINGLETON + + +- (void)transitionState:(SBJsonStreamWriter *)writer { + writer.state = [SBJsonStreamWriterStateComplete sharedInstance]; +} +- (void)appendSeparator:(SBJsonStreamWriter *)writer { +} +@end + +@implementation SBJsonStreamWriterStateComplete + +SINGLETON + +- (BOOL)isInvalidState:(SBJsonStreamWriter*)writer { + writer.error = @"Stream is closed"; + return YES; +} +@end + +@implementation SBJsonStreamWriterStateError + +SINGLETON + +@end + diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonWriter.h b/Origami Plugin/SocketIO/SBJson/SBJsonWriter.h new file mode 100755 index 0000000..aaf6b0b --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonWriter.h @@ -0,0 +1,103 @@ +/* + Copyright (C) 2009 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#import + +/** + The JSON writer class. + + This uses SBJsonStreamWriter internally. + + */ + +@interface SBJsonWriter : NSObject + +/** + The maximum recursing depth. + + Defaults to 32. If the input is nested deeper than this the input will be deemed to be + malicious and the parser returns nil, signalling an error. ("Nested too deep".) You can + turn off this security feature by setting the maxDepth value to 0. + */ +@property NSUInteger maxDepth; + +/** + Return an error trace, or nil if there was no errors. + + Note that this method returns the trace of the last method that failed. + You need to check the return value of the call you're making to figure out + if the call actually failed, before you know call this method. + */ +@property (readonly, copy) NSString *error; + +/** + Whether we are generating human-readable (multiline) JSON. + + Set whether or not to generate human-readable JSON. The default is NO, which produces + JSON without any whitespace. (Except inside strings.) If set to YES, generates human-readable + JSON with linebreaks after each array value and dictionary key/value pair, indented two + spaces per nesting level. + */ +@property BOOL humanReadable; + +/** + Whether or not to sort the dictionary keys in the output. + + If this is set to YES, the dictionary keys in the JSON output will be in sorted order. + (This is useful if you need to compare two structures, for example.) The default is NO. + */ +@property BOOL sortKeys; + +/** + An optional comparator to be used if sortKeys is YES. + + If this is nil, sorting will be done via @selector(compare:). + */ +@property (copy) NSComparator sortKeysComparator; + +/** + Generates string with JSON representation for the given object. + + Returns a string containing JSON representation of the passed in value, or nil on error. + If nil is returned and error is not NULL, *error can be interrogated to find the cause of the error. + + @param value any instance that can be represented as JSON text. + */ +- (NSString*)stringWithObject:(id)value; + +/** + Generates JSON representation for the given object. + + Returns an NSData object containing JSON represented as UTF8 text, or nil on error. + + @param value any instance that can be represented as JSON text. + */ +- (NSData*)dataWithObject:(id)value; + +@end diff --git a/Origami Plugin/SocketIO/SBJson/SBJsonWriter.m b/Origami Plugin/SocketIO/SBJson/SBJsonWriter.m new file mode 100755 index 0000000..34e4db4 --- /dev/null +++ b/Origami Plugin/SocketIO/SBJson/SBJsonWriter.m @@ -0,0 +1,103 @@ +/* + Copyright (C) 2009 Stig Brautaset. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + * Neither the name of the author nor the names of its contributors may be used + to endorse or promote products derived from this software without specific + prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#if !__has_feature(objc_arc) +#error "This source file must be compiled with ARC enabled!" +#endif + +#import "SBJsonWriter.h" +#import "SBJsonStreamWriter.h" +#import "SBJsonStreamWriterAccumulator.h" + + +@interface SBJsonWriter () +@property (copy) NSString *error; +@end + +@implementation SBJsonWriter + +@synthesize sortKeys; +@synthesize humanReadable; + +@synthesize error; +@synthesize maxDepth; + +@synthesize sortKeysComparator; + +- (id)init { + self = [super init]; + if (self) { + self.maxDepth = 32u; + } + return self; +} + + +- (NSString*)stringWithObject:(id)value { + NSData *data = [self dataWithObject:value]; + if (data) + return [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + return nil; +} + +- (NSData*)dataWithObject:(id)object { + self.error = nil; + + SBJsonStreamWriterAccumulator *accumulator = [[SBJsonStreamWriterAccumulator alloc] init]; + + SBJsonStreamWriter *streamWriter = [[SBJsonStreamWriter alloc] init]; + streamWriter.sortKeys = self.sortKeys; + streamWriter.maxDepth = self.maxDepth; + streamWriter.sortKeysComparator = self.sortKeysComparator; + streamWriter.humanReadable = self.humanReadable; + streamWriter.delegate = accumulator; + + BOOL ok = NO; + if ([object isKindOfClass:[NSDictionary class]]) + ok = [streamWriter writeObject:object]; + + else if ([object isKindOfClass:[NSArray class]]) + ok = [streamWriter writeArray:object]; + + else if ([object respondsToSelector:@selector(proxyForJson)]) + return [self dataWithObject:[object proxyForJson]]; + else { + self.error = @"Not valid type for JSON"; + return nil; + } + + if (ok) + return accumulator.data; + + self.error = streamWriter.error; + return nil; +} + + +@end diff --git a/Origami Plugin/SocketIO/SocketIO.h b/Origami Plugin/SocketIO/SocketIO.h new file mode 100755 index 0000000..5becec2 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIO.h @@ -0,0 +1,125 @@ +// +// SocketIO.h +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import + +#import "SocketIOTransport.h" + +@class SocketIO; +@class SocketIOPacket; + +typedef void(^SocketIOCallback)(id argsData); + +extern NSString* const SocketIOError; + +typedef enum { + SocketIOServerRespondedWithInvalidConnectionData = -1, + SocketIOServerRespondedWithDisconnect = -2, + SocketIOHeartbeatTimeout = -3, + SocketIOWebSocketClosed = -4, + SocketIOTransportsNotSupported = -5, + SocketIOHandshakeFailed = -6, + SocketIODataCouldNotBeSend = -7 +} SocketIOErrorCodes; + + +@protocol SocketIODelegate +@optional +- (void) socketIODidConnect:(SocketIO *)socket; +- (void) socketIODidDisconnect:(SocketIO *)socket disconnectedWithError:(NSError *)error; +- (void) socketIO:(SocketIO *)socket didReceiveMessage:(SocketIOPacket *)packet; +- (void) socketIO:(SocketIO *)socket didReceiveJSON:(SocketIOPacket *)packet; +- (void) socketIO:(SocketIO *)socket didReceiveEvent:(SocketIOPacket *)packet; +- (void) socketIO:(SocketIO *)socket didSendMessage:(SocketIOPacket *)packet; +- (void) socketIO:(SocketIO *)socket onError:(NSError *)error; + +// TODO: deprecated -> to be removed +- (void) socketIO:(SocketIO *)socket failedToConnectWithError:(NSError *)error __attribute__((deprecated)); +- (void) socketIOHandshakeFailed:(SocketIO *)socket __attribute__((deprecated)); +@end + + +@interface SocketIO : NSObject +{ + NSString *_host; + NSInteger _port; + NSString *_sid; + NSString *_endpoint; + NSDictionary *_params; + + __unsafe_unretained id _delegate; + + NSObject *_transport; + + BOOL _isConnected; + BOOL _isConnecting; + BOOL _useSecure; + + NSURLConnection *_handshake; + + // heartbeat + NSTimeInterval _heartbeatTimeout; + dispatch_source_t _timeout; + + NSMutableArray *_queue; + + // acknowledge + NSMutableDictionary *_acks; + NSInteger _ackCount; + + // http request + NSMutableData *_httpRequestData; + + // get all arguments from ack? (https://github.com/pkyeck/socket.IO-objc/pull/85) + BOOL _returnAllDataFromAck; +} + +@property (nonatomic, readonly) NSString *host; +@property (nonatomic, readonly) NSInteger port; +@property (nonatomic, readonly) NSString *sid; +@property (nonatomic, readonly) NSTimeInterval heartbeatTimeout; +@property (nonatomic) BOOL useSecure; +@property (nonatomic, readonly) BOOL isConnected, isConnecting; +@property (nonatomic, unsafe_unretained) id delegate; +@property (nonatomic) BOOL returnAllDataFromAck; + +- (id) initWithDelegate:(id)delegate; +- (void) connectToHost:(NSString *)host onPort:(NSInteger)port; +- (void) connectToHost:(NSString *)host onPort:(NSInteger)port withParams:(NSDictionary *)params; +- (void) connectToHost:(NSString *)host onPort:(NSInteger)port withParams:(NSDictionary *)params withNamespace:(NSString *)endpoint; +- (void) connectToHost:(NSString *)host onPort:(NSInteger)port withParams:(NSDictionary *)params withNamespace:(NSString *)endpoint withConnectionTimeout: (NSTimeInterval) connectionTimeout; + +- (void) disconnect; +- (void) disconnectForced; + +- (void) sendMessage:(NSString *)data; +- (void) sendMessage:(NSString *)data withAcknowledge:(SocketIOCallback)function; +- (void) sendJSON:(NSDictionary *)data; +- (void) sendJSON:(NSDictionary *)data withAcknowledge:(SocketIOCallback)function; +- (void) sendEvent:(NSString *)eventName withData:(id)data; +- (void) sendEvent:(NSString *)eventName withData:(id)data andAcknowledge:(SocketIOCallback)function; +- (void) sendAcknowledgement:(NSString*)pId withArgs:(NSArray *)data; + +- (void) setResourceName:(NSString *)name; + +@end \ No newline at end of file diff --git a/Origami Plugin/SocketIO/SocketIO.m b/Origami Plugin/SocketIO/SocketIO.m new file mode 100755 index 0000000..be56a0a --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIO.m @@ -0,0 +1,839 @@ +// +// SocketIO.m +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import "SocketIO.h" +#import "SocketIOPacket.h" +#import "SocketIOJSONSerialization.h" + +#import "SocketIOTransportWebsocket.h" +#import "SocketIOTransportXHR.h" + +#define DEBUG_LOGS 0 +#define DEBUG_CERTIFICATE 1 + +#if DEBUG_LOGS +#define DEBUGLOG(...) NSLog(__VA_ARGS__) +#else +#define DEBUGLOG(...) +#endif + +static NSString* kResourceName = @"socket.io"; +static NSString* kHandshakeURL = @"%@://%@%@/%@/1/?t=%d%@"; +static NSString* kForceDisconnectURL = @"%@://%@%@/%@/1/xhr-polling/%@?disconnect"; + +float const defaultConnectionTimeout = 10.0f; + +NSString* const SocketIOError = @"SocketIOError"; +NSString* const SocketIOException = @"SocketIOException"; + +# pragma mark - +# pragma mark SocketIO's private interface + +@interface SocketIO (Private) + +- (NSArray*) arrayOfCaptureComponentsMatchedByRegex:(NSString*)regex; + +- (void) setTimeout; +- (void) onTimeout; + +- (void) onConnect:(SocketIOPacket *)packet; +- (void) onDisconnect:(NSError *)error; + +- (void) sendDisconnect; +- (void) sendHearbeat; +- (void) send:(SocketIOPacket *)packet; + +- (NSString *) addAcknowledge:(SocketIOCallback)function; +- (void) removeAcknowledgeForKey:(NSString *)key; +- (NSMutableArray*) getMatchesFrom:(NSString*)data with:(NSString*)regex; + +@end + +# pragma mark - +# pragma mark SocketIO implementation + +@implementation SocketIO + +@synthesize isConnected = _isConnected, + isConnecting = _isConnecting, + useSecure = _useSecure, + delegate = _delegate, + heartbeatTimeout = _heartbeatTimeout, + returnAllDataFromAck = _returnAllDataFromAck; + +- (id) initWithDelegate:(id)delegate +{ + self = [super init]; + if (self) { + _delegate = delegate; + _queue = [[NSMutableArray alloc] init]; + _ackCount = 0; + _acks = [[NSMutableDictionary alloc] init]; + _returnAllDataFromAck = NO; + } + return self; +} + +- (void) connectToHost:(NSString *)host onPort:(NSInteger)port +{ + [self connectToHost:host onPort:port withParams:nil withNamespace:@"" withConnectionTimeout:defaultConnectionTimeout]; +} + +- (void) connectToHost:(NSString *)host onPort:(NSInteger)port withParams:(NSDictionary *)params +{ + [self connectToHost:host onPort:port withParams:params withNamespace:@"" withConnectionTimeout:defaultConnectionTimeout]; +} + +- (void) connectToHost:(NSString *)host + onPort:(NSInteger)port + withParams:(NSDictionary *)params + withNamespace:(NSString *)endpoint +{ + [self connectToHost:host onPort:port withParams:params withNamespace:@"" withConnectionTimeout:defaultConnectionTimeout]; +} + +- (void) connectToHost:(NSString *)host + onPort:(NSInteger)port + withParams:(NSDictionary *)params + withNamespace:(NSString *)endpoint + withConnectionTimeout:(NSTimeInterval)connectionTimeout +{ + if (!_isConnected && !_isConnecting) { + _isConnecting = YES; + + _host = host; + _port = port; + _params = params; + _endpoint = [endpoint copy]; + + // create a query parameters string + NSMutableString *query = [[NSMutableString alloc] initWithString:@""]; + [params enumerateKeysAndObjectsUsingBlock: ^(id key, id value, BOOL *stop) { + [query appendFormat:@"&%@=%@", key, value]; + }]; + + // do handshake via HTTP request + NSString *protocol = _useSecure ? @"https" : @"http"; + NSString *port = _port ? [NSString stringWithFormat:@":%ld", (long)_port] : @""; + NSString *handshakeUrl = [NSString stringWithFormat:kHandshakeURL, protocol, _host, port, kResourceName, rand(), query]; + + DEBUGLOG(@"Connecting to socket with URL: %@", handshakeUrl); + query = nil; + + // make a request + NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:handshakeUrl] + cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData + timeoutInterval:connectionTimeout]; + + _handshake = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:NO]; + [_handshake scheduleInRunLoop:[NSRunLoop mainRunLoop] forMode:NSDefaultRunLoopMode]; + [_handshake start]; + + if (_handshake) { + _httpRequestData = [NSMutableData data]; + } + else { + // connection failed + [self connection:_handshake didFailWithError:nil]; + } + } +} + +- (void) disconnect +{ + if (_isConnected) { + [self sendDisconnect]; + } + else if (_isConnecting) { + [_handshake cancel]; + [self onDisconnect: nil]; + } +} + +- (void) disconnectForced +{ + NSString *protocol = [self useSecure] ? @"https" : @"http"; + NSString *port = _port ? [NSString stringWithFormat:@":%ld", (long)_port] : @""; + NSString *urlString = [NSString stringWithFormat:kForceDisconnectURL, protocol, _host, port, kResourceName, _sid]; + NSURL *url = [NSURL URLWithString:urlString]; + DEBUGLOG(@"Force disconnect at: %@", urlString); + + NSURLRequest *request = [NSURLRequest requestWithURL:url]; + NSError *error = nil; + NSHTTPURLResponse *response = nil; + + [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; + + if (error || [response statusCode] != 200) { + DEBUGLOG(@"Error during disconnect: %@", error); + } + + [self onDisconnect:error]; +} + +- (void) sendMessage:(NSString *)data +{ + [self sendMessage:data withAcknowledge:nil]; +} + +- (void) sendMessage:(NSString *)data withAcknowledge:(SocketIOCallback)function +{ + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"message"]; + packet.data = data; + packet.pId = [self addAcknowledge:function]; + [self send:packet]; +} + +- (void) sendJSON:(NSDictionary *)data +{ + [self sendJSON:data withAcknowledge:nil]; +} + +- (void) sendJSON:(NSDictionary *)data withAcknowledge:(SocketIOCallback)function +{ + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"json"]; + packet.data = [SocketIOJSONSerialization JSONStringFromObject:data error:nil]; + packet.pId = [self addAcknowledge:function]; + [self send:packet]; +} + +- (void) sendEvent:(NSString *)eventName withData:(id)data +{ + [self sendEvent:eventName withData:data andAcknowledge:nil]; +} + +- (void) sendEvent:(NSString *)eventName withData:(id)data andAcknowledge:(SocketIOCallback)function +{ + NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithObject:eventName forKey:@"name"]; + + // do not require arguments + if (data != nil) { + [dict setObject:[NSArray arrayWithObject:data] forKey:@"args"]; + } + + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"event"]; + packet.data = [SocketIOJSONSerialization JSONStringFromObject:dict error:nil]; + packet.pId = [self addAcknowledge:function]; + if (function) { + packet.ack = @"data"; + } + [self send:packet]; +} + +- (void) sendAcknowledgement:(NSString *)pId withArgs:(NSArray *)data +{ + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"ack"]; + packet.data = [SocketIOJSONSerialization JSONStringFromObject:data error:nil]; + packet.pId = pId; + packet.ack = @"data"; + + [self send:packet]; +} + +- (void) setResourceName:(NSString *)name +{ + kResourceName = [name copy]; +} + +# pragma mark - +# pragma mark private methods + +- (void) sendDisconnect +{ + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"disconnect"]; + [self send:packet]; + [self onDisconnect:nil]; +} + +- (void) sendConnect +{ + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"connect"]; + [self send:packet]; +} + +- (void) sendHeartbeat +{ + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithType:@"heartbeat"]; + [self send:packet]; +} + +- (void) send:(SocketIOPacket *)packet +{ + if (![self isConnected] && ![self isConnecting]) { + DEBUGLOG(@"Already disconnected!"); + return; + } + DEBUGLOG(@"send()"); + NSNumber *type = [packet typeAsNumber]; + NSMutableArray *encoded = [NSMutableArray arrayWithObject:type]; + + NSString *pId = packet.pId != nil ? packet.pId : @""; + if ([packet.ack isEqualToString:@"data"]) { + pId = [pId stringByAppendingString:@"+"]; + } + + // Do not write pid for acknowledgements + if ([type intValue] != 6) { + [encoded addObject:pId]; + } + + // Add the end point for the namespace to be used, as long as it is not + // an ACK, heartbeat, or disconnect packet + if ([type intValue] != 6 && [type intValue] != 2 && [type intValue] != 0) { + [encoded addObject:_endpoint]; + } + else { + [encoded addObject:@""]; + } + + if (packet.data != nil) { + NSString *ackpId = @""; + // This is an acknowledgement packet, so, prepend the ack pid to the data + if ([type intValue] == 6) { + ackpId = [NSString stringWithFormat:@":%@%@", packet.pId, @"+"]; + } + [encoded addObject:[NSString stringWithFormat:@"%@%@", ackpId, packet.data]]; + } + + NSString *req = [encoded componentsJoinedByString:@":"]; + if (![_transport isReady]) { + DEBUGLOG(@"queue >>> %@", req); + [_queue addObject:packet]; + } + else { + DEBUGLOG(@"send() >>> %@", req); + [_transport send:req]; + + if ([_delegate respondsToSelector:@selector(socketIO:didSendMessage:)]) { + [_delegate socketIO:self didSendMessage:packet]; + } + } +} + +- (void) doQueue +{ + DEBUGLOG(@"doQueue() >> %lu", (unsigned long)[_queue count]); + + // TODO send all packets at once ... not as seperate packets + while ([_queue count] > 0) { + SocketIOPacket *packet = [_queue objectAtIndex:0]; + [self send:packet]; + [_queue removeObject:packet]; + } +} + +- (void) onConnect:(SocketIOPacket *)packet +{ + DEBUGLOG(@"onConnect()"); + + _isConnected = YES; + + // Send the connected packet so the server knows what it's dealing with. + // Only required when endpoint/namespace is present + if ([_endpoint length] > 0) { + // Make sure the packet we received has an endpoint, otherwise send it again + if (![packet.endpoint isEqualToString:_endpoint]) { + DEBUGLOG(@"onConnect() >> End points do not match, resending connect packet"); + [self sendConnect]; + return; + } + } + + _isConnecting = NO; + + if ([_delegate respondsToSelector:@selector(socketIODidConnect:)]) { + [_delegate socketIODidConnect:self]; + } + + // send any queued packets + [self doQueue]; + + [self setTimeout]; +} + +# pragma mark - +# pragma mark Acknowledge methods + +- (NSString *) addAcknowledge:(SocketIOCallback)function +{ + if (function) { + ++_ackCount; + NSString *ac = [NSString stringWithFormat:@"%ld", (long)_ackCount]; + [_acks setObject:[function copy] forKey:ac]; + return ac; + } + return nil; +} + +- (void) removeAcknowledgeForKey:(NSString *)key +{ + [_acks removeObjectForKey:key]; +} + +# pragma mark - +# pragma mark Heartbeat methods + +- (void) onTimeout +{ + if (_timeout) { + dispatch_source_cancel(_timeout); + _timeout = NULL; + } + + DEBUGLOG(@"Timed out waiting for heartbeat."); + [self onDisconnect:[NSError errorWithDomain:SocketIOError + code:SocketIOHeartbeatTimeout + userInfo:nil]]; +} + +- (void) setTimeout +{ + DEBUGLOG(@"start/reset timeout"); + if (_timeout) { + dispatch_source_cancel(_timeout); + _timeout = NULL; + } + + _timeout = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, + 0, + 0, + dispatch_get_main_queue()); + + dispatch_source_set_timer(_timeout, + dispatch_time(DISPATCH_TIME_NOW, _heartbeatTimeout * NSEC_PER_SEC), + 0, + 0); + + __weak SocketIO *weakSelf = self; + + dispatch_source_set_event_handler(_timeout, ^{ + [weakSelf onTimeout]; + }); + + dispatch_resume(_timeout); + +} + + +# pragma mark - +# pragma mark Regex helper method +- (NSMutableArray*) getMatchesFrom:(NSString*)data with:(NSString*)regex +{ + NSRegularExpression *nsregexTest = [NSRegularExpression regularExpressionWithPattern:regex options:0 error:nil]; + NSArray *nsmatchesTest = [nsregexTest matchesInString:data options:0 range:NSMakeRange(0, [data length])]; + NSMutableArray *arr = [NSMutableArray array]; + + for (NSTextCheckingResult *nsmatchTest in nsmatchesTest) { + NSMutableArray *localMatch = [NSMutableArray array]; + for (NSUInteger i = 0, l = [nsmatchTest numberOfRanges]; i < l; i++) { + NSRange range = [nsmatchTest rangeAtIndex:i]; + NSString *nsmatchStr = nil; + if (range.location != NSNotFound && NSMaxRange(range) <= [data length]) { + nsmatchStr = [data substringWithRange:[nsmatchTest rangeAtIndex:i]]; + } + else { + nsmatchStr = @""; + } + [localMatch addObject:nsmatchStr]; + } + [arr addObject:localMatch]; + } + + return arr; +} + + +#pragma mark - +#pragma mark SocketIOTransport callbacks + +- (void) onData:(NSString *)data +{ + DEBUGLOG(@"onData %@", data); + + // data arrived -> reset timeout + [self setTimeout]; + + // check if data is valid (from socket.io.js) + NSString *regex = @"^([^:]+):([0-9]+)?(\\+)?:([^:]+)?:?(.*)?$"; + NSString *regexPieces = @"^([0-9]+)(\\+)?(.*)"; + + // create regex result + NSMutableArray *test = [self getMatchesFrom:data with:regex]; + + // valid data-string arrived + if ([test count] > 0) { + NSArray *result = [test objectAtIndex:0]; + + int idx = [[result objectAtIndex:1] intValue]; + SocketIOPacket *packet = [[SocketIOPacket alloc] initWithTypeIndex:idx]; + + packet.pId = [result objectAtIndex:2]; + + packet.ack = [result objectAtIndex:3]; + packet.endpoint = [result objectAtIndex:4]; + packet.data = [result objectAtIndex:5]; + + // + switch (idx) { + case 0: { + DEBUGLOG(@"disconnect"); + [self onDisconnect:[NSError errorWithDomain:SocketIOError + code:SocketIOServerRespondedWithDisconnect + userInfo:nil]]; + break; + } + case 1: { + DEBUGLOG(@"connected"); + // from socket.io.js ... not sure when data will contain sth?! + // packet.qs = data || ''; + [self onConnect:packet]; + break; + } + case 2: { + DEBUGLOG(@"heartbeat"); + [self sendHeartbeat]; + break; + } + case 3: { + DEBUGLOG(@"message"); + if (packet.data && ![packet.data isEqualToString:@""]) { + if ([_delegate respondsToSelector:@selector(socketIO:didReceiveMessage:)]) { + [_delegate socketIO:self didReceiveMessage:packet]; + } + } + break; + } + case 4: { + DEBUGLOG(@"json"); + if (packet.data && ![packet.data isEqualToString:@""]) { + if ([_delegate respondsToSelector:@selector(socketIO:didReceiveJSON:)]) { + [_delegate socketIO:self didReceiveJSON:packet]; + } + } + break; + } + case 5: { + DEBUGLOG(@"event"); + if (packet.data && ![packet.data isEqualToString:@""]) { + NSDictionary *json = [packet dataAsJSON]; + packet.name = [json objectForKey:@"name"]; + packet.args = [json objectForKey:@"args"]; + if ([_delegate respondsToSelector:@selector(socketIO:didReceiveEvent:)]) { + [_delegate socketIO:self didReceiveEvent:packet]; + } + } + break; + } + case 6: { + DEBUGLOG(@"ack"); + + // create regex result + NSMutableArray *pieces = [self getMatchesFrom:packet.data with:regexPieces]; + + if ([pieces count] > 0) { + NSArray *piece = [pieces objectAtIndex:0]; + int ackId = [[piece objectAtIndex:1] intValue]; + DEBUGLOG(@"ack id found: %d", ackId); + + NSString *argsStr = [piece objectAtIndex:3]; + id argsData = nil; + if (argsStr && ![argsStr isEqualToString:@""]) { + argsData = [SocketIOJSONSerialization objectFromJSONData:[argsStr dataUsingEncoding:NSUTF8StringEncoding] error:nil]; + // either send complete response or only the first arg to callback + if (!_returnAllDataFromAck && [argsData count] > 0) { + argsData = [argsData objectAtIndex:0]; + } + } + + // get selector for ackId + NSString *key = [NSString stringWithFormat:@"%d", ackId]; + SocketIOCallback callbackFunction = [_acks objectForKey:key]; + if (callbackFunction != nil) { + callbackFunction(argsData); + [self removeAcknowledgeForKey:key]; + } + } + + break; + } + case 7: { + DEBUGLOG(@"error"); + break; + } + case 8: { + DEBUGLOG(@"noop"); + break; + } + default: { + DEBUGLOG(@"command not found or not yet supported"); + break; + } + } + + packet = nil; + } + else { + DEBUGLOG(@"ERROR: data that has arrived wasn't valid"); + } +} + +- (void) onDisconnect:(NSError *)error +{ + DEBUGLOG(@"onDisconnect()"); + BOOL wasConnected = _isConnected; + BOOL wasConnecting = _isConnecting; + + _isConnected = NO; + _isConnecting = NO; + _sid = nil; + + [_queue removeAllObjects]; + + // Kill the heartbeat timer + if (_timeout) { + dispatch_source_cancel(_timeout); + _timeout = NULL; + } + + // Disconnect the websocket, just in case + if (_transport != nil) { + // clear websocket's delegate - otherwise crashes + _transport.delegate = nil; + [_transport close]; + } + + if ((wasConnected || wasConnecting)) { + if ([_delegate respondsToSelector:@selector(socketIODidDisconnect:disconnectedWithError:)]) { + [_delegate socketIODidDisconnect:self disconnectedWithError:error]; + } + } +} + +- (void) onError:(NSError *)error +{ + if ([_delegate respondsToSelector:@selector(socketIO:onError:)]) { + [_delegate socketIO:self onError:error]; + } +} + + +# pragma mark - +# pragma mark Handshake callbacks (NSURLConnectionDataDelegate) +- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response +{ + // check for server status code (http://gigliwood.com/weblog/Cocoa/Q__When_is_an_conne.html) + if ([response respondsToSelector:@selector(statusCode)]) { + NSInteger statusCode = [((NSHTTPURLResponse *)response) statusCode]; + DEBUGLOG(@"didReceiveResponse() %i", statusCode); + + if (statusCode >= 400) { + // stop connecting; no more delegate messages + [connection cancel]; + + NSString *error = [NSString stringWithFormat:NSLocalizedString(@"Server returned status code %d", @""), statusCode]; + NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:error forKey:NSLocalizedDescriptionKey]; + NSError *statusError = [NSError errorWithDomain:SocketIOError + code:statusCode + userInfo:errorInfo]; + // call error callback manually + [self connection:connection didFailWithError:statusError]; + } + } + + [_httpRequestData setLength:0]; +} + +- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data +{ + [_httpRequestData appendData:data]; +} + +- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error +{ + NSLog(@"ERROR: handshake failed ... %@", [error localizedDescription]); + + _isConnected = NO; + _isConnecting = NO; + + if ([_delegate respondsToSelector:@selector(socketIO:onError:)]) { + NSDictionary *errorInfo = [NSDictionary dictionaryWithObject:error forKey:NSLocalizedDescriptionKey]; + + NSError *err = [NSError errorWithDomain:SocketIOError + code:SocketIOHandshakeFailed + userInfo:errorInfo]; + + [_delegate socketIO:self onError:err]; + } + // TODO: deprecated - to be removed + else if ([_delegate respondsToSelector:@selector(socketIOHandshakeFailed:)]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [_delegate socketIOHandshakeFailed:self]; +#pragma clang diagnostic pop + } +} + +- (void) connectionDidFinishLoading:(NSURLConnection *)connection +{ + NSString *responseString = [[NSString alloc] initWithData:_httpRequestData encoding:NSASCIIStringEncoding]; + + DEBUGLOG(@"connectionDidFinishLoading() %@", responseString); + NSArray *data = [responseString componentsSeparatedByString:@":"]; + // should be SID : heartbeat timeout : connection timeout : supported transports + + // check each returned value (thanks for the input https://github.com/taiyangc) + BOOL connectionFailed = false; + NSError* error; + + _sid = [data objectAtIndex:0]; + if ([_sid length] < 1 || [data count] < 4) { + // did not receive valid data, possibly missing a useSecure? + connectionFailed = true; + } + else { + // check SID + DEBUGLOG(@"sid: %@", _sid); + NSString *regex = @"[^0-9]"; + NSPredicate *regexTest = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex]; + if ([_sid rangeOfString:@"error"].location != NSNotFound || [regexTest evaluateWithObject:_sid]) { + [self connectToHost:_host onPort:_port withParams:_params withNamespace:_endpoint]; + return; + } + + // check heartbeat timeout + _heartbeatTimeout = [[data objectAtIndex:1] floatValue]; + if (_heartbeatTimeout == 0.0) { + // couldn't find float value -> fail + connectionFailed = true; + } + else { + // add small buffer of 7sec (magic xD) otherwise heartbeat will be too late and connection is closed + _heartbeatTimeout += 7.0; + } + DEBUGLOG(@"heartbeatTimeout: %f", _heartbeatTimeout); + + // index 2 => connection timeout + + // get transports + NSString *t = [data objectAtIndex:3]; + NSArray *transports = [t componentsSeparatedByString:@","]; + DEBUGLOG(@"transports: %@", transports); + + if ([transports indexOfObject:@"websocket"] != NSNotFound) { + DEBUGLOG(@"websocket supported -> using it now"); + _transport = [[SocketIOTransportWebsocket alloc] initWithDelegate:self]; + } + else if ([transports indexOfObject:@"xhr-polling"] != NSNotFound) { + DEBUGLOG(@"xhr polling supported -> using it now"); + _transport = [[SocketIOTransportXHR alloc] initWithDelegate:self]; + } + else { + DEBUGLOG(@"no transport found that is supported :( -> fail"); + connectionFailed = true; + error = [NSError errorWithDomain:SocketIOError + code:SocketIOTransportsNotSupported + userInfo:nil]; + } + } + + // if connection didn't return the values we need -> fail + if (connectionFailed) { + // error already set!? + if (error == nil) { + error = [NSError errorWithDomain:SocketIOError + code:SocketIOServerRespondedWithInvalidConnectionData + userInfo:nil]; + } + + if ([_delegate respondsToSelector:@selector(socketIO:onError:)]) { + [_delegate socketIO:self onError:error]; + } + // TODO: deprecated - to be removed + else if ([_delegate respondsToSelector:@selector(socketIO:failedToConnectWithError:)]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + [_delegate socketIO:self failedToConnectWithError:error]; +#pragma clang diagnostic pop + } + + // make sure to do call all cleanup code + [self onDisconnect:error]; + + return; + } + + [_transport open]; +} + +#if DEBUG_CERTIFICATE + +// to deal with self-signed certificates +- (BOOL) connection:(NSURLConnection *)connection +canAuthenticateAgainstProtectionSpace:(NSURLProtectionSpace *)protectionSpace +{ + return [protectionSpace.authenticationMethod isEqualToString:NSURLAuthenticationMethodServerTrust]; +} + +- (void) connection:(NSURLConnection *)connection +didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge +{ + if ([challenge.protectionSpace.authenticationMethod + isEqualToString:NSURLAuthenticationMethodServerTrust]) { + // we only trust our own domain + if ([challenge.protectionSpace.host isEqualToString:_host]) { + SecTrustRef trust = challenge.protectionSpace.serverTrust; + NSURLCredential *credential = [NSURLCredential credentialForTrust:trust]; + [challenge.sender useCredential:credential forAuthenticationChallenge:challenge]; + } + } + + [challenge.sender continueWithoutCredentialForAuthenticationChallenge:challenge]; +} +#endif + + +# pragma mark - + +- (void) dealloc +{ + [_handshake cancel]; + _handshake = nil; + + _host = nil; + _sid = nil; + _endpoint = nil; + + _transport.delegate = nil; + _transport = nil; + + if (_timeout) { + dispatch_source_cancel(_timeout); + _timeout = NULL; + } + + _queue = nil; + _acks = nil; +} + + +@end diff --git a/Origami Plugin/SocketIO/SocketIOJSONSerialization.h b/Origami Plugin/SocketIO/SocketIOJSONSerialization.h new file mode 100755 index 0000000..8360a06 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOJSONSerialization.h @@ -0,0 +1,31 @@ +// +// SocketIOJSONSerialization.h +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import + +@interface SocketIOJSONSerialization : NSObject + ++ (id) objectFromJSONData:(NSData *)data error:(NSError **)error; ++ (NSString *) JSONStringFromObject:(id)object error:(NSError **)error; + +@end diff --git a/Origami Plugin/SocketIO/SocketIOJSONSerialization.m b/Origami Plugin/SocketIO/SocketIOJSONSerialization.m new file mode 100755 index 0000000..5fbb677 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOJSONSerialization.m @@ -0,0 +1,115 @@ +// +// SocketIOJSONSerialization.m +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import "SocketIOJSONSerialization.h" + +extern NSString * const SocketIOException; + +// covers the methods in SBJson and JSONKit +@interface NSObject (SocketIOJSONSerialization) + +// used by both JSONKit and SBJson +- (id) objectWithData:(NSData *)data; + +// Use by JSONKit serialization +- (NSString *) JSONString; +- (id) decoder; + +// Used by SBJsonWriter +- (NSString *) stringWithObject:(id)object; + +@end + +@implementation SocketIOJSONSerialization + ++ (id) objectFromJSONData:(NSData *)data error:(NSError **)error { + Class serializer; + + // try SBJson first + serializer = NSClassFromString(@"SBJsonParser"); + if (serializer) { + id parser; + id object; + + parser = [[serializer alloc] init]; + object = [parser objectWithData:data]; + + return object; + } + + // try Foundation's JSON coder, available in OS X 10.7/iOS 5.0 + serializer = NSClassFromString(@"NSJSONSerialization"); + if (serializer) { + return [serializer JSONObjectWithData:data options:0 error:error]; + } + + // lastly, try JSONKit + serializer = NSClassFromString(@"JSONDecoder"); + if (serializer) { + return [[serializer decoder] objectWithData:data]; + } + + // unable to find a suitable JSON deseralizer + [NSException raise:SocketIOException format:@"socket.IO-objc requires SBJson, JSONKit or an OS that has NSJSONSerialization."]; + + return nil; +} + ++ (NSString *) JSONStringFromObject:(id)object error:(NSError **)error { + Class serializer; + NSString *jsonString; + + jsonString = nil; + serializer = NSClassFromString(@"SBJsonWriter"); + if (serializer) { + id writer; + + writer = [[serializer alloc] init]; + jsonString = [writer stringWithObject:object]; + + return jsonString; + } + + serializer = NSClassFromString(@"NSJSONSerialization"); + if (serializer) { + NSData *data; + + data = [serializer dataWithJSONObject:object options:0 error:error]; + + jsonString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; + + return jsonString; + } + + // lastly, try JSONKit + if ([object respondsToSelector:@selector(JSONString)]) { + return [object JSONString]; + } + + // unable to find a suitable JSON seralizer + [NSException raise:SocketIOException format:@"socket.IO-objc requires SBJson, JSONKit or an OS that has NSJSONSerialization."]; + + return nil; +} + +@end diff --git a/Origami Plugin/SocketIO/SocketIOPacket.h b/Origami Plugin/SocketIO/SocketIOPacket.h new file mode 100755 index 0000000..fad6089 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOPacket.h @@ -0,0 +1,52 @@ +// +// SocketIOPacket.h +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import + +@interface SocketIOPacket : NSObject +{ + NSString *type; + NSString *pId; + NSString *ack; + NSString *name; + NSString *data; + NSArray *args; + NSString *endpoint; + NSArray *_types; +} + +@property (nonatomic, copy) NSString *type; +@property (nonatomic, copy) NSString *pId; +@property (nonatomic, copy) NSString *ack; +@property (nonatomic, copy) NSString *name; +@property (nonatomic, copy) NSString *data; +@property (nonatomic, copy) NSString *endpoint; +@property (nonatomic, copy) NSArray *args; + +- (id) initWithType:(NSString *)packetType; +- (id) initWithTypeIndex:(int)index; +- (id) dataAsJSON; +- (NSNumber *) typeAsNumber; +- (NSString *) typeForIndex:(int)index; + +@end diff --git a/Origami Plugin/SocketIO/SocketIOPacket.m b/Origami Plugin/SocketIO/SocketIOPacket.m new file mode 100755 index 0000000..eeb9f31 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOPacket.m @@ -0,0 +1,104 @@ +// +// SocketIOPacket.h +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import "SocketIOPacket.h" +#import "SocketIOJSONSerialization.h" + +@implementation SocketIOPacket + +@synthesize type, pId, name, ack, data, args, endpoint; + +- (id) init +{ + self = [super init]; + if (self) { + _types = [NSArray arrayWithObjects: @"disconnect", + @"connect", + @"heartbeat", + @"message", + @"json", + @"event", + @"ack", + @"error", + @"noop", + nil]; + } + return self; +} + +- (id) initWithType:(NSString *)packetType +{ + self = [self init]; + if (self) { + self.type = packetType; + } + return self; +} + +- (id) initWithTypeIndex:(int)index +{ + self = [self init]; + if (self) { + self.type = [self typeForIndex:index]; + } + return self; +} + +- (id) dataAsJSON +{ + if (self.data) { + NSData *utf8Data = [self.data dataUsingEncoding:NSUTF8StringEncoding]; + return [SocketIOJSONSerialization objectFromJSONData:utf8Data error:nil]; + } + else { + return nil; + } +} + +- (NSNumber *) typeAsNumber +{ + NSUInteger index = [_types indexOfObject:self.type]; + NSNumber *num = [NSNumber numberWithUnsignedInteger:index]; + return num; +} + +- (NSString *) typeForIndex:(int)index +{ + return [_types objectAtIndex:index]; +} + +- (void) dealloc +{ + _types = nil; + + type = nil; + pId = nil; + name = nil; + ack = nil; + data = nil; + args = nil; + endpoint = nil; +} + +@end + diff --git a/Origami Plugin/SocketIO/SocketIOTransport.h b/Origami Plugin/SocketIO/SocketIOTransport.h new file mode 100755 index 0000000..c06eec5 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOTransport.h @@ -0,0 +1,50 @@ +// +// SocketIOTransport.h +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import + +@protocol SocketIOTransportDelegate + +- (void) onData:(id)message; +- (void) onDisconnect:(NSError*)error; +- (void) onError:(NSError*)error; + +@property (nonatomic, readonly) NSString *host; +@property (nonatomic, readonly) NSInteger port; +@property (nonatomic, readonly) NSString *sid; +@property (nonatomic, readonly) NSTimeInterval heartbeatTimeout; +@property (nonatomic) BOOL useSecure; + +@end + +@protocol SocketIOTransport + +- (id) initWithDelegate:(id )delegate; +- (void) open; +- (void) close; +- (BOOL) isReady; +- (void) send:(NSString *)request; + +@property (nonatomic, unsafe_unretained) id delegate; + +@end diff --git a/Origami Plugin/SocketIO/SocketIOTransportWebsocket.h b/Origami Plugin/SocketIO/SocketIOTransportWebsocket.h new file mode 100755 index 0000000..d3d23b3 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOTransportWebsocket.h @@ -0,0 +1,36 @@ +// +// SocketIOTransportWebsocket.h +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import + +#import "SRWebSocket.h" +#import "SocketIOTransport.h" + +@interface SocketIOTransportWebsocket : NSObject +{ + SRWebSocket *_webSocket; +} + +@property (nonatomic, unsafe_unretained) id delegate; + +@end diff --git a/Origami Plugin/SocketIO/SocketIOTransportWebsocket.m b/Origami Plugin/SocketIO/SocketIOTransportWebsocket.m new file mode 100755 index 0000000..7d7db10 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOTransportWebsocket.m @@ -0,0 +1,128 @@ +// +// SocketIOTransportWebsocket.m +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import "SocketIOTransportWebsocket.h" +#import "SocketIO.h" + +#define DEBUG_LOGS 0 + +#if DEBUG_LOGS +#define DEBUGLOG(...) NSLog(__VA_ARGS__) +#else +#define DEBUGLOG(...) +#endif + +static NSString* kInsecureSocketURL = @"ws://%@/socket.io/1/websocket/%@"; +static NSString* kSecureSocketURL = @"wss://%@/socket.io/1/websocket/%@"; +static NSString* kInsecureSocketPortURL = @"ws://%@:%d/socket.io/1/websocket/%@"; +static NSString* kSecureSocketPortURL = @"wss://%@:%d/socket.io/1/websocket/%@"; + +@implementation SocketIOTransportWebsocket + +@synthesize delegate; + +- (id) initWithDelegate:(id)delegate_ +{ + self = [super init]; + if (self) { + self.delegate = delegate_; + } + return self; +} + +- (BOOL) isReady +{ + return _webSocket.readyState == SR_OPEN; +} + +- (void) open +{ + NSString *urlStr; + NSString *format; + if (delegate.port) { + format = delegate.useSecure ? kSecureSocketPortURL : kInsecureSocketPortURL; + urlStr = [NSString stringWithFormat:format, delegate.host, delegate.port, delegate.sid]; + } + else { + format = delegate.useSecure ? kSecureSocketURL : kInsecureSocketURL; + urlStr = [NSString stringWithFormat:format, delegate.host, delegate.sid]; + } + NSURL *url = [NSURL URLWithString:urlStr]; + + _webSocket = nil; + + _webSocket = [[SRWebSocket alloc] initWithURL:url]; + _webSocket.delegate = self; + DEBUGLOG(@"Opening %@", url); + [_webSocket open]; +} + +- (void) dealloc +{ + [_webSocket setDelegate:nil]; +} + +- (void) close +{ + [_webSocket close]; +} + +- (void) send:(NSString*)request +{ + [_webSocket send:request]; +} + + + +# pragma mark - +# pragma mark WebSocket Delegate Methods + +- (void) webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message +{ + [delegate onData:message]; +} + +- (void) webSocketDidOpen:(SRWebSocket *)webSocket +{ + DEBUGLOG(@"Socket opened."); +} + +- (void) webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error +{ + DEBUGLOG(@"Socket failed with error ... %@", [error localizedDescription]); + // Assuming this resulted in a disconnect + [delegate onDisconnect:error]; +} + +- (void) webSocket:(SRWebSocket *)webSocket + didCloseWithCode:(NSInteger)code + reason:(NSString *)reason + wasClean:(BOOL)wasClean +{ + DEBUGLOG(@"Socket closed. %@", reason); + [delegate onDisconnect:[NSError errorWithDomain:SocketIOError + code:SocketIOWebSocketClosed + userInfo:nil]]; +} + +@end diff --git a/Origami Plugin/SocketIO/SocketIOTransportXHR.h b/Origami Plugin/SocketIO/SocketIOTransportXHR.h new file mode 100755 index 0000000..8e650c5 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOTransportXHR.h @@ -0,0 +1,37 @@ +// +// SocketIOTransportXHR.h +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import + +#import "SocketIOTransport.h" + +@interface SocketIOTransportXHR : NSObject +{ + NSString *_url; + NSMutableData *_data; + NSMutableDictionary *_polls; +} + +@property (nonatomic, unsafe_unretained) id delegate; + +@end diff --git a/Origami Plugin/SocketIO/SocketIOTransportXHR.m b/Origami Plugin/SocketIO/SocketIOTransportXHR.m new file mode 100755 index 0000000..6ac871e --- /dev/null +++ b/Origami Plugin/SocketIO/SocketIOTransportXHR.m @@ -0,0 +1,255 @@ +// +// SocketIOTransportXHR.m +// v0.4 ARC +// +// based on +// socketio-cocoa https://github.com/fpotter/socketio-cocoa +// by Fred Potter +// +// using +// https://github.com/square/SocketRocket +// https://github.com/stig/json-framework/ +// +// reusing some parts of +// /socket.io/socket.io.js +// +// Created by Philipp Kyeck http://beta-interactive.de +// +// Updated by +// samlown https://github.com/samlown +// kayleg https://github.com/kayleg +// taiyangc https://github.com/taiyangc +// + +#import "SocketIOTransportXHR.h" +#import "SocketIO.h" + +#define DEBUG_LOGS 0 + +#if DEBUG_LOGS +#define DEBUGLOG(...) NSLog(__VA_ARGS__) +#else +#define DEBUGLOG(...) +#endif + +static NSString* kInsecureXHRURL = @"http://%@/socket.io/1/xhr-polling/%@"; +static NSString* kSecureXHRURL = @"https://%@/socket.io/1/xhr-polling/%@"; +static NSString* kInsecureXHRPortURL = @"http://%@:%d/socket.io/1/xhr-polling/%@"; +static NSString* kSecureXHRPortURL = @"https://%@:%d/socket.io/1/xhr-polling/%@"; + +@interface SocketIOTransportXHR (Private) +- (void) checkAndStartPoll; +- (void) poll:(NSString *)data; +- (void) poll:(NSString *)data retryNumber:(int)retry; +@end + +@implementation SocketIOTransportXHR + +@synthesize delegate; + +- (id) initWithDelegate:(id)delegate_ +{ + self = [super init]; + if (self) { + self.delegate = delegate_; + _data = [[NSMutableData alloc] init]; + _polls = [[NSMutableDictionary alloc] init]; + } + return self; +} + +- (void) open +{ + NSString *format; + if (delegate.port) { + format = delegate.useSecure ? kSecureXHRPortURL : kInsecureXHRPortURL; + _url = [NSString stringWithFormat:format, delegate.host, delegate.port, delegate.sid]; + } + else { + format = delegate.useSecure ? kSecureXHRURL : kInsecureXHRURL; + _url = [NSString stringWithFormat:format, delegate.host, delegate.sid]; + } + DEBUGLOG(@"Opening XHR @ %@", _url); + [self poll:nil]; +} + +- (void) close +{ + NSMutableDictionary *pollData; + NSURLConnection *conn; + for (NSString *key in _polls) { + pollData = [_polls objectForKey:key]; + conn = [pollData objectForKey:@"connection"]; + [conn cancel]; + } + [_polls removeAllObjects]; +} + +- (BOOL) isReady +{ + return YES; +} + +- (void) send:(NSString *)request +{ + [self poll:request]; +} + + +#pragma mark - +#pragma mark private methods + +- (void) checkAndStartPoll +{ + BOOL restart = NO; + // no polls currently running -> start one + if ([_polls count] == 0) { + restart = YES; + } + else { + restart = YES; + // look for polls w/o data -> if there, no need to restart + for (NSString *key in _polls) { + NSMutableDictionary *pollData = [_polls objectForKey:key]; + if ([pollData objectForKey:@"data"] == nil) { + restart = NO; + break; + } + } + } + + if (restart) { + [self poll:nil]; + } +} + +- (void) poll:(NSString *)data +{ + [self poll:data retryNumber:0]; +} + +- (void) poll:(NSString *)data retryNumber:(int)retry +{ + NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970]; + double unix = timeStamp * 1000; + NSString *url = [_url stringByAppendingString:[NSString stringWithFormat:@"?t=%.0f", unix]]; + + DEBUGLOG(@"---------------------------------------------------------------------------------------"); + DEBUGLOG(@"poll() %@", url); + + NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:url] + cachePolicy:NSURLRequestUseProtocolCachePolicy + timeoutInterval:[delegate heartbeatTimeout]]; + if (data != nil) { + DEBUGLOG(@"poll() %@", data); + [req setHTTPMethod:@"POST"]; + [req setValue:@"text/plain; charset=UTF-8" forHTTPHeaderField:@"Content-Type"]; + [req setHTTPBody:[data dataUsingEncoding:NSUTF8StringEncoding]]; + } + [req setValue:@"Keep-Alive" forHTTPHeaderField:@"Connection"]; + + NSURLConnection *conn = [[NSURLConnection alloc] initWithRequest:req delegate:self]; + + // add pollData to polls dictionary + NSMutableDictionary *pollData = [[NSMutableDictionary alloc] init]; + [pollData setObject:[NSNumber numberWithInt:retry] forKey:@"retries"]; + [pollData setObject:conn forKey:@"connection"]; + [pollData setValue:data forKey:@"data"]; + [_polls setObject:pollData forKey:conn.description]; + + [conn start]; +} + + +#pragma mark - +#pragma mark NSURLConnection delegate methods + + +- (void) connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response +{ + [_data setLength:0]; +} + +- (void) connection:(NSURLConnection *)connection didReceiveData:(NSData *)data +{ + DEBUGLOG(@"didReceiveData(): %@", data); + [_data appendData:data]; +} + +- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error +{ + DEBUGLOG(@"didFailWithError: %@", [error localizedDescription]); + + // retry 3 times or throw error + NSMutableDictionary *pollData = [_polls objectForKey:connection.description]; + NSString *data = [pollData objectForKey:@"data"]; + [_polls removeObjectForKey:connection.description]; + + NSNumber *retries = [pollData objectForKey:@"retries"]; + if ([retries intValue] < 2) { + [self poll:data retryNumber:[retries intValue] + 1]; + } + else { + NSMutableDictionary *errorInfo = [[NSMutableDictionary alloc] init]; + [errorInfo setValue:[error localizedDescription] forKey:@"reason"]; + [errorInfo setValue:data forKey:@"data"]; + + if ([delegate respondsToSelector:@selector(onError:)]) { + [delegate onError:[NSError errorWithDomain:SocketIOError + code:SocketIODataCouldNotBeSend + userInfo:errorInfo]]; + } + } +} + +// Sometimes Socket.IO "batches" up messages in one packet, +// so we have to split them. +// +- (NSArray *)packetsFromPayload:(NSString *)payload +{ + // "Batched" format is: + // �[packet_0 length]�[packet_0]�[packet_1 length]�[packet_1]�[packet_n length]�[packet_n] + + if([payload hasPrefix:@"\ufffd"]) { + // Payload has multiple packets, split based on the '�' character + // Skip the first character, then split + NSArray *split = [[payload substringFromIndex:1] componentsSeparatedByString:@"\ufffd"]; + + // Init array with [split count] / 2 because we only need the odd-numbered + NSMutableArray *packets = [NSMutableArray arrayWithCapacity:[split count]/2]; + + // Now all of the odd-numbered indices are the packets (1, 3, 5, etc.) + [split enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + if(idx % 2 != 0) { + [packets addObject:obj]; + } + }]; + + NSLog(@"Parsed a payload!"); + return packets; + } else { + // Regular single-packet payload + return @[payload]; + } +} + +- (void) connectionDidFinishLoading:(NSURLConnection *)connection +{ + NSString *message = [[NSString alloc] initWithData:_data encoding:NSUTF8StringEncoding]; + DEBUGLOG(@"response: __%@__", message); + + if (![message isEqualToString:@"1"]) { + NSArray *messages = [self packetsFromPayload:message]; + [messages enumerateObjectsUsingBlock:^(NSString *message, NSUInteger idx, BOOL *stop) { + [delegate onData:message]; + }]; + } + + // remove current connection from pool + [_polls removeObjectForKey:connection.description]; + + [self checkAndStartPoll]; +} + + +@end diff --git a/Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.h b/Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.h new file mode 100755 index 0000000..7d61063 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.h @@ -0,0 +1,24 @@ +// +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import + + +@interface NSData (SRB64Additions) + +- (NSString *)SR_stringByBase64Encoding; + +@end diff --git a/Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.m b/Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.m new file mode 100755 index 0000000..5874a18 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketRocket/NSData+SRB64Additions.m @@ -0,0 +1,39 @@ +// +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import "NSData+SRB64Additions.h" +#import "base64.h" + + +@implementation NSData (SRB64Additions) + +- (NSString *)SR_stringByBase64Encoding; +{ + size_t buffer_size = (([self length] * 3 + 2) / 2); + + char *buffer = (char *)malloc(buffer_size); + + int len = b64_ntop([self bytes], [self length], buffer, buffer_size); + + if (len == -1) { + free(buffer); + return nil; + } else{ + return [[NSString alloc] initWithBytesNoCopy:buffer length:len encoding:NSUTF8StringEncoding freeWhenDone:YES]; + } +} + +@end diff --git a/Origami Plugin/SocketIO/SocketRocket/SRWebSocket.h b/Origami Plugin/SocketIO/SocketRocket/SRWebSocket.h new file mode 100755 index 0000000..2d40bb1 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketRocket/SRWebSocket.h @@ -0,0 +1,114 @@ +// +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#import +#import + +typedef enum { + SR_CONNECTING = 0, + SR_OPEN = 1, + SR_CLOSING = 2, + SR_CLOSED = 3, +} SRReadyState; + +@class SRWebSocket; + +extern NSString *const SRWebSocketErrorDomain; + +#pragma mark - SRWebSocketDelegate + +@protocol SRWebSocketDelegate; + +#pragma mark - SRWebSocket + +@interface SRWebSocket : NSObject + +@property (nonatomic, assign) id delegate; + +@property (nonatomic, readonly) SRReadyState readyState; +@property (nonatomic, readonly, retain) NSURL *url; + +// This returns the negotiated protocol. +// It will be nil until after the handshake completes. +@property (nonatomic, readonly, copy) NSString *protocol; + +// Protocols should be an array of strings that turn into Sec-WebSocket-Protocol. +- (id)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols; +- (id)initWithURLRequest:(NSURLRequest *)request; + +// Some helper constructors. +- (id)initWithURL:(NSURL *)url protocols:(NSArray *)protocols; +- (id)initWithURL:(NSURL *)url; + +// Delegate queue will be dispatch_main_queue by default. +// You cannot set both OperationQueue and dispatch_queue. +- (void)setDelegateOperationQueue:(NSOperationQueue*) queue; +- (void)setDelegateDispatchQueue:(dispatch_queue_t) queue; + +// By default, it will schedule itself on +[NSRunLoop SR_networkRunLoop] using defaultModes. +- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; +- (void)unscheduleFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; + +// SRWebSockets are intended for one-time-use only. Open should be called once and only once. +- (void)open; + +- (void)close; +- (void)closeWithCode:(NSInteger)code reason:(NSString *)reason; + +// Send a UTF8 String or Data. +- (void)send:(id)data; + +@end + +#pragma mark - SRWebSocketDelegate + +@protocol SRWebSocketDelegate + +// message will either be an NSString if the server is using text +// or NSData if the server is using binary. +- (void)webSocket:(SRWebSocket *)webSocket didReceiveMessage:(id)message; + +@optional + +- (void)webSocketDidOpen:(SRWebSocket *)webSocket; +- (void)webSocket:(SRWebSocket *)webSocket didFailWithError:(NSError *)error; +- (void)webSocket:(SRWebSocket *)webSocket didCloseWithCode:(NSInteger)code reason:(NSString *)reason wasClean:(BOOL)wasClean; + +@end + +#pragma mark - NSURLRequest (CertificateAdditions) + +@interface NSURLRequest (CertificateAdditions) + +@property (nonatomic, retain, readonly) NSArray *SR_SSLPinnedCertificates; + +@end + +#pragma mark - NSMutableURLRequest (CertificateAdditions) + +@interface NSMutableURLRequest (CertificateAdditions) + +@property (nonatomic, retain) NSArray *SR_SSLPinnedCertificates; + +@end + +#pragma mark - NSRunLoop (SRWebSocket) + +@interface NSRunLoop (SRWebSocket) + ++ (NSRunLoop *)SR_networkRunLoop; + +@end diff --git a/Origami Plugin/SocketIO/SocketRocket/SRWebSocket.m b/Origami Plugin/SocketIO/SocketRocket/SRWebSocket.m new file mode 100755 index 0000000..db5039a --- /dev/null +++ b/Origami Plugin/SocketIO/SocketRocket/SRWebSocket.m @@ -0,0 +1,1757 @@ +// +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +#import "SRWebSocket.h" + +#if TARGET_OS_IPHONE +#define HAS_ICU +#endif + +#ifdef HAS_ICU +#import +#endif + +#if TARGET_OS_IPHONE +#import +#else +#import +#endif + +#import +#import + +#import "base64.h" +#import "NSData+SRB64Additions.h" + +#if OS_OBJECT_USE_OBJC_RETAIN_RELEASE +#define sr_dispatch_retain(x) +#define sr_dispatch_release(x) +#define maybe_bridge(x) ((__bridge void *) x) +#else +#define sr_dispatch_retain(x) dispatch_retain(x) +#define sr_dispatch_release(x) dispatch_release(x) +#define maybe_bridge(x) (x) +#endif + +#if !__has_feature(objc_arc) +#error SocketRocket muust be compiled with ARC enabled +#endif + + +typedef enum { + SROpCodeTextFrame = 0x1, + SROpCodeBinaryFrame = 0x2, + // 3-7 reserved. + SROpCodeConnectionClose = 0x8, + SROpCodePing = 0x9, + SROpCodePong = 0xA, + // B-F reserved. +} SROpCode; + +typedef enum { + SRStatusCodeNormal = 1000, + SRStatusCodeGoingAway = 1001, + SRStatusCodeProtocolError = 1002, + SRStatusCodeUnhandledType = 1003, + // 1004 reserved. + SRStatusNoStatusReceived = 1005, + // 1004-1006 reserved. + SRStatusCodeInvalidUTF8 = 1007, + SRStatusCodePolicyViolated = 1008, + SRStatusCodeMessageTooBig = 1009, +} SRStatusCode; + +typedef struct { + BOOL fin; +// BOOL rsv1; +// BOOL rsv2; +// BOOL rsv3; + uint8_t opcode; + BOOL masked; + uint64_t payload_length; +} frame_header; + +static NSString *const SRWebSocketAppendToSecKeyString = @"258EAFA5-E914-47DA-95CA-C5AB0DC85B11"; + +static inline int32_t validate_dispatch_data_partial_string(NSData *data); +static inline dispatch_queue_t log_queue(); +static inline void SRFastLog(NSString *format, ...); + +@interface NSData (SRWebSocket) + +- (NSString *)stringBySHA1ThenBase64Encoding; + +@end + + +@interface NSString (SRWebSocket) + +- (NSString *)stringBySHA1ThenBase64Encoding; + +@end + + +@interface NSURL (SRWebSocket) + +// The origin isn't really applicable for a native application. +// So instead, just map ws -> http and wss -> https. +- (NSString *)SR_origin; + +@end + + +@interface _SRRunLoopThread : NSThread + +@property (nonatomic, readonly) NSRunLoop *runLoop; + +@end + + +static NSString *newSHA1String(const char *bytes, size_t length) { + uint8_t md[CC_SHA1_DIGEST_LENGTH]; + + CC_SHA1(bytes, length, md); + + size_t buffer_size = ((sizeof(md) * 3 + 2) / 2); + + char *buffer = (char *)malloc(buffer_size); + + int len = b64_ntop(md, CC_SHA1_DIGEST_LENGTH, buffer, buffer_size); + if (len == -1) { + free(buffer); + return nil; + } else{ + return [[NSString alloc] initWithBytesNoCopy:buffer length:len encoding:NSASCIIStringEncoding freeWhenDone:YES]; + } +} + +@implementation NSData (SRWebSocket) + +- (NSString *)stringBySHA1ThenBase64Encoding; +{ + return newSHA1String(self.bytes, self.length); +} + +@end + + +@implementation NSString (SRWebSocket) + +- (NSString *)stringBySHA1ThenBase64Encoding; +{ + return newSHA1String(self.UTF8String, self.length); +} + +@end + +NSString *const SRWebSocketErrorDomain = @"SRWebSocketErrorDomain"; + +// Returns number of bytes consumed. Returning 0 means you didn't match. +// Sends bytes to callback handler; +typedef size_t (^stream_scanner)(NSData *collected_data); + +typedef void (^data_callback)(SRWebSocket *webSocket, NSData *data); + +@interface SRIOConsumer : NSObject { + stream_scanner _scanner; + data_callback _handler; + size_t _bytesNeeded; + BOOL _readToCurrentFrame; + BOOL _unmaskBytes; +} +@property (nonatomic, copy, readonly) stream_scanner consumer; +@property (nonatomic, copy, readonly) data_callback handler; +@property (nonatomic, assign) size_t bytesNeeded; +@property (nonatomic, assign, readonly) BOOL readToCurrentFrame; +@property (nonatomic, assign, readonly) BOOL unmaskBytes; + +@end + +// This class is not thread-safe, and is expected to always be run on the same queue. +@interface SRIOConsumerPool : NSObject + +- (id)initWithBufferCapacity:(NSUInteger)poolSize; + +- (SRIOConsumer *)consumerWithScanner:(stream_scanner)scanner handler:(data_callback)handler bytesNeeded:(size_t)bytesNeeded readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes; +- (void)returnConsumer:(SRIOConsumer *)consumer; + +@end + +@interface SRWebSocket () + +- (void)_writeData:(NSData *)data; +- (void)_closeWithProtocolError:(NSString *)message; +- (void)_failWithError:(NSError *)error; + +- (void)_disconnect; + +- (void)_readFrameNew; +- (void)_readFrameContinue; + +- (void)_pumpScanner; + +- (void)_pumpWriting; + +- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback; +- (void)_addConsumerWithDataLength:(size_t)dataLength callback:(data_callback)callback readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes; +- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback dataLength:(size_t)dataLength; +- (void)_readUntilBytes:(const void *)bytes length:(size_t)length callback:(data_callback)dataHandler; +- (void)_readUntilHeaderCompleteWithCallback:(data_callback)dataHandler; + +- (void)_sendFrameWithOpcode:(SROpCode)opcode data:(id)data; + +- (BOOL)_checkHandshake:(CFHTTPMessageRef)httpMessage; +- (void)_SR_commonInit; + +- (void)_initializeStreams; +- (void)_connect; + +@property (nonatomic) SRReadyState readyState; + +@property (nonatomic) NSOperationQueue *delegateOperationQueue; +@property (nonatomic) dispatch_queue_t delegateDispatchQueue; + +@end + + +@implementation SRWebSocket { + NSInteger _webSocketVersion; + + NSOperationQueue *_delegateOperationQueue; + dispatch_queue_t _delegateDispatchQueue; + + dispatch_queue_t _workQueue; + NSMutableArray *_consumers; + + NSInputStream *_inputStream; + NSOutputStream *_outputStream; + + NSMutableData *_readBuffer; + NSUInteger _readBufferOffset; + + NSMutableData *_outputBuffer; + NSUInteger _outputBufferOffset; + + uint8_t _currentFrameOpcode; + size_t _currentFrameCount; + size_t _readOpCount; + uint32_t _currentStringScanPosition; + NSMutableData *_currentFrameData; + + NSString *_closeReason; + + NSString *_secKey; + + BOOL _pinnedCertFound; + + uint8_t _currentReadMaskKey[4]; + size_t _currentReadMaskOffset; + + BOOL _consumerStopped; + + BOOL _closeWhenFinishedWriting; + BOOL _failed; + + BOOL _secure; + NSURLRequest *_urlRequest; + + CFHTTPMessageRef _receivedHTTPHeaders; + + BOOL _sentClose; + BOOL _didFail; + int _closeCode; + + BOOL _isPumping; + + NSMutableSet *_scheduledRunloops; + + // We use this to retain ourselves. + __strong SRWebSocket *_selfRetain; + + NSArray *_requestedProtocols; + SRIOConsumerPool *_consumerPool; +} + +@synthesize delegate = _delegate; +@synthesize url = _url; +@synthesize readyState = _readyState; +@synthesize protocol = _protocol; + +static __strong NSData *CRLFCRLF; + ++ (void)initialize; +{ + CRLFCRLF = [[NSData alloc] initWithBytes:"\r\n\r\n" length:4]; +} + +- (id)initWithURLRequest:(NSURLRequest *)request protocols:(NSArray *)protocols; +{ + self = [super init]; + if (self) { + assert(request.URL); + _url = request.URL; + _urlRequest = request; + + _requestedProtocols = [protocols copy]; + + [self _SR_commonInit]; + } + + return self; +} + +- (id)initWithURLRequest:(NSURLRequest *)request; +{ + return [self initWithURLRequest:request protocols:nil]; +} + +- (id)initWithURL:(NSURL *)url; +{ + return [self initWithURL:url protocols:nil]; +} + +- (id)initWithURL:(NSURL *)url protocols:(NSArray *)protocols; +{ + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url]; + return [self initWithURLRequest:request protocols:protocols]; +} + +- (void)_SR_commonInit; +{ + + NSString *scheme = _url.scheme.lowercaseString; + assert([scheme isEqualToString:@"ws"] || [scheme isEqualToString:@"http"] || [scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]); + + if ([scheme isEqualToString:@"wss"] || [scheme isEqualToString:@"https"]) { + _secure = YES; + } + + _readyState = SR_CONNECTING; + _consumerStopped = YES; + _webSocketVersion = 13; + + _workQueue = dispatch_queue_create(NULL, DISPATCH_QUEUE_SERIAL); + + // Going to set a specific on the queue so we can validate we're on the work queue + dispatch_queue_set_specific(_workQueue, (__bridge void *)self, maybe_bridge(_workQueue), NULL); + + _delegateDispatchQueue = dispatch_get_main_queue(); + sr_dispatch_retain(_delegateDispatchQueue); + + _readBuffer = [[NSMutableData alloc] init]; + _outputBuffer = [[NSMutableData alloc] init]; + + _currentFrameData = [[NSMutableData alloc] init]; + + _consumers = [[NSMutableArray alloc] init]; + + _consumerPool = [[SRIOConsumerPool alloc] init]; + + _scheduledRunloops = [[NSMutableSet alloc] init]; + + [self _initializeStreams]; + + // default handlers +} + +- (void)assertOnWorkQueue; +{ + assert(dispatch_get_specific((__bridge void *)self) == maybe_bridge(_workQueue)); +} + +- (void)dealloc +{ + _inputStream.delegate = nil; + _outputStream.delegate = nil; + + [_inputStream close]; + [_outputStream close]; + + sr_dispatch_release(_workQueue); + _workQueue = NULL; + + if (_receivedHTTPHeaders) { + CFRelease(_receivedHTTPHeaders); + _receivedHTTPHeaders = NULL; + } + + if (_delegateDispatchQueue) { + sr_dispatch_release(_delegateDispatchQueue); + _delegateDispatchQueue = NULL; + } +} + +#ifndef NDEBUG + +- (void)setReadyState:(SRReadyState)aReadyState; +{ + [self willChangeValueForKey:@"readyState"]; + assert(aReadyState > _readyState); + _readyState = aReadyState; + [self didChangeValueForKey:@"readyState"]; +} + +#endif + +- (void)open; +{ + assert(_url); + NSAssert(_readyState == SR_CONNECTING, @"Cannot call -(void)open on SRWebSocket more than once"); + + _selfRetain = self; + + [self _connect]; +} + +// Calls block on delegate queue +- (void)_performDelegateBlock:(dispatch_block_t)block; +{ + if (_delegateOperationQueue) { + [_delegateOperationQueue addOperationWithBlock:block]; + } else { + assert(_delegateDispatchQueue); + dispatch_async(_delegateDispatchQueue, block); + } +} + +- (void)setDelegateDispatchQueue:(dispatch_queue_t)queue; +{ + if (queue) { + sr_dispatch_retain(queue); + } + + if (_delegateDispatchQueue) { + sr_dispatch_release(_delegateDispatchQueue); + } + + _delegateDispatchQueue = queue; +} + +- (BOOL)_checkHandshake:(CFHTTPMessageRef)httpMessage; +{ + NSString *acceptHeader = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(httpMessage, CFSTR("Sec-WebSocket-Accept"))); + + if (acceptHeader == nil) { + return NO; + } + + NSString *concattedString = [_secKey stringByAppendingString:SRWebSocketAppendToSecKeyString]; + NSString *expectedAccept = [concattedString stringBySHA1ThenBase64Encoding]; + + return [acceptHeader isEqualToString:expectedAccept]; +} + +- (void)_HTTPHeadersDidFinish; +{ + NSInteger responseCode = CFHTTPMessageGetResponseStatusCode(_receivedHTTPHeaders); + + if (responseCode >= 400) { + SRFastLog(@"Request failed with response code %d", responseCode); + [self _failWithError:[NSError errorWithDomain:@"org.lolrus.SocketRocket" code:2132 userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"received bad response code from server %ld", (long)responseCode] forKey:NSLocalizedDescriptionKey]]]; + return; + + } + + if(![self _checkHandshake:_receivedHTTPHeaders]) { + [self _failWithError:[NSError errorWithDomain:SRWebSocketErrorDomain code:2133 userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Invalid Sec-WebSocket-Accept response"] forKey:NSLocalizedDescriptionKey]]]; + return; + } + + NSString *negotiatedProtocol = CFBridgingRelease(CFHTTPMessageCopyHeaderFieldValue(_receivedHTTPHeaders, CFSTR("Sec-WebSocket-Protocol"))); + if (negotiatedProtocol) { + // Make sure we requested the protocol + if ([_requestedProtocols indexOfObject:negotiatedProtocol] == NSNotFound) { + [self _failWithError:[NSError errorWithDomain:SRWebSocketErrorDomain code:2133 userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Server specified Sec-WebSocket-Protocol that wasn't requested"] forKey:NSLocalizedDescriptionKey]]]; + return; + } + + _protocol = negotiatedProtocol; + } + + self.readyState = SR_OPEN; + + if (!_didFail) { + [self _readFrameNew]; + } + + [self _performDelegateBlock:^{ + if ([self.delegate respondsToSelector:@selector(webSocketDidOpen:)]) { + [self.delegate webSocketDidOpen:self]; + }; + }]; +} + + +- (void)_readHTTPHeader; +{ + if (_receivedHTTPHeaders == NULL) { + _receivedHTTPHeaders = CFHTTPMessageCreateEmpty(NULL, NO); + } + + [self _readUntilHeaderCompleteWithCallback:^(SRWebSocket *self, NSData *data) { + CFHTTPMessageAppendBytes(_receivedHTTPHeaders, (const UInt8 *)data.bytes, data.length); + + if (CFHTTPMessageIsHeaderComplete(_receivedHTTPHeaders)) { + SRFastLog(@"Finished reading headers %@", CFBridgingRelease(CFHTTPMessageCopyAllHeaderFields(_receivedHTTPHeaders))); + [self _HTTPHeadersDidFinish]; + } else { + [self _readHTTPHeader]; + } + }]; +} + +- (void)didConnect +{ + SRFastLog(@"Connected"); + CFHTTPMessageRef request = CFHTTPMessageCreateRequest(NULL, CFSTR("GET"), (__bridge CFURLRef)_url, kCFHTTPVersion1_1); + + // Set host first so it defaults + CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Host"), (__bridge CFStringRef)(_url.port ? [NSString stringWithFormat:@"%@:%@", _url.host, _url.port] : _url.host)); + + NSMutableData *keyBytes = [[NSMutableData alloc] initWithLength:16]; + SecRandomCopyBytes(kSecRandomDefault, keyBytes.length, keyBytes.mutableBytes); + _secKey = [keyBytes SR_stringByBase64Encoding]; + assert([_secKey length] == 24); + + CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Upgrade"), CFSTR("websocket")); + CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Connection"), CFSTR("Upgrade")); + CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Sec-WebSocket-Key"), (__bridge CFStringRef)_secKey); + CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Sec-WebSocket-Version"), (__bridge CFStringRef)[NSString stringWithFormat:@"%ld", (long)_webSocketVersion]); + + CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Origin"), (__bridge CFStringRef)_url.SR_origin); + + if (_requestedProtocols) { + CFHTTPMessageSetHeaderFieldValue(request, CFSTR("Sec-WebSocket-Protocol"), (__bridge CFStringRef)[_requestedProtocols componentsJoinedByString:@", "]); + } + + [_urlRequest.allHTTPHeaderFields enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + CFHTTPMessageSetHeaderFieldValue(request, (__bridge CFStringRef)key, (__bridge CFStringRef)obj); + }]; + + NSData *message = CFBridgingRelease(CFHTTPMessageCopySerializedMessage(request)); + + CFRelease(request); + + [self _writeData:message]; + [self _readHTTPHeader]; +} + +- (void)_initializeStreams; +{ + NSInteger port = _url.port.integerValue; + if (port == 0) { + if (!_secure) { + port = 80; + } else { + port = 443; + } + } + NSString *host = _url.host; + + CFReadStreamRef readStream = NULL; + CFWriteStreamRef writeStream = NULL; + + CFStreamCreatePairWithSocketToHost(NULL, (__bridge CFStringRef)host, port, &readStream, &writeStream); + + _outputStream = CFBridgingRelease(writeStream); + _inputStream = CFBridgingRelease(readStream); + + + if (_secure) { + NSMutableDictionary *SSLOptions = [[NSMutableDictionary alloc] init]; + + [_outputStream setProperty:(__bridge id)kCFStreamSocketSecurityLevelNegotiatedSSL forKey:(__bridge id)kCFStreamPropertySocketSecurityLevel]; + + // If we're using pinned certs, don't validate the certificate chain + if ([_urlRequest SR_SSLPinnedCertificates].count) { + [SSLOptions setValue:[NSNumber numberWithBool:NO] forKey:(__bridge id)kCFStreamSSLValidatesCertificateChain]; + } + +#if DEBUG + [SSLOptions setValue:[NSNumber numberWithBool:NO] forKey:(__bridge id)kCFStreamSSLValidatesCertificateChain]; + NSLog(@"SocketRocket: In debug mode. Allowing connection to any root cert"); +#endif + + [_outputStream setProperty:SSLOptions + forKey:(__bridge id)kCFStreamPropertySSLSettings]; + } + + _inputStream.delegate = self; + _outputStream.delegate = self; +} + +- (void)_connect; +{ + if (!_scheduledRunloops.count) { + [self scheduleInRunLoop:[NSRunLoop SR_networkRunLoop] forMode:NSDefaultRunLoopMode]; + } + + + [_outputStream open]; + [_inputStream open]; +} + +- (void)scheduleInRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; +{ + [_outputStream scheduleInRunLoop:aRunLoop forMode:mode]; + [_inputStream scheduleInRunLoop:aRunLoop forMode:mode]; + + [_scheduledRunloops addObject:@[aRunLoop, mode]]; +} + +- (void)unscheduleFromRunLoop:(NSRunLoop *)aRunLoop forMode:(NSString *)mode; +{ + [_outputStream removeFromRunLoop:aRunLoop forMode:mode]; + [_inputStream removeFromRunLoop:aRunLoop forMode:mode]; + + [_scheduledRunloops removeObject:@[aRunLoop, mode]]; +} + +- (void)close; +{ + [self closeWithCode:-1 reason:nil]; +} + +- (void)closeWithCode:(NSInteger)code reason:(NSString *)reason; +{ + assert(code); + dispatch_async(_workQueue, ^{ + if (self.readyState == SR_CLOSING || self.readyState == SR_CLOSED) { + return; + } + + BOOL wasConnecting = self.readyState == SR_CONNECTING; + + self.readyState = SR_CLOSING; + + SRFastLog(@"Closing with code %d reason %@", code, reason); + + if (wasConnecting) { + [self _disconnect]; + return; + } + + size_t maxMsgSize = [reason maximumLengthOfBytesUsingEncoding:NSUTF8StringEncoding]; + NSMutableData *mutablePayload = [[NSMutableData alloc] initWithLength:sizeof(uint16_t) + maxMsgSize]; + NSData *payload = mutablePayload; + + ((uint16_t *)mutablePayload.mutableBytes)[0] = EndianU16_BtoN(code); + + if (reason) { + NSRange remainingRange = {0}; + + NSUInteger usedLength = 0; + + BOOL success = [reason getBytes:(char *)mutablePayload.mutableBytes + sizeof(uint16_t) maxLength:payload.length - sizeof(uint16_t) usedLength:&usedLength encoding:NSUTF8StringEncoding options:NSStringEncodingConversionExternalRepresentation range:NSMakeRange(0, reason.length) remainingRange:&remainingRange]; + + assert(success); + assert(remainingRange.length == 0); + + if (usedLength != maxMsgSize) { + payload = [payload subdataWithRange:NSMakeRange(0, usedLength + sizeof(uint16_t))]; + } + } + + + [self _sendFrameWithOpcode:SROpCodeConnectionClose data:payload]; + }); +} + +- (void)_closeWithProtocolError:(NSString *)message; +{ + // Need to shunt this on the _callbackQueue first to see if they received any messages + [self _performDelegateBlock:^{ + [self closeWithCode:SRStatusCodeProtocolError reason:message]; + dispatch_async(_workQueue, ^{ + [self _disconnect]; + }); + }]; +} + +- (void)_failWithError:(NSError *)error; +{ + dispatch_async(_workQueue, ^{ + if (self.readyState != SR_CLOSED) { + _failed = YES; + [self _performDelegateBlock:^{ + if ([self.delegate respondsToSelector:@selector(webSocket:didFailWithError:)]) { + [self.delegate webSocket:self didFailWithError:error]; + } + }]; + + self.readyState = SR_CLOSED; + _selfRetain = nil; + + SRFastLog(@"Failing with error %@", error.localizedDescription); + + [self _disconnect]; + } + }); +} + +- (void)_writeData:(NSData *)data; +{ + [self assertOnWorkQueue]; + + if (_closeWhenFinishedWriting) { + return; + } + [_outputBuffer appendData:data]; + [self _pumpWriting]; +} +- (void)send:(id)data; +{ + NSAssert(self.readyState != SR_CONNECTING, @"Invalid State: Cannot call send: until connection is open"); + // TODO: maybe not copy this for performance + data = [data copy]; + dispatch_async(_workQueue, ^{ + if ([data isKindOfClass:[NSString class]]) { + [self _sendFrameWithOpcode:SROpCodeTextFrame data:[(NSString *)data dataUsingEncoding:NSUTF8StringEncoding]]; + } else if ([data isKindOfClass:[NSData class]]) { + [self _sendFrameWithOpcode:SROpCodeBinaryFrame data:data]; + } else if (data == nil) { + [self _sendFrameWithOpcode:SROpCodeTextFrame data:data]; + } else { + assert(NO); + } + }); +} + +- (void)handlePing:(NSData *)pingData; +{ + // Need to pingpong this off _callbackQueue first to make sure messages happen in order + [self _performDelegateBlock:^{ + dispatch_async(_workQueue, ^{ + [self _sendFrameWithOpcode:SROpCodePong data:pingData]; + }); + }]; +} + +- (void)handlePong; +{ + // NOOP +} + +- (void)_handleMessage:(id)message +{ + SRFastLog(@"Received message"); + [self _performDelegateBlock:^{ + [self.delegate webSocket:self didReceiveMessage:message]; + }]; +} + + +static inline BOOL closeCodeIsValid(int closeCode) { + if (closeCode < 1000) { + return NO; + } + + if (closeCode >= 1000 && closeCode <= 1011) { + if (closeCode == 1004 || + closeCode == 1005 || + closeCode == 1006) { + return NO; + } + return YES; + } + + if (closeCode >= 3000 && closeCode <= 3999) { + return YES; + } + + if (closeCode >= 4000 && closeCode <= 4999) { + return YES; + } + + return NO; +} + +// Note from RFC: +// +// If there is a body, the first two +// bytes of the body MUST be a 2-byte unsigned integer (in network byte +// order) representing a status code with value /code/ defined in +// Section 7.4. Following the 2-byte integer the body MAY contain UTF-8 +// encoded data with value /reason/, the interpretation of which is not +// defined by this specification. + +- (void)handleCloseWithData:(NSData *)data; +{ + size_t dataSize = data.length; + __block uint16_t closeCode = 0; + + SRFastLog(@"Received close frame"); + + if (dataSize == 1) { + // TODO handle error + [self _closeWithProtocolError:@"Payload for close must be larger than 2 bytes"]; + return; + } else if (dataSize >= 2) { + [data getBytes:&closeCode length:sizeof(closeCode)]; + _closeCode = EndianU16_BtoN(closeCode); + if (!closeCodeIsValid(_closeCode)) { + [self _closeWithProtocolError:[NSString stringWithFormat:@"Cannot have close code of %d", _closeCode]]; + return; + } + if (dataSize > 2) { + _closeReason = [[NSString alloc] initWithData:[data subdataWithRange:NSMakeRange(2, dataSize - 2)] encoding:NSUTF8StringEncoding]; + if (!_closeReason) { + [self _closeWithProtocolError:@"Close reason MUST be valid UTF-8"]; + return; + } + } + } else { + _closeCode = SRStatusNoStatusReceived; + } + + [self assertOnWorkQueue]; + + if (self.readyState == SR_OPEN) { + [self closeWithCode:1000 reason:nil]; + } + dispatch_async(_workQueue, ^{ + [self _disconnect]; + }); +} + +- (void)_disconnect; +{ + [self assertOnWorkQueue]; + SRFastLog(@"Trying to disconnect"); + _closeWhenFinishedWriting = YES; + [self _pumpWriting]; +} + +- (void)_handleFrameWithData:(NSData *)frameData opCode:(NSInteger)opcode; +{ + // Check that the current data is valid UTF8 + + BOOL isControlFrame = (opcode == SROpCodePing || opcode == SROpCodePong || opcode == SROpCodeConnectionClose); + if (!isControlFrame) { + [self _readFrameNew]; + } else { + dispatch_async(_workQueue, ^{ + [self _readFrameContinue]; + }); + } + + switch (opcode) { + case SROpCodeTextFrame: { + NSString *str = [[NSString alloc] initWithData:frameData encoding:NSUTF8StringEncoding]; + if (str == nil && frameData) { + [self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8"]; + dispatch_async(_workQueue, ^{ + [self _disconnect]; + }); + + return; + } + [self _handleMessage:str]; + break; + } + case SROpCodeBinaryFrame: + [self _handleMessage:[frameData copy]]; + break; + case SROpCodeConnectionClose: + [self handleCloseWithData:frameData]; + break; + case SROpCodePing: + [self handlePing:frameData]; + break; + case SROpCodePong: + [self handlePong]; + break; + default: + [self _closeWithProtocolError:[NSString stringWithFormat:@"Unknown opcode %ld", (long)opcode]]; + // TODO: Handle invalid opcode + break; + } +} + +- (void)_handleFrameHeader:(frame_header)frame_header curData:(NSData *)curData; +{ + assert(frame_header.opcode != 0); + + if (self.readyState != SR_OPEN) { + return; + } + + + BOOL isControlFrame = (frame_header.opcode == SROpCodePing || frame_header.opcode == SROpCodePong || frame_header.opcode == SROpCodeConnectionClose); + + if (isControlFrame && !frame_header.fin) { + [self _closeWithProtocolError:@"Fragmented control frames not allowed"]; + return; + } + + if (isControlFrame && frame_header.payload_length >= 126) { + [self _closeWithProtocolError:@"Control frames cannot have payloads larger than 126 bytes"]; + return; + } + + if (!isControlFrame) { + _currentFrameOpcode = frame_header.opcode; + _currentFrameCount += 1; + } + + if (frame_header.payload_length == 0) { + if (isControlFrame) { + [self _handleFrameWithData:curData opCode:frame_header.opcode]; + } else { + if (frame_header.fin) { + [self _handleFrameWithData:_currentFrameData opCode:frame_header.opcode]; + } else { + // TODO add assert that opcode is not a control; + [self _readFrameContinue]; + } + } + } else { + [self _addConsumerWithDataLength:frame_header.payload_length callback:^(SRWebSocket *self, NSData *newData) { + if (isControlFrame) { + [self _handleFrameWithData:newData opCode:frame_header.opcode]; + } else { + if (frame_header.fin) { + [self _handleFrameWithData:self->_currentFrameData opCode:frame_header.opcode]; + } else { + // TODO add assert that opcode is not a control; + [self _readFrameContinue]; + } + + } + } readToCurrentFrame:!isControlFrame unmaskBytes:frame_header.masked]; + } +} + +/* From RFC: + + 0 1 2 3 + 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 + +-+-+-+-+-------+-+-------------+-------------------------------+ + |F|R|R|R| opcode|M| Payload len | Extended payload length | + |I|S|S|S| (4) |A| (7) | (16/64) | + |N|V|V|V| |S| | (if payload len==126/127) | + | |1|2|3| |K| | | + +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + + | Extended payload length continued, if payload len == 127 | + + - - - - - - - - - - - - - - - +-------------------------------+ + | |Masking-key, if MASK set to 1 | + +-------------------------------+-------------------------------+ + | Masking-key (continued) | Payload Data | + +-------------------------------- - - - - - - - - - - - - - - - + + : Payload Data continued ... : + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + | Payload Data continued ... | + +---------------------------------------------------------------+ + */ + +static const uint8_t SRFinMask = 0x80; +static const uint8_t SROpCodeMask = 0x0F; +static const uint8_t SRRsvMask = 0x70; +static const uint8_t SRMaskMask = 0x80; +static const uint8_t SRPayloadLenMask = 0x7F; + + +- (void)_readFrameContinue; +{ + assert((_currentFrameCount == 0 && _currentFrameOpcode == 0) || (_currentFrameCount > 0 && _currentFrameOpcode > 0)); + + [self _addConsumerWithDataLength:2 callback:^(SRWebSocket *self, NSData *data) { + __block frame_header header = {0}; + + const uint8_t *headerBuffer = data.bytes; + assert(data.length >= 2); + + if (headerBuffer[0] & SRRsvMask) { + [self _closeWithProtocolError:@"Server used RSV bits"]; + return; + } + + uint8_t receivedOpcode = (SROpCodeMask & headerBuffer[0]); + + BOOL isControlFrame = (receivedOpcode == SROpCodePing || receivedOpcode == SROpCodePong || receivedOpcode == SROpCodeConnectionClose); + + if (!isControlFrame && receivedOpcode != 0 && self->_currentFrameCount > 0) { + [self _closeWithProtocolError:@"all data frames after the initial data frame must have opcode 0"]; + return; + } + + if (receivedOpcode == 0 && self->_currentFrameCount == 0) { + [self _closeWithProtocolError:@"cannot continue a message"]; + return; + } + + header.opcode = receivedOpcode == 0 ? self->_currentFrameOpcode : receivedOpcode; + + header.fin = !!(SRFinMask & headerBuffer[0]); + + + header.masked = !!(SRMaskMask & headerBuffer[1]); + header.payload_length = SRPayloadLenMask & headerBuffer[1]; + + headerBuffer = NULL; + + if (header.masked) { + [self _closeWithProtocolError:@"Client must receive unmasked data"]; + } + + size_t extra_bytes_needed = header.masked ? sizeof(_currentReadMaskKey) : 0; + + if (header.payload_length == 126) { + extra_bytes_needed += sizeof(uint16_t); + } else if (header.payload_length == 127) { + extra_bytes_needed += sizeof(uint64_t); + } + + if (extra_bytes_needed == 0) { + [self _handleFrameHeader:header curData:self->_currentFrameData]; + } else { + [self _addConsumerWithDataLength:extra_bytes_needed callback:^(SRWebSocket *self, NSData *data) { + size_t mapped_size = data.length; + const void *mapped_buffer = data.bytes; + size_t offset = 0; + + if (header.payload_length == 126) { + assert(mapped_size >= sizeof(uint16_t)); + uint16_t newLen = EndianU16_BtoN(*(uint16_t *)(mapped_buffer)); + header.payload_length = newLen; + offset += sizeof(uint16_t); + } else if (header.payload_length == 127) { + assert(mapped_size >= sizeof(uint64_t)); + header.payload_length = EndianU64_BtoN(*(uint64_t *)(mapped_buffer)); + offset += sizeof(uint64_t); + } else { + assert(header.payload_length < 126 && header.payload_length >= 0); + } + + + if (header.masked) { + assert(mapped_size >= sizeof(_currentReadMaskOffset) + offset); + memcpy(self->_currentReadMaskKey, ((uint8_t *)mapped_buffer) + offset, sizeof(self->_currentReadMaskKey)); + } + + [self _handleFrameHeader:header curData:self->_currentFrameData]; + } readToCurrentFrame:NO unmaskBytes:NO]; + } + } readToCurrentFrame:NO unmaskBytes:NO]; +} + +- (void)_readFrameNew; +{ + dispatch_async(_workQueue, ^{ + [_currentFrameData setLength:0]; + + _currentFrameOpcode = 0; + _currentFrameCount = 0; + _readOpCount = 0; + _currentStringScanPosition = 0; + + [self _readFrameContinue]; + }); +} + +- (void)_pumpWriting; +{ + [self assertOnWorkQueue]; + + NSUInteger dataLength = _outputBuffer.length; + if (dataLength - _outputBufferOffset > 0 && _outputStream.hasSpaceAvailable) { + NSInteger bytesWritten = [_outputStream write:_outputBuffer.bytes + _outputBufferOffset maxLength:dataLength - _outputBufferOffset]; + if (bytesWritten == -1) { + [self _failWithError:[NSError errorWithDomain:@"org.lolrus.SocketRocket" code:2145 userInfo:[NSDictionary dictionaryWithObject:@"Error writing to stream" forKey:NSLocalizedDescriptionKey]]]; + return; + } + + _outputBufferOffset += bytesWritten; + + if (_outputBufferOffset > 4096 && _outputBufferOffset > (_outputBuffer.length >> 1)) { + _outputBuffer = [[NSMutableData alloc] initWithBytes:(char *)_outputBuffer.bytes + _outputBufferOffset length:_outputBuffer.length - _outputBufferOffset]; + _outputBufferOffset = 0; + } + } + + if (_closeWhenFinishedWriting && + _outputBuffer.length - _outputBufferOffset == 0 && + (_inputStream.streamStatus != NSStreamStatusNotOpen && + _inputStream.streamStatus != NSStreamStatusClosed) && + !_sentClose) { + _sentClose = YES; + + [_outputStream close]; + [_inputStream close]; + + + for (NSArray *runLoop in [_scheduledRunloops copy]) { + [self unscheduleFromRunLoop:[runLoop objectAtIndex:0] forMode:[runLoop objectAtIndex:1]]; + } + + if (!_failed) { + [self _performDelegateBlock:^{ + if ([self.delegate respondsToSelector:@selector(webSocket:didCloseWithCode:reason:wasClean:)]) { + [self.delegate webSocket:self didCloseWithCode:_closeCode reason:_closeReason wasClean:YES]; + } + }]; + } + + _selfRetain = nil; + } +} + +- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback; +{ + [self assertOnWorkQueue]; + [self _addConsumerWithScanner:consumer callback:callback dataLength:0]; +} + +- (void)_addConsumerWithDataLength:(size_t)dataLength callback:(data_callback)callback readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes; +{ + [self assertOnWorkQueue]; + assert(dataLength); + + [_consumers addObject:[_consumerPool consumerWithScanner:nil handler:callback bytesNeeded:dataLength readToCurrentFrame:readToCurrentFrame unmaskBytes:unmaskBytes]]; + [self _pumpScanner]; +} + +- (void)_addConsumerWithScanner:(stream_scanner)consumer callback:(data_callback)callback dataLength:(size_t)dataLength; +{ + [self assertOnWorkQueue]; + [_consumers addObject:[_consumerPool consumerWithScanner:consumer handler:callback bytesNeeded:dataLength readToCurrentFrame:NO unmaskBytes:NO]]; + [self _pumpScanner]; +} + + +static const char CRLFCRLFBytes[] = {'\r', '\n', '\r', '\n'}; + +- (void)_readUntilHeaderCompleteWithCallback:(data_callback)dataHandler; +{ + [self _readUntilBytes:CRLFCRLFBytes length:sizeof(CRLFCRLFBytes) callback:dataHandler]; +} + +- (void)_readUntilBytes:(const void *)bytes length:(size_t)length callback:(data_callback)dataHandler; +{ + // TODO optimize so this can continue from where we last searched + stream_scanner consumer = ^size_t(NSData *data) { + __block size_t found_size = 0; + __block size_t match_count = 0; + + size_t size = data.length; + const unsigned char *buffer = data.bytes; + for (size_t i = 0; i < size; i++ ) { + if (((const unsigned char *)buffer)[i] == ((const unsigned char *)bytes)[match_count]) { + match_count += 1; + if (match_count == length) { + found_size = i + 1; + break; + } + } else { + match_count = 0; + } + } + return found_size; + }; + [self _addConsumerWithScanner:consumer callback:dataHandler]; +} + + +// Returns true if did work +- (BOOL)_innerPumpScanner { + + BOOL didWork = NO; + + if (self.readyState >= SR_CLOSING) { + return didWork; + } + + if (!_consumers.count) { + return didWork; + } + + size_t curSize = _readBuffer.length - _readBufferOffset; + if (!curSize) { + return didWork; + } + + SRIOConsumer *consumer = [_consumers objectAtIndex:0]; + + size_t bytesNeeded = consumer.bytesNeeded; + + size_t foundSize = 0; + if (consumer.consumer) { + NSData *tempView = [NSData dataWithBytesNoCopy:(char *)_readBuffer.bytes + _readBufferOffset length:_readBuffer.length - _readBufferOffset freeWhenDone:NO]; + foundSize = consumer.consumer(tempView); + } else { + assert(consumer.bytesNeeded); + if (curSize >= bytesNeeded) { + foundSize = bytesNeeded; + } else if (consumer.readToCurrentFrame) { + foundSize = curSize; + } + } + + NSData *slice = nil; + if (consumer.readToCurrentFrame || foundSize) { + NSRange sliceRange = NSMakeRange(_readBufferOffset, foundSize); + slice = [_readBuffer subdataWithRange:sliceRange]; + + _readBufferOffset += foundSize; + + if (_readBufferOffset > 4096 && _readBufferOffset > (_readBuffer.length >> 1)) { + _readBuffer = [[NSMutableData alloc] initWithBytes:(char *)_readBuffer.bytes + _readBufferOffset length:_readBuffer.length - _readBufferOffset]; _readBufferOffset = 0; + } + + if (consumer.unmaskBytes) { + NSMutableData *mutableSlice = [slice mutableCopy]; + + NSUInteger len = mutableSlice.length; + uint8_t *bytes = mutableSlice.mutableBytes; + + for (NSUInteger i = 0; i < len; i++) { + bytes[i] = bytes[i] ^ _currentReadMaskKey[_currentReadMaskOffset % sizeof(_currentReadMaskKey)]; + _currentReadMaskOffset += 1; + } + + slice = mutableSlice; + } + + if (consumer.readToCurrentFrame) { + [_currentFrameData appendData:slice]; + + _readOpCount += 1; + + if (_currentFrameOpcode == SROpCodeTextFrame) { + // Validate UTF8 stuff. + size_t currentDataSize = _currentFrameData.length; + if (_currentFrameOpcode == SROpCodeTextFrame && currentDataSize > 0) { + // TODO: Optimize the crap out of this. Don't really have to copy all the data each time + + size_t scanSize = currentDataSize - _currentStringScanPosition; + + NSData *scan_data = [_currentFrameData subdataWithRange:NSMakeRange(_currentStringScanPosition, scanSize)]; + int32_t valid_utf8_size = validate_dispatch_data_partial_string(scan_data); + + if (valid_utf8_size == -1) { + [self closeWithCode:SRStatusCodeInvalidUTF8 reason:@"Text frames must be valid UTF-8"]; + dispatch_async(_workQueue, ^{ + [self _disconnect]; + }); + return didWork; + } else { + _currentStringScanPosition += valid_utf8_size; + } + } + + } + + consumer.bytesNeeded -= foundSize; + + if (consumer.bytesNeeded == 0) { + [_consumers removeObjectAtIndex:0]; + consumer.handler(self, nil); + [_consumerPool returnConsumer:consumer]; + didWork = YES; + } + } else if (foundSize) { + [_consumers removeObjectAtIndex:0]; + consumer.handler(self, slice); + [_consumerPool returnConsumer:consumer]; + didWork = YES; + } + } + return didWork; +} + +-(void)_pumpScanner; +{ + [self assertOnWorkQueue]; + + if (!_isPumping) { + _isPumping = YES; + } else { + return; + } + + while ([self _innerPumpScanner]) { + + } + + _isPumping = NO; +} + +//#define NOMASK + +static const size_t SRFrameHeaderOverhead = 32; + +- (void)_sendFrameWithOpcode:(SROpCode)opcode data:(id)data; +{ + [self assertOnWorkQueue]; + + NSAssert(data == nil || [data isKindOfClass:[NSData class]] || [data isKindOfClass:[NSString class]], @"Function expects nil, NSString or NSData"); + + size_t payloadLength = [data isKindOfClass:[NSString class]] ? [(NSString *)data lengthOfBytesUsingEncoding:NSUTF8StringEncoding] : [data length]; + + NSMutableData *frame = [[NSMutableData alloc] initWithLength:payloadLength + SRFrameHeaderOverhead]; + if (!frame) { + [self closeWithCode:SRStatusCodeMessageTooBig reason:@"Message too big"]; + return; + } + uint8_t *frame_buffer = (uint8_t *)[frame mutableBytes]; + + // set fin + frame_buffer[0] = SRFinMask | opcode; + + BOOL useMask = YES; +#ifdef NOMASK + useMask = NO; +#endif + + if (useMask) { + // set the mask and header + frame_buffer[1] |= SRMaskMask; + } + + size_t frame_buffer_size = 2; + + const uint8_t *unmasked_payload = NULL; + if ([data isKindOfClass:[NSData class]]) { + unmasked_payload = (uint8_t *)[data bytes]; + } else if ([data isKindOfClass:[NSString class]]) { + unmasked_payload = (const uint8_t *)[data UTF8String]; + } else { + assert(NO); + } + + if (payloadLength < 126) { + frame_buffer[1] |= payloadLength; + } else if (payloadLength <= UINT16_MAX) { + frame_buffer[1] |= 126; + *((uint16_t *)(frame_buffer + frame_buffer_size)) = EndianU16_BtoN((uint16_t)payloadLength); + frame_buffer_size += sizeof(uint16_t); + } else { + frame_buffer[1] |= 127; + *((uint64_t *)(frame_buffer + frame_buffer_size)) = EndianU64_BtoN((uint64_t)payloadLength); + frame_buffer_size += sizeof(uint64_t); + } + + if (!useMask) { + for (size_t i = 0; i < payloadLength; i++) { + frame_buffer[frame_buffer_size] = unmasked_payload[i]; + frame_buffer_size += 1; + } + } else { + uint8_t *mask_key = frame_buffer + frame_buffer_size; + SecRandomCopyBytes(kSecRandomDefault, sizeof(uint32_t), (uint8_t *)mask_key); + frame_buffer_size += sizeof(uint32_t); + + // TODO: could probably optimize this with SIMD + for (size_t i = 0; i < payloadLength; i++) { + frame_buffer[frame_buffer_size] = unmasked_payload[i] ^ mask_key[i % sizeof(uint32_t)]; + frame_buffer_size += 1; + } + } + + assert(frame_buffer_size <= [frame length]); + frame.length = frame_buffer_size; + + [self _writeData:frame]; +} + +- (void)stream:(NSStream *)aStream handleEvent:(NSStreamEvent)eventCode; +{ + if (_secure && !_pinnedCertFound && (eventCode == NSStreamEventHasBytesAvailable || eventCode == NSStreamEventHasSpaceAvailable)) { + + NSArray *sslCerts = [_urlRequest SR_SSLPinnedCertificates]; + if (sslCerts) { + SecTrustRef secTrust = (__bridge SecTrustRef)[aStream propertyForKey:(__bridge id)kCFStreamPropertySSLPeerTrust]; + if (secTrust) { + NSInteger numCerts = SecTrustGetCertificateCount(secTrust); + for (NSInteger i = 0; i < numCerts && !_pinnedCertFound; i++) { + SecCertificateRef cert = SecTrustGetCertificateAtIndex(secTrust, i); + NSData *certData = CFBridgingRelease(SecCertificateCopyData(cert)); + + for (id ref in sslCerts) { + SecCertificateRef trustedCert = (__bridge SecCertificateRef)ref; + NSData *trustedCertData = CFBridgingRelease(SecCertificateCopyData(trustedCert)); + + if ([trustedCertData isEqualToData:certData]) { + _pinnedCertFound = YES; + break; + } + } + } + } + + if (!_pinnedCertFound) { + dispatch_async(_workQueue, ^{ + [self _failWithError:[NSError errorWithDomain:@"org.lolrus.SocketRocket" code:23556 userInfo:[NSDictionary dictionaryWithObject:[NSString stringWithFormat:@"Invalid server cert"] forKey:NSLocalizedDescriptionKey]]]; + }); + return; + } + } + } + + dispatch_async(_workQueue, ^{ + switch (eventCode) { + case NSStreamEventOpenCompleted: { + SRFastLog(@"NSStreamEventOpenCompleted %@", aStream); + if (self.readyState >= SR_CLOSING) { + return; + } + assert(_readBuffer); + + if (self.readyState == SR_CONNECTING && aStream == _inputStream) { + [self didConnect]; + } + [self _pumpWriting]; + [self _pumpScanner]; + break; + } + + case NSStreamEventErrorOccurred: { + SRFastLog(@"NSStreamEventErrorOccurred %@ %@", aStream, [[aStream streamError] copy]); + /// TODO specify error better! + [self _failWithError:aStream.streamError]; + _readBufferOffset = 0; + [_readBuffer setLength:0]; + break; + + } + + case NSStreamEventEndEncountered: { + [self _pumpScanner]; + SRFastLog(@"NSStreamEventEndEncountered %@", aStream); + if (aStream.streamError) { + [self _failWithError:aStream.streamError]; + } else { + if (self.readyState != SR_CLOSED) { + self.readyState = SR_CLOSED; + _selfRetain = nil; + } + + if (!_sentClose && !_failed) { + _sentClose = YES; + // If we get closed in this state it's probably not clean because we should be sending this when we send messages + [self _performDelegateBlock:^{ + if ([self.delegate respondsToSelector:@selector(webSocket:didCloseWithCode:reason:wasClean:)]) { + [self.delegate webSocket:self didCloseWithCode:0 reason:@"Stream end encountered" wasClean:NO]; + } + }]; + } + } + + break; + } + + case NSStreamEventHasBytesAvailable: { + SRFastLog(@"NSStreamEventHasBytesAvailable %@", aStream); + const int bufferSize = 2048; + uint8_t buffer[bufferSize]; + + while (_inputStream.hasBytesAvailable) { + int bytes_read = [_inputStream read:buffer maxLength:bufferSize]; + + if (bytes_read > 0) { + [_readBuffer appendBytes:buffer length:bytes_read]; + } else if (bytes_read < 0) { + [self _failWithError:_inputStream.streamError]; + } + + if (bytes_read != bufferSize) { + break; + } + }; + [self _pumpScanner]; + break; + } + + case NSStreamEventHasSpaceAvailable: { + SRFastLog(@"NSStreamEventHasSpaceAvailable %@", aStream); + [self _pumpWriting]; + break; + } + + default: + SRFastLog(@"(default) %@", aStream); + break; + } + }); +} + +@end + + +@implementation SRIOConsumer + +@synthesize bytesNeeded = _bytesNeeded; +@synthesize consumer = _scanner; +@synthesize handler = _handler; +@synthesize readToCurrentFrame = _readToCurrentFrame; +@synthesize unmaskBytes = _unmaskBytes; + +- (void)setupWithScanner:(stream_scanner)scanner handler:(data_callback)handler bytesNeeded:(size_t)bytesNeeded readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes; +{ + _scanner = [scanner copy]; + _handler = [handler copy]; + _bytesNeeded = bytesNeeded; + _readToCurrentFrame = readToCurrentFrame; + _unmaskBytes = unmaskBytes; + assert(_scanner || _bytesNeeded); +} + + +@end + + +@implementation SRIOConsumerPool { + NSUInteger _poolSize; + NSMutableArray *_bufferedConsumers; +} + +- (id)initWithBufferCapacity:(NSUInteger)poolSize; +{ + self = [super init]; + if (self) { + _poolSize = poolSize; + _bufferedConsumers = [[NSMutableArray alloc] initWithCapacity:poolSize]; + } + return self; +} + +- (id)init +{ + return [self initWithBufferCapacity:8]; +} + +- (SRIOConsumer *)consumerWithScanner:(stream_scanner)scanner handler:(data_callback)handler bytesNeeded:(size_t)bytesNeeded readToCurrentFrame:(BOOL)readToCurrentFrame unmaskBytes:(BOOL)unmaskBytes; +{ + SRIOConsumer *consumer = nil; + if (_bufferedConsumers.count) { + consumer = [_bufferedConsumers lastObject]; + [_bufferedConsumers removeLastObject]; + } else { + consumer = [[SRIOConsumer alloc] init]; + } + + [consumer setupWithScanner:scanner handler:handler bytesNeeded:bytesNeeded readToCurrentFrame:readToCurrentFrame unmaskBytes:unmaskBytes]; + + return consumer; +} + +- (void)returnConsumer:(SRIOConsumer *)consumer; +{ + if (_bufferedConsumers.count < _poolSize) { + [_bufferedConsumers addObject:consumer]; + } +} + +@end + + +@implementation NSURLRequest (CertificateAdditions) + +- (NSArray *)SR_SSLPinnedCertificates; +{ + return [NSURLProtocol propertyForKey:@"SR_SSLPinnedCertificates" inRequest:self]; +} + +@end + +@implementation NSMutableURLRequest (CertificateAdditions) + +- (NSArray *)SR_SSLPinnedCertificates; +{ + return [NSURLProtocol propertyForKey:@"SR_SSLPinnedCertificates" inRequest:self]; +} + +- (void)setSR_SSLPinnedCertificates:(NSArray *)SR_SSLPinnedCertificates; +{ + [NSURLProtocol setProperty:SR_SSLPinnedCertificates forKey:@"SR_SSLPinnedCertificates" inRequest:self]; +} + +@end + +@implementation NSURL (SRWebSocket) + +- (NSString *)SR_origin; +{ + NSString *scheme = [self.scheme lowercaseString]; + + if ([scheme isEqualToString:@"wss"]) { + scheme = @"https"; + } else if ([scheme isEqualToString:@"ws"]) { + scheme = @"http"; + } + + if (self.port) { + return [NSString stringWithFormat:@"%@://%@:%@/", scheme, self.host, self.port]; + } else { + return [NSString stringWithFormat:@"%@://%@/", scheme, self.host]; + } +} + +@end + +static inline dispatch_queue_t log_queue() { + static dispatch_queue_t queue = 0; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + queue = dispatch_queue_create("fast log queue", DISPATCH_QUEUE_SERIAL); + }); + + return queue; +} + +//#define SR_ENABLE_LOG + +static inline void SRFastLog(NSString *format, ...) { +#ifdef SR_ENABLE_LOG + __block va_list arg_list; + va_start (arg_list, format); + + NSString *formattedString = [[NSString alloc] initWithFormat:format arguments:arg_list]; + + va_end(arg_list); + + NSLog(@"[SR] %@", formattedString); +#endif +} + + +#ifdef HAS_ICU + +static inline int32_t validate_dispatch_data_partial_string(NSData *data) { + const void * contents = [data bytes]; + long size = [data length]; + + const uint8_t *str = (const uint8_t *)contents; + + UChar32 codepoint = 1; + int32_t offset = 0; + int32_t lastOffset = 0; + while(offset < size && codepoint > 0) { + lastOffset = offset; + U8_NEXT(str, offset, size, codepoint); + } + + if (codepoint == -1) { + // Check to see if the last byte is valid or whether it was just continuing + if (!U8_IS_LEAD(str[lastOffset]) || U8_COUNT_TRAIL_BYTES(str[lastOffset]) + lastOffset < (int32_t)size) { + + size = -1; + } else { + uint8_t leadByte = str[lastOffset]; + U8_MASK_LEAD_BYTE(leadByte, U8_COUNT_TRAIL_BYTES(leadByte)); + + for (int i = lastOffset + 1; i < offset; i++) { + if (U8_IS_SINGLE(str[i]) || U8_IS_LEAD(str[i]) || !U8_IS_TRAIL(str[i])) { + size = -1; + } + } + + if (size != -1) { + size = lastOffset; + } + } + } + + if (size != -1 && ![[NSString alloc] initWithBytesNoCopy:(char *)[data bytes] length:size encoding:NSUTF8StringEncoding freeWhenDone:NO]) { + size = -1; + } + + return size; +} + +#else + +// This is a hack, and probably not optimal +static inline int32_t validate_dispatch_data_partial_string(NSData *data) { + static const int maxCodepointSize = 3; + + for (int i = 0; i < maxCodepointSize; i++) { + NSString *str = [[NSString alloc] initWithBytesNoCopy:(char *)data.bytes length:data.length - i encoding:NSUTF8StringEncoding freeWhenDone:NO]; + if (str) { + return data.length - i; + } + } + + return -1; +} + +#endif + +static _SRRunLoopThread *networkThread = nil; +static NSRunLoop *networkRunLoop = nil; + +@implementation NSRunLoop (SRWebSocket) + ++ (NSRunLoop *)SR_networkRunLoop { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + networkThread = [[_SRRunLoopThread alloc] init]; + networkThread.name = @"com.squareup.SocketRocket.NetworkThread"; + [networkThread start]; + networkRunLoop = networkThread.runLoop; + }); + + return networkRunLoop; +} + +@end + + +@implementation _SRRunLoopThread { + dispatch_group_t _waitGroup; +} + +@synthesize runLoop = _runLoop; + +- (void)dealloc +{ + sr_dispatch_release(_waitGroup); +} + +- (id)init +{ + self = [super init]; + if (self) { + _waitGroup = dispatch_group_create(); + dispatch_group_enter(_waitGroup); + } + return self; +} + +- (void)main; +{ + @autoreleasepool { + _runLoop = [NSRunLoop currentRunLoop]; + dispatch_group_leave(_waitGroup); + + NSTimer *timer = [[NSTimer alloc] initWithFireDate:[NSDate distantFuture] interval:0.0 target:nil selector:nil userInfo:nil repeats:NO]; + [_runLoop addTimer:timer forMode:NSDefaultRunLoopMode]; + + while ([_runLoop runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantFuture]]) { + + } + assert(NO); + } +} + +- (NSRunLoop *)runLoop; +{ + dispatch_group_wait(_waitGroup, DISPATCH_TIME_FOREVER); + return _runLoop; +} + +@end diff --git a/Origami Plugin/SocketIO/SocketRocket/SocketRocket-Prefix.pch b/Origami Plugin/SocketIO/SocketRocket/SocketRocket-Prefix.pch new file mode 100755 index 0000000..8c32c82 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketRocket/SocketRocket-Prefix.pch @@ -0,0 +1,27 @@ +// +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef __OBJC__ + #import +#endif + +#ifdef __cplusplus +} +#endif diff --git a/Origami Plugin/SocketIO/SocketRocket/base64.c b/Origami Plugin/SocketIO/SocketRocket/base64.c new file mode 100755 index 0000000..1d76d16 --- /dev/null +++ b/Origami Plugin/SocketIO/SocketRocket/base64.c @@ -0,0 +1,314 @@ +/* $OpenBSD: base64.c,v 1.5 2006/10/21 09:55:03 otto Exp $ */ + +/* + * Copyright (c) 1996 by Internet Software Consortium. + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS + * ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE + * CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS + * SOFTWARE. + */ + +/* + * Portions Copyright (c) 1995 by International Business Machines, Inc. + * + * International Business Machines, Inc. (hereinafter called IBM) grants + * permission under its copyrights to use, copy, modify, and distribute this + * Software with or without fee, provided that the above copyright notice and + * all paragraphs of this notice appear in all copies, and that the name of IBM + * not be used in connection with the marketing of any product incorporating + * the Software or modifications thereof, without specific, written prior + * permission. + * + * To the extent it has a right to do so, IBM grants an immunity from suit + * under its patents, if any, for the use, sale or manufacture of products to + * the extent that such products are used for performing Domain Name System + * dynamic updates in TCP/IP networks by means of the Software. No immunity is + * granted for any product per se or for any other function of any product. + * + * THE SOFTWARE IS PROVIDED "AS IS", AND IBM DISCLAIMS ALL WARRANTIES, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A + * PARTICULAR PURPOSE. IN NO EVENT SHALL IBM BE LIABLE FOR ANY SPECIAL, + * DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER ARISING + * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE, EVEN + * IF IBM IS APPRISED OF THE POSSIBILITY OF SUCH DAMAGES. + */ + +/* OPENBSD ORIGINAL: lib/libc/net/base64.c */ + + +#if (!defined(HAVE_B64_NTOP) && !defined(HAVE___B64_NTOP)) || (!defined(HAVE_B64_PTON) && !defined(HAVE___B64_PTON)) + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include "base64.h" + +static const char Base64[] = +"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; +static const char Pad64 = '='; + +/* (From RFC1521 and draft-ietf-dnssec-secext-03.txt) + The following encoding technique is taken from RFC 1521 by Borenstein + and Freed. It is reproduced here in a slightly edited form for + convenience. + + A 65-character subset of US-ASCII is used, enabling 6 bits to be + represented per printable character. (The extra 65th character, "=", + is used to signify a special processing function.) + + The encoding process represents 24-bit groups of input bits as output + strings of 4 encoded characters. Proceeding from left to right, a + 24-bit input group is formed by concatenating 3 8-bit input groups. + These 24 bits are then treated as 4 concatenated 6-bit groups, each + of which is translated into a single digit in the base64 alphabet. + + Each 6-bit group is used as an index into an array of 64 printable + characters. The character referenced by the index is placed in the + output string. + + Table 1: The Base64 Alphabet + + Value Encoding Value Encoding Value Encoding Value Encoding + 0 A 17 R 34 i 51 z + 1 B 18 S 35 j 52 0 + 2 C 19 T 36 k 53 1 + 3 D 20 U 37 l 54 2 + 4 E 21 V 38 m 55 3 + 5 F 22 W 39 n 56 4 + 6 G 23 X 40 o 57 5 + 7 H 24 Y 41 p 58 6 + 8 I 25 Z 42 q 59 7 + 9 J 26 a 43 r 60 8 + 10 K 27 b 44 s 61 9 + 11 L 28 c 45 t 62 + + 12 M 29 d 46 u 63 / + 13 N 30 e 47 v + 14 O 31 f 48 w (pad) = + 15 P 32 g 49 x + 16 Q 33 h 50 y + + Special processing is performed if fewer than 24 bits are available + at the end of the data being encoded. A full encoding quantum is + always completed at the end of a quantity. When fewer than 24 input + bits are available in an input group, zero bits are added (on the + right) to form an integral number of 6-bit groups. Padding at the + end of the data is performed using the '=' character. + + Since all base64 input is an integral number of octets, only the + ------------------------------------------------- + following cases can arise: + + (1) the final quantum of encoding input is an integral + multiple of 24 bits; here, the final unit of encoded + output will be an integral multiple of 4 characters + with no "=" padding, + (2) the final quantum of encoding input is exactly 8 bits; + here, the final unit of encoded output will be two + characters followed by two "=" padding characters, or + (3) the final quantum of encoding input is exactly 16 bits; + here, the final unit of encoded output will be three + characters followed by one "=" padding character. + */ + +#if !defined(HAVE_B64_NTOP) && !defined(HAVE___B64_NTOP) +int +b64_ntop(u_char const *src, size_t srclength, char *target, size_t targsize) +{ + size_t datalength = 0; + u_char input[3]; + u_char output[4]; + u_int i; + + while (2 < srclength) { + input[0] = *src++; + input[1] = *src++; + input[2] = *src++; + srclength -= 3; + + output[0] = input[0] >> 2; + output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); + output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); + output[3] = input[2] & 0x3f; + + if (datalength + 4 > targsize) + return (-1); + target[datalength++] = Base64[output[0]]; + target[datalength++] = Base64[output[1]]; + target[datalength++] = Base64[output[2]]; + target[datalength++] = Base64[output[3]]; + } + + /* Now we worry about padding. */ + if (0 != srclength) { + /* Get what's left. */ + input[0] = input[1] = input[2] = '\0'; + for (i = 0; i < srclength; i++) + input[i] = *src++; + + output[0] = input[0] >> 2; + output[1] = ((input[0] & 0x03) << 4) + (input[1] >> 4); + output[2] = ((input[1] & 0x0f) << 2) + (input[2] >> 6); + + if (datalength + 4 > targsize) + return (-1); + target[datalength++] = Base64[output[0]]; + target[datalength++] = Base64[output[1]]; + if (srclength == 1) + target[datalength++] = Pad64; + else + target[datalength++] = Base64[output[2]]; + target[datalength++] = Pad64; + } + if (datalength >= targsize) + return (-1); + target[datalength] = '\0'; /* Returned value doesn't count \0. */ + return (datalength); +} +#endif /* !defined(HAVE_B64_NTOP) && !defined(HAVE___B64_NTOP) */ + +#if !defined(HAVE_B64_PTON) && !defined(HAVE___B64_PTON) + +/* skips all whitespace anywhere. + converts characters, four at a time, starting at (or after) + src from base - 64 numbers into three 8 bit bytes in the target area. + it returns the number of data bytes stored at the target, or -1 on error. + */ + +int +b64_pton(char const *src, u_char *target, size_t targsize) +{ + u_int tarindex, state; + int ch; + char *pos; + + state = 0; + tarindex = 0; + + while ((ch = *src++) != '\0') { + if (isspace(ch)) /* Skip whitespace anywhere. */ + continue; + + if (ch == Pad64) + break; + + pos = strchr(Base64, ch); + if (pos == 0) /* A non-base64 character. */ + return (-1); + + switch (state) { + case 0: + if (target) { + if (tarindex >= targsize) + return (-1); + target[tarindex] = (pos - Base64) << 2; + } + state = 1; + break; + case 1: + if (target) { + if (tarindex + 1 >= targsize) + return (-1); + target[tarindex] |= (pos - Base64) >> 4; + target[tarindex+1] = ((pos - Base64) & 0x0f) + << 4 ; + } + tarindex++; + state = 2; + break; + case 2: + if (target) { + if (tarindex + 1 >= targsize) + return (-1); + target[tarindex] |= (pos - Base64) >> 2; + target[tarindex+1] = ((pos - Base64) & 0x03) + << 6; + } + tarindex++; + state = 3; + break; + case 3: + if (target) { + if (tarindex >= targsize) + return (-1); + target[tarindex] |= (pos - Base64); + } + tarindex++; + state = 0; + break; + } + } + + /* + * We are done decoding Base-64 chars. Let's see if we ended + * on a byte boundary, and/or with erroneous trailing characters. + */ + + if (ch == Pad64) { /* We got a pad char. */ + ch = *src++; /* Skip it, get next. */ + switch (state) { + case 0: /* Invalid = in first position */ + case 1: /* Invalid = in second position */ + return (-1); + + case 2: /* Valid, means one byte of info */ + /* Skip any number of spaces. */ + for (; ch != '\0'; ch = *src++) + if (!isspace(ch)) + break; + /* Make sure there is another trailing = sign. */ + if (ch != Pad64) + return (-1); + ch = *src++; /* Skip the = */ + /* Fall through to "single trailing =" case. */ + /* FALLTHROUGH */ + + case 3: /* Valid, means two bytes of info */ + /* + * We know this char is an =. Is there anything but + * whitespace after it? + */ + for (; ch != '\0'; ch = *src++) + if (!isspace(ch)) + return (-1); + + /* + * Now make sure for cases 2 and 3 that the "extra" + * bits that slopped past the last full byte were + * zeros. If we don't check them, they become a + * subliminal channel. + */ + if (target && target[tarindex] != 0) + return (-1); + } + } else { + /* + * We ended by seeing the end of the string. Make sure we + * have no partial bytes lying around. + */ + if (state != 0) + return (-1); + } + + return (tarindex); +} + +#endif /* !defined(HAVE_B64_PTON) && !defined(HAVE___B64_PTON) */ +#endif diff --git a/Origami Plugin/SocketIO/SocketRocket/base64.h b/Origami Plugin/SocketIO/SocketRocket/base64.h new file mode 100755 index 0000000..c345e2e --- /dev/null +++ b/Origami Plugin/SocketIO/SocketRocket/base64.h @@ -0,0 +1,34 @@ +// Copyright 2012 Square Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// + + +#ifndef SocketRocket_base64_h +#define SocketRocket_base64_h + +#include + +extern int +b64_ntop(u_char const *src, + size_t srclength, + char *target, + size_t targsize); + +extern int +b64_pton(char const *src, + u_char *target, + size_t targsize); + + +#endif diff --git a/Origami.plugin/Contents/Info.plist b/Origami.plugin/Contents/Info.plist index 20607ee..2a3e340 100644 --- a/Origami.plugin/Contents/Info.plist +++ b/Origami.plugin/Contents/Info.plist @@ -3,7 +3,7 @@ BuildMachineOSBuild - 15A279b + 15E39d CFBundleDevelopmentRegion English CFBundleExecutable @@ -19,31 +19,31 @@ CFBundlePackageType BNDL CFBundleShortVersionString - 2.1.2 + 2.2 CFBundleSupportedPlatforms MacOSX CFBundleVersion - 13 + 16 DTCompiler com.apple.compilers.llvm.clang.1_0 DTPlatformBuild - 7A218 + 7C1002 DTPlatformVersion GM DTSDKBuild - 15A278 + 15C43 DTSDKName macosx10.11 DTXcode - 0700 + 0721 DTXcodeBuild - 7A218 + 7C1002 GFPlugIn NSHumanReadableCopyright - Copyright © 2013-2015 Facebook, Inc. All rights reserved. + Copyright © 2013-2016 Facebook, Inc. All rights reserved. NSPrincipalClass FBOrigamiPrincipal SUEnableAutomaticChecks @@ -51,7 +51,7 @@ SUEnableSystemProfiling SUFeedURL - http://origami.facebook.com/update/updates.xml.rss + https://origami.facebook.com/update/updates.xml.rss SUPublicDSAKeyFile dsa_pub.pem diff --git a/Origami.plugin/Contents/MacOS/Origami b/Origami.plugin/Contents/MacOS/Origami index 6d4736fe96c4895fe8884917b475868222053f6c..6d367498dcccc695ef70ca26e452f3d60bb68881 100755 GIT binary patch literal 1654936 zcmeFaeVmnJ9zQ;*vqn0dL6fnbX6?Zsns8@YMl+gnFw4X&6RGLZWTR1ovMn>3VW!hz zmJmXovn-({w3!}sMoUFjVV68C*U-|23cLEg-=ELtJ`Xcf*zfnh-|xI?uKW62pXcjy zJ>J)S-)p}8*Y~?;WOV78k&%&!|NG;A-d-6Q4M_Rh5C1c}Wn_#TSw6U;TtMl6s(W^t z2hWTE{`aubkt1uyO|40yw&z#0kCu)4>z;DKJj5n{-7;#E8R|2o=JL@~5}@|{?t54H zOs5j~G2cZm7D@;iPHC18Fxqm`tCev?LDJZ9u2 z<7%od9d*gL4*bghrTqT>fHLv(KFc)T0FE3vW=hTE371}E2<`RDzeznkyjl_b{LcA_ zeq$z%nlgn7w&yo%x1f+7rb&jM{{eoqw`N*(M|+SM~=K`%$Skmrj8j`T{E&~)ads7%8pR|!WPcVx37a#mLo@AzRUWk zIYIfcP4UNkYWyiQ`4{{yy>h~(V@FQ7bo?ZM+v_*o_*EXRG|cZ>zj0L~$4_SH$*(=X zjU!aQ+`UvQ=Gh1A?8knf5shW!$dcmn;uI{u{a2ed?egpg$hVh~j2wCC#F0~`T{3#o z#F5oClXuE5%NGHDsd}-!e(IMYMZHc+MoCBgvP_>MQ;+%f{5GZWn>cD$`jt)A04bwk z_%WZ#kKp4|DjMy!T^y(TZ{9TJSIv$WKjwEG$79B)244I6$ht-OZM;+{5slxa6UR)P(iy+n-Ibr;E|~uj{Kkx`A-9h8 z+i3j!#>M=P;8#6)Qq82!^lQvi{Tj_h%(vrbC7PJM6D}Eb(Kt5U_WsM-Bi&x+cinEa zKK!6*&o9ULHJ`0P#{7@aZ_2odlgEw6aM_;U{0p@DDvwipm`~-0;j^>)75|ZAdw!WW zDteB2iTPB1Y0g6?HU2u|muvi5ZJ=hp9ly@>n{qjZ@y__UTNFLZDuMYQ!EeG9qc|(* z=)di^DZdKSg86p*gwFqC_KqD@GfF`1{Z}?$8EyWhQZT=3ehF5c@+*2p`4w1$V}95C z#!R~8l1bKkbhLNs8_KUp)sw%e{8G9;(`WRQx zrKg>F#^93E%1MFWMyr5oGt}~PDmBl3IhEHT85yuIG%Ke8q$@<8~p(#}FwhC#}9w zCqGaxr*RH++F6~OVuhWw(;wtJw0tLFRNPmJMC0~xbX2cz-unT4&lxx7^2rlwrgg5c zUuyn13@Q8H*7ChFTG8nrVR?=R|Nrm*yB>(l*pw5A1zxJ_nGtE49?pt1)r2!6(HdMu zvrmm=WkjNd5hhJ1g(FSdBGKcKEOnQ?vS$X!ZXj8-RFIDpWN&{#UPGi(MQTbx3M$gp zQ^`?~4kyx#6*lupDhW@GM2$t%yGO*u-3w9{cONp1W#@}xUXzxRsM5_bloqDZalz0VAp+5&n4d3}LY$ ze8e=CeVGWZp^1eL3d&N3KoKhjb&9kmTo7qmT?#fx%ftDlP0Lu4Pgmu+OUMRgc@#cX zGJ#vB(Oz$aNj%*oPL@*dEME$0z9gLMjcbnDjRtQzpY^#% zq-j>Tnk9%}$C9Rn;f+iY!NlYbvKhfs$r;hA47`7rXnh6=hISs)Sa8|Z5-0CS=`zGy zq-hoHpXxqBhfc&Eia0q{jO2dTIwF zqTbWOW{tbXggh*`-U9+gz(`eAx=Ml%0gW|M-5#4il~-0~aCigl@-L7*DNcwCx75 zJwo+ZEvjasp6OVxEh;+OulN2G3^%?FkMw()jon%kU_Ym8qk-?vrHqWoiS^PfLk*d< zv2F!h?{e1wBprWdY^q{cfm)f)h^+}%MB>PbrrKOz7Pm8=QA1@gyQNsA50`>K({EH# z)VtCO2C)FD{8kXWDgkQ~hFe{j;FPu#x@BqY`&~*x&nzuzT*?s12XSL*xUbtAm@{#K z%vrV5!)KwE8Aebr!YXUqPMbgg)x2X(_{tS3{Buc55Qjj(AFruM)qc?5d2oS%`yw!S*j$pRBB{@5ywhuoQujiRQn%E0vrE ztQ&|7x`N$NG7u&Wgh{eTqE@JbN1CSJEl>8-MeL_f1~H9i?Pv$i;L9Wb87r!mhYn`{ zTmjcGATpUogImg}qV&&YgrI-Uk#u1=izz~rnEb)*?4LJ4Y$Uqa78sUvI z^tNRb9~d%~;^S^RvV;4z3`W>M85wp!OCBrh!&py9x`wGX%Mt|AHKF=D2{1&|UiHZu z7_-P6To;NEuULfC%P3~-x*$+a7i^3xG!(UlltVX0Q$$IXJJpy>lC(a&HmL-tXPc5< z50jY#w9t}P8wPG^L0DXa@VMsqE?euv)VvEI7lj%ExNOrdbg}SsTbJ&c0UTP{#mcjA zO}jQSg(2&J0%jM@Penj|vv*~cw|(6eh_S%4S29Fq`L$S8NPkG*It?7i>0U|e!!6_t z37UFu3TE7$jbe;xEpXElz@YcX8Cuz)7m?E`IV_xhEZ5Pdg<+qE%-hz#`YB7VfhGVJ3OvLSDOio1l9I7Ov zxT%%HPA*$lY+<-S(!zW&FO3EFkR24kcPL7PkCKJ=xQ^^hf$UbOBCqh$!RTBa|}p%5xttQE7r73!W%$fFlcE10&9o zF?df8=a%aHIam5{%%4;G@CV2Nh*^w}CoBW1xVuj>9eSTnOvT??u|;u#fy)U7^>n7O z;3G9`O`h77GI7mxM+rTq@Wk$q%;0|Slr+7|&bn4=A?}8!LA7q;Zb%wbYclTg)1VTV z;QRA5Xp8af2B@`sKy0Sx&(v2(ntFuY`+uSOi#33v$A{fo1E{$Gyl4RJ?E!e)0NP6f za2Em5z}08c1v2^In3I@%R3Nk5WkQ!``(ZsEiNs{cm!%kk3?p1Vm4uf#9GxaY0+XkJ zCyMf{$ld+|WqCIZ(D+%s7+KiA6{*G#RyUYX)-WJAjz_&oimD^|-G;xCDNr$kmC;_p zEYqzc7(s%%;vCiwms)^B=e00jgdKxJ$q_9A2;MJDk-@?cA&8Nwq-mvVLS8RvsKnV7 zhLUe6a4rULcP<8&AN^Cr_+a1d^Uv)Ruh9a^KN-bBU5Ove3Q5Cgv=A_fOTI7bjVDO+7}#S1xKPl>Za*6TG&e2F>m{2l(1MOz$^hryZ_}B6W)e z)&CdJe(R`oh$+Oi-Mw#`C9d)h)+0U#U)2$;8 zjLxMc?@Gqk)!Wl7dV=6s;FU=l&C**&y{|o*FVTF1BJ4>7bTd<-FN)&s*k{SyJ4!I) z?joWAd?V6CH&eyFV=BFXD=$+~sauXa!SF{4du~7gwMt}iJu#7BsE)D7w!N^>h`ap& zmTtzMaAcoDrZAj4V9y>;t>f+;susgk)Vh&_L6z)jpbz#)Qb5U3W-ACSCTOOv`~96q zj0UCHWqMthTdRc5nXbhk+A$IGI3dx%jS)Iky8E?Ym+0=$tc?MY!Sc-`@oJcHY)@=NYd{Sg1}z(s>o zysjd?KTaJwGgZWE%$SHI|GG_in4vYcmLj&ZIDN)cDp%5l;T)#$E8+ZM4g!-J>%(2q z=3E{4&D3jvLc~Rqfz-yFQ{#_86y7au;ry z8)LkA>krl6tO&#U5h3md8|zDy^#_lTd|_CTyMy5(;RM$Jh;9NdVh5p@n7;z#x{wwf z4m0GrhwuuVDH;X$Re@E)M;h;I3u!g*MI%4;Zp~Mfo|0nhmmu}$mYuXqYI4VX>O0#^-_y+T_ zz%ZH+4Sq0M>^;u6cbS_j<-q~Mc&|tkR!-~PJ;EfgSg{-Wssk@06fAF7lAa`qW$$>H zEce!p(+^Z_YSTh(P8LR*A?Xky4SaU7Xj88I9~2^~!k)@n%2^p!lbU+7eD15;Ptd)x_)Q((?Shgi}ehXO5 z4$r5A8dUO^0?ESeuAmHW6-k-_p>dcc1Y1HQmXd?SQi70LZ3!7+I~8XhP5-QM4?U^w zTg@~Y>^h2d=#`_Q;Y{B`C?Vt=8Zk4WhL;-MtxRLVF%#G@aDT)bM#h}J0gKpkh+QPy zHN)DESYDChu0Xg1UV4zURABirR4?v!M}fF{k=O!Px8Oqh0!h954DsCsQvKO8x0$Qw z`veQ*0=6h5#nsJJZ4bmv!ec7MJf;~C8V77lgCODRwW!<#A+<`lx}Ay#_fcC;go?Cj z4AW?E&PW>TwZUKFY7=J`s;e8RVOOI&ifJsk{UYDhpC3gIi^IgCt80nrs2K)ON@f=^OREc-~}#k`{g9h?4W-i19Sb{2=Hirn?= zhV*iw-Sc@U55qwN}~vF1_bQhYG21!{p`;rgX7YL?Q zjS}gOiaW|E&Jn$Wx#Rq*=}pB^HRMbCvdI6xkEwCY(2oI90V#)t+pSP3;?6N23tWCL z8R4JzOY_CEECBU;f)IRVEPatZSnv?q-f@fyySb=4;jZ3D9#fL%NYaF!E)l;wg!f|I zFXbVDg?5Qq46BqkDlyjJ(iIr5N=fOYZ_UHF@*_SGr2*Q5n26_!R|>cu=H-zJJE@} zXZnBlh@sq_L^0(T8_EVBWeQPZ!5YED6owYwCP-+{OWgwCLDnTwtPLNY!M!c_DN1nX znd=d3)W6@2zDX=gVuw;U@8iRm1nxPJEkSoGcC4jmo5&WBIpWg7B^6X6u;VVGXM*rR zY7oorKe{Iurnpa2f|V1!3SlLnn~St~$LnNuvaxCwR<@{$dLL4B6Ix%Y*uBM?;Ef_@ z0B5ezz}}`@Gg$H#awAeG30qV-?_Mz?mCax0vvTb2dUP-7+W?#rh@xI4xEan(WYv~d z)&fdx!IPKNiPBVxECQq68I%&s9y^M$mMUxng@H+XI%D7cq?%et0gIL)kS95bS$QEp2);=_YXR^S3;hFFdUzaT$U zeHNI(iX0^PEyLvjdI^JqpHdQ#a+$`0XA~(-9TB#&FPKecsK; ztAVOYoDC(~eh(tOb?#56*0@hnv~xzbE(NyPU@xY?wj1ox6qxL_K)c%ji^Q}Or7U+H z0d*_5bF`dwM-|;a0Bn}?h{?S$?6YM>>Q?5_k#JmQq%JPkO^MTpZsYyn#ce4$zfl%p zQ563b(_Mn%3LY*@?6*}!VzM91diM_xFtiKU>uw@9?1UjBcQkkvt?7?+2IemoK>qlH5pp5fsO388??^C@I<#G3!WCCSp6VZD=mx{;TUkF9| zPbuYH%ji)2KO0V6rcOn;pozF^1;KlbbdZBKqjI{1-83mWDeM~MLK;-u{SKMrK5K+R z9$@*574UqA{YW@sI<1p?Q1VBz+c7Lh>Xzn8RiB$1iJ!_#Xe><^8t`B$w#J&E#t@N? zUDJR@29=Bsg)NL$MkBwb$r@@LZ}sU*o2wgGEg= zn$ZAjYgV176}UeGB%z)n-#;%~!majT_Oa~j?I9ySQ6R2r~K1ESF3mQ{}&QfI8t8fqJVfdmXc};D;3)06F%88h^Z}w44oe3{Z*} zp%0TeQq1lvVBi8?4F`yY;aa*LnF?kaCF3=oN#_?HA&jIANXL?E4S$*2lcJ&LajH>- zhzN!pzd^F$e{#1PBn^LyWy(nP88UvWEDe_-07|ho0z;|IOxFcm{c^epB%h~{u+{*2 zCk<3ZP^(EnV8>nCU6dc3+gAhcL_56L)GZup;6n}4mh9N9I|w2>^aqeECqZ}u1WFcx z2o9HHmFNrEL7*9zi%i~Pi+YvfhwNYEvqs9pSvp_tNeomFx-@Ty)eWjDi!+9}+e|f4 ziiTg9_iOsmd;jN56a#gI60bMtp2LhEsB$Auh#5IJpG}sr?Eml>VJw(^9%UzSaQ_Pe zpnaGw7O&#uD9?hTGly8X3LOA(2!$w|4XCpm6h>|ebLc;EBsWfS+P$(HZM$|Z4=5J# zJR1Wof*{)fQSkgB$EfEqg6qkw{-rf%hJajiC zaDk_6z5VxB@bv`8f+e&YlZmw=)K9(t(ud@_%8dY`8qQlmi%fK@FFG1{>kP`n5?5H@ zwl-5}DX3BJd1d8#Qy}y?Sp?(Qs-VwSG{!E5fO^?daRZ5hMMZ&dvaNOODEUG|4bAAz z(dA<0nmt;?<3_9SD?CTUEw^ljdg2h$7c96AMJo>4~H1#m^N1p#{MZNyMxoF#@`(O^} z3ULK$v`wU;`d$J5Mz--u9$>GMs_4&|H*whrTP2+xZjp4B9jRFyUcfvRmek--SMYeS z9j%Q;Jln2YKCI4p0Qo1}7psc@zD+H!6xsgqnQpBln1##(XSr(%I|{vE&k}*~Z#?aG%s@n*;USzGEpGC!)YUEyw2*l@yNu+mBUxZJ4jVj2scE~=vyc0<)ix)}2ps|S0 zV!qF?8L%*%CklBxN=RQ=W{N~i5u})QxVwzoOH5+EmOqI6v<#R<0cpwa~qstG;p;$Tdw?S4qgd;O5j}f6oZ>q71u4p1$vR$0)gbu zC2ZHQU*X)veLGtXK7@Q?!H}rPoAG}EBKJoyt;M9n&U)r?_Jo6Mxg(o32xysEcvWSa{G7@K%r}Eztbm9Dj3<;6E4a^kv?&9bQX2C zF6QqyC&nr33;ljf`>#;LvE=5XzXWtxe@Y`+;GfsL7p~xz*(^Z1SP;Acg1~kC!-_yp zX1YsR3QuMdbs94MgD3N;Dq#1fz!n%RMwmQlhP#}AVVEdEf`1@cBRu`$Rv}sA&QBp( zYp@|Hunh(~7BEZ)_X)ED+#`aCIH!Y&vqzjYE_ZhUi4*YT`n7J8_7aQ3wW5Ta+bZWN z{x>6apT31g#VD#|TdfG)xC}V9_r~?X(eH_HEQmrk=C&&;vLZZ7)f<;>2Qv?Ufoct# zBb-rN;ymfA8TNA@(9KqJsF+S?|s><0lNPmSmn9| zUKf(!)!2NU2v|&Hx{bW5TfsWU23Zl;4+W6Ub~*==uw(tfFM4MDI=VNH%;&QN~2*~pj*8M+T53i)c+WN3|s#?(hs zzL2uojW)DeLu2ZrapTaqohWF5k4|UUW4oHzQSZ-tCY-hMMreiR_&HOYk0&B5m@0^V z>eUN@EM#smg1<10de@5IQG(e&t-M0Oy4x)WGkD6)O%?8e1HoO+G7u=G)got>$@30K zDt5HV`Hjl?c~TC~z`33#hZ*6NNobbJ@lG>21WIXDx}1gG6ApOk26e!{m}1`|Xn~?< z;M_w3#?4!w({{wMn@=e2kNI*46gidYa!QkOE;Km}D(Cd1oXzBTvdLjaIB{p$6{(yC zoR}295h$evDJ4iwU0cc{q9DH8$>R+#y;5J-itFoI1?v2N*+aKJ{Y z@SuQk3ljcNfl^wOF6ZOSg!S8Isr3h|oR9pt#p;(FH?SBZ95cd+{l0sfP~3+cVsZ$S(t>n3 zS10A%XmXwvhTim~oCV}qZE~0qPV)(!ta489?IBP~^V8+@PRcpl|nzn5yAO z(+68Z6@M21BU}N)0RVBXqRtJ|TSCmnCb-Hsg_vRM6OWICu6`@>ymng|wUK_W0dnbU z;E4&m;Ndh^mR?}ljEj^W?8~1es=QlNtGo}>Sa2F@5n;R~5#S8kX1e8_nOgbGG}ec2 zBssq zTqW}#W@3T&2d51IPX!VVTuub&`k7F9En=?p=+$KQfH7kRZkt5de8Au~Uej$d#>WD8 zn+Q{U_oU*LCZZ83p8@g4B!yIx;Xo52nbR%PEY{8T9T8`pM+1@lwMVM}9dA$;o=_mw z)X3sk_AuU|#Zbp$sCyo<@Q^r8J)sAOq z1;w&27WS#SmO#9Ols3(*;CrikWQ6k8qUpW1B@*hhDy>ZsvUz;ynAS+>RNOf8R!PG_ z?P5M7YRaJ$U*kN0&;a#zH{1pV38J$)D43@TPUxWE{nwjosEtJGD;XGkg~AT@HrN)_ zu^nq;2@wqTN-}UId4}%3gMu9J3V{W{@Db`CKz3GkZYKKrwYjYLn+vxph z=+#E|5Yt$2N+BC5w+AMWF=~NW(hRXGaAm?BZBo`VaaUn^MZ)=CzZ@Ea$A2@Z9G-I_ z7-=!nSnzQQK`3bjWBW(23vb+w*#7R2?C;2?2SQ#J@7ylXQ~0j6UKws?8VeTsTH}PC zgh1gSR!A%-6$rj^noY&KJ#cV ze5T7iJE496u@Kmc%x7WAV=hDC`&vdc>28=x9(Ui)P)ZByCw7Fyi+?2;-u#kjESP(; zdb3P}|4GH7tGGOOcNr6ANcEuQt=XM#Os_DecPrDsS```7;Yp_R$uwe2m?6_Lp$hzs zhqKUB+coWHBn+_kFPq}?$Y6I9*H^_&ms4E`yF>+ED>OLOB@(0p^>VhH*0wG2M)G>$ zTJ^_=lClDSFZF;ET|z7s*esXzdX~D$D4w+R4@^;SwPaUs8R2~;Gk6XMRorenyb(c* zMdTYuWc{XXYAQKgZ1p%tYh=fNrQR4uQoN^0Jx&C9Insi4+$Qy=IyI-4=}~Q(SF!LD z7Gf8W(z$W803uSi(7&WC1RIfAG4~L^P!+6~MnY#!0OGgXG+uvIa)Xdq?38kmmNu;+h?m@c%@Gg=XaDY&-qdnOnKfC0hx^>Z zJCI|ILp8;Iyhg`c-!nR((NeeN8g;{bDZ%cv*oL#iNI5@Ye@O*umGTLplqo@`h?1d~ zmu@~dCAThx4}#%iz27^uVy&l{5R8BaFZZ<4_eF9-adn#xq%2A){wz8a|go1-2@nB#k}UMcqQIS3t^eU zBlrhC6cP14ptZVBb%x52ayV+BPB9uBEY3gF)aUaF*>3#cq)oC-8 z2?+PVDjteNT^rXaN%5}`8(hCaDqL+bQIX{8$mjv%Dw!vki3MgGS99RFZxTjbVO;MP zDsRevSR$R$Mlw6km@xyly+_yufWd9NPFYM0O;`N+WF75eB2Gjqi;3PzA#2HS%XIaF zWd4f`%nLlZoX>sX9+U(R5oB(B?#!(w9!2!_Q*1XymT2d!4wzV1WjPP zF`KW5Y%8k#(X6Ui_I09ELTA)zZl{d&4y3L-RNvV?r_aO<2^J8c2zqOP+M(As6V-!W zfmAxi+Egl?ig{s{A?j!v-1ION*SU5Xn8@_F!nj#Ie7ikKVW>quYD6wDRaQt=@SjWD z&9&v0-nY_6*rFfdNo2!%%eY~3AZgrU6Po#2d#_iTUS{Te3T!CL{u#2eSs zUq>kEyTUNfhDF#jQJxiZ{aN@rl;Ckata)f6=G$1AVM{~pO*F(Kx58d@OGB>GR(L7X zXz>0cB-*~(76K&{HqEgHp}TZ$&pu@@r`fFB_k>1$GqbGO!Z3~dSPOi$6)3L~8Vb(b5>T}b7?3zh02 znEp|@YFB1RQ<=tsFZDC+7h1C{{HwTUr*}iMjJ`lpPSsYC0Gs`|3yFD}+&RU47x&3j zwIHN|{w{~2sL|_Rshd>sl5oT=CMs@y;C^S^#U;agm4C6T3iq@j;O0-WPayO#DpLk5Av4Fjj0+W#dutg~_X+VHIkOGs40jxO%CgUn#(*Z-TaN+Lssob^X zO{m0OOWvzm?mhuh=wJpS?_afYQih2pCnlU-ZYLNEjLj^^FA~FpX-s*PT5esw>9WBA zD4PVKbr3E&*k@#HF8-385aH}t$%a!q{&>w9AAd4%%4E=XbIXgkzm$h!>BLAQIGj@o zgp>l|+*TkY7YJv=0#R}d$+>_qq9g_1jS!ifEaOO?<;k5ZKk}sIYY7KFhjg)nM!}9& zWM-RDSqHxS0(<;n%fAd&tVJPuZft+ml7$&_ycjbT5YexiMN7a5KQ^g_vPKe(NhLTD zxq#;qRAoMdqg=qM1a7krA(7zB@gehl$UI!Iwj@Pu%o8i@ z=n?W9iCIqWw3a++O*7#rZ*uc2CfZn-+f@keX(ey#2>2%m>Z+C4v z9d_DVOrem*{#CHEd#ar!e4$L?4a$7S=c&xU5zp$BErq!RoiS&CG4M3t+B1&@dyc2l z_JG}!U0FpkoZ{&uI*><%;L)N;6smg9iM&$yAN#se@V#8| zNhD3}t4!^U#QD)aDS;m4cw(>kx!ph~2Z*pn!P|&9jG_!_DNhS6Ek#9F$U}U1E{Wz; zvpAyW;F=Q->`$gvlUP^)=of$%v#me?VhN@)mio}%1kO6(fJq-IPAgd|Jj;0+I^iS; z42;^14_(166UjLeqh2^U4`oZjx$cZ=4#MJ2z}!ia_2ZL}BME`OD}~7IFIiABO6pd$ zf@hmIDLJ0Z*fcc~D*-kRPQm^f98ZJjN=Syc;j%Z~Tfl}|rynepvk$e#s5yyHq_;__ z*G<6Kw!`Kf)hx5(sgk0m>5^O$oJmM5u+JWdo>(?V9(Zza26J*={2Tuv7=3_=r@AVr zS02>L2lg_gdnsWRTIS_&mHUE8J9kr4_el@z|7keIwK3X?|&uCZ9- z41+82IY6+tV}pkL+*@g&EP_@hLGT^ai@T@OKq71&K#>_MrnY-tM*Ll+{)R18YKu(w zBt-LQL9QE3YUqG0l}C)^vH*@`$iQ}}&!~uAol749!@K@ptef(14qjC5R$oHn@%}qW z%?a>?H$kxC?oWpBH>5CmaO0|#cn57_6A*`gN*c?wsJvR@S-3@aHFxtJ*G=!IshPILbFEj0#_V!KICX_ycY#~y-eE>3e>u=AkOZ_)- z9t@2Zv0*n!v!i17Z=&sM-1>=oW`Ju@CvK&j?5}aX$qwOFMX1YUj`hO#o*(gmSH-VlW1#@1rI)-_%KJoXE{~$fzR|y_P^msv} zuJCZY)P=uL!(zG^9dVHx1(xD$_KdeOQ&+fSgyNxb9}sGo=HnugPy2+UcHor%1ZC3* zzO_?;-U(WghY~Wjr*kr`xNrejve6)B0uSKYeK-Ltn}fg_uUCYed^ic?5aPh?3nc*Q z)^@lF&UM|W7Ym#4fZ-#c#DF}49A~VEv^^?$^il2vprxLlWc%4={X=LscMIr?7j*F> zt8ThR0bhsTHB=vh5(Ht5l@XfFcOG{|57AWvvOJs>?t-`IH?}6@aXnCWb46eZyxshW zl=FS*^#Kx&8PfRCX)@SzTqfwCNshP!7`eoN-}<08!Ku#~p9k29BBJrcW$5}Wge%6Y z8B9Qx6&cg3G16t(jt@{rC+EnRc!JY0@q#L;XE%c>y24y~9e=jDVSu!4r6PC_rxNXE zM28vCnH`A2Bw8v&FawdXp7oC)|MDVz!@ZoYgyJk)Ze{CHMw}f?({%V7AZ_#pbhw32 zP0JTC@k>C0!wk_tUGOvA%r=Q4*lT;4nlZ{UyOcEi{Be;uw{>^kv$b836O@t0`N zo5!cNXL-MDYJ0r~A57#gwY@$Gl08!nG zf~DVH|8qXt>v0g(d3(JGCGFa4IrZ|}>o?<=DSQT8q`iJ8dA8T3ok5Mbk zcl$#9o%wqpjvBXB0`({Pdl(2h^>+~pWESMRyd)!IL6_9gu4Q?Lc)zEjqyLwVN%8+y zX6g#BG`x=fe`KTh|Guv~`2RL7X+%k9{?7wT-~R{T+6{uJ&g1<`l(h5zSnB1+`yP@h ze3LItq5t=^!hCldu6E}C_YQ{tH;!)S{{ng}kG*{^mp(a+PIf&xI$rc}8$f}czX!&P zUg&LmaBbP6c!nb&lUkNE;c4INj{x1GT#$2=3*Fxux)z&v8Et#x4<^SabOCRUCHmTa zLfHEW#Gk7|;u?1`q=lBC7={(F{t7t0qGOa50@guPG8cTb$>@;gsfrxZ4xo#3v4ygf zPix@Z{QDd3qa#1ttJPt*8>Mbta}y_9&G z06fOVA0%Zw4PtRJo+2!ecsdtXzDW{Kbu4NhPaXQJ9p`k6pS?ty#m^9C>I&BzUdQ

V5k6 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

cS2@#ny8gwd801{y8G9$Bt6#44*ht9@Pc>V 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

6xgv|79ibN8zw@M_yCbd$-LM|a2xFODA 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%0Ae@niZ9yqj~PX%N332HWR33@CvoHeX4&95f9Zv zy(vBdEe#e45MEjCo+TiJ`UGkAV&c~!2;Nj8|GNnXnUr}z)FaCeF;zX)OEc{2J=Iwu zRlk_1%20Krn($PWIo+tXd#XP6&L5FhY9~+i7-0pMCRn3Rsf)zE9c&^p1GBx!vh^r~ z+4!8bm^ihk;E!f}^cZQt9B(4kVq)tIla(ZRn`ffTy~x05k)~bv-WOJX3VL**GIubJ zbd!U9P zBxEO$w(c-_+e1q4$P8%`U||4uG(hRl>w6W=f~ReAMYr_f{ua#J9zc&p_q>#52-Xbu^KCCV)*wW) zxxq}x?jH4cuP{wTH$T8ne1dj2Pc?947ptQuqUT8#>bJ7QSqHh z-&cXkn>|XcJH$KEJxc4uD#>YPmoSF>!-Q1C7++Qj}HTprr5ln7aLQIu#ZYvm~tAw**l^8mPE&cyG3}@K=wJ=Sa+YQm6K$No{OsLb>WoPtZ-Y zVEB>jw)6Yqci(j8&eyAgLyuyiC*AfzqU|hP6ZMqa&dL*YQ3-F~o`N1@AUYZLMb$RB zX%s;4S?N~nMNn7KhJg#!73jG}+MLP5tO5*1n2{kiT;Xe;*<{V{H&ui83yt&bfJjp; z9nE`@$zbFWS%tyL0>QiX#Atgv(RKp#^j~*vI{|w7ub4uhl>)g2dTyDmX9YhfQ@XVg z|LX8;;{TLoZOWEKTtVlFGr$;l7I3|Zr=q*Ik)VIU?usqwA`Pc_JBbG56(Lx(ERlq$ z!SBSc686V7v#P?c{sgzF%3Om>!}VYbx}`N2$|hw!#GdHI?jp>8ZIcSfF%oa=l|Q~2 z@N|I)YZQEqh{GuAkXG`x(4tB>x>_&s;k_iPQ_t#zse@-uIIusN?Ivkhg3=FATF$lt z28bo7%2+yp`lex?2MmZDpz0nqkBg=*UZ;%&hLPPPeCY~i8BfZI6y?Irc?eq(FLeLd zorAEBM&S&VsqwnU;OLvB^Y~wiMP6{DOVB1DhBjor2Gmb$jhCwv|xC7oFe1P zs+ABT*QF!`BNRkx$^2R|*XN=zc?9F}KGrzH;7a^R0Qe7P1Bdk7bv=smSTrtE1lvKp z4tG|MA~CB#QDXYiDZSp8k-h88-q5AabkTHAAzDNY3f&gOh78D3ctjV>hd^OSA{PA1 z6~&3<^@X$%AcASb=!B8+0(_|4P29~q@N=c!2(UyjN>Cl{R1a`9Qm8zlb@{XS25ov1 z5Rn|6DU*g;i63u7BZd0?PV0V;I_fB^$fI&5C z6SqoE_B-7ZB!}>-W2yTMbMyROc^_+tF~>_( z;rEs|^8S>64GePSQv7cR`H3ik0B@@;DxyPB{tn8aNWqfu>xnb@{$L69L4=^muqhV; z7{ajwN#;Lu2&|MWz5Xy7OVqJpju*>Z1xRsk#s*_vq)g_|5^(U(p#<)5yOSHzjos zl9%H<#O>K3+BHMD2yeo55sQ{b^PRr5q`NQjJ?{7Q@~o9q{-p+DV$^}lPn!{t`xmHAPc?*hwwj}Xi%t$X(~9O z5M6Jwbh<#WO4X8FzkpCjlv=%x>6hEpZWl=voKI*N2n0K0Ppxzj6|;9jSmr6??@T9y zd(R{Z3s7cH@lvUxjJ?fd(q{tnOsh`B&r4R>m**@qU|y zf!mM8^uJOpx6`wjnSy|@9Pl>xqzVbUbx%??p46K=8mWG&P8+ByL#M#~i7+rJlr3X9 z6e*xl?_+tGd03e=f!&ONo95}?-?O@l?U+VIq`PxH%yhv7Yt+US>9o4y-5sVnf3^1* zpFvybZ~-%^$Zb2&8zKMvN35eL7~=UXa$ghx&R@IidEb`b<3o&r8oHfCQ)$0x_5%WN{}Cq;3eAEoHbTDE74 z&?o|WzV2LNu+L2Qzj`0Kj6xywdc1^(;Ntv8JTzU{ecqxW~o-1C;Y7a9rrBjq2womYv9bJ^l%S_;YocoQpVXG z1W5($Y7eC&0K_mar1%*2d;Ug1%pi6O>~uTUTxv9akws&N42>f^jnP8W8j-Uhg!(X)bhjDud#B4mx9v{{b+|1A z9Ng@)Uu{R(IjkfjM~DsQVz4<}5PftoaTM+_A3H(&K?wvSo9ds4i$w)ItYr#dR=96a z7;b&~(dq-jK`n^Z;eLrsI4?p0j2{}_J)N%7q8Gpa!vej60hhViBE!|<^rdy(&u+WX z_md$Gda`u?h%izRRLL7q0cr&wu^r*L49_?2XJ+{VVS~~wDOua6 zi9X+GQ(-8k_$%B$!BWASjJ~Zta(i4sz`4jOw<=S!uxHJa64S4eWN*Z?0(LBU z7Ru_+QiMl;nMWt1ZUFu3CX@bi<*m!g@w*lpS;GDw*y6v_T|na`qvvKMS-qEOy*iq^Q62uO z1GTgjw#i_Axwm274a|dHjGgtI%-;oOcnE*}D=pX*4_yyvYCKCR4+^g;A{}&cw#soQ zqekaGNn1XG8a9yKDJX`g@hCnk!H0HmO7SMU(qQ+H7+;s|OCAT(6=3rf6-5tSZyl=p zV1Nk{OAGSxK3M-R-fxQ+foV*0}GAm#7l1i%pO zCxF~whcExU6--9VN> zc+Va!bsl*0FEQGlvs`8E0#V8J&7Zc+1QHi4!xqJ+PgGO#0XVu{v|xmpdoqYRTq{wK z&Q*#a2!1T*YlT+e#-cb3uL5b4=PpB;43j6r%%NaD!VyB0wP}%pc{Fx-f_*%r-8`e? z(v0@XFv@i~S&VW)w{P4;v6N4sQ~1Hirxpy|oe+OOGU(>F}aqYngFShkK7P_|=M8OI}*MNk%d%KCbK zEDgm=W)^%bH)XR&lzq`Nb@uYJTzV7EnABnqQwthiS~e%17kogh0=5 zn^L|9DWcU|r9;Dep>7)_VGT3DhlgR6i<45MRqv^xucH={FIV0n7 zrvJz;pu124A~Ts4FHFFz-1!skEfHtAc=u4ITRz) zsf1mCFwoq00EMtj>`=BD%DNY0e8ukrL5hVSj+amuAOS%pTIdX07Hc_K*72VPj`TIR zrMy6mpeViXO%|15P zbBEZd2YVaU!$egd(C8plOqe`LoVmKMHiS(JL@vRxJ2Hi9raG;D78_cvN5ia% zVSPU_=W|00f73Wys7(y(h_!qqF+(S8AXT+uCwlMu)K$AWUaG3JR8?*?X{YUz)@Y=O zI7Yabw3u9FX~Z(OUs|0KgB?a#s8da5B~(W{KbY+l^N5Xm82%fhde9Fz8B=loE}q%usaMDH|n@k3$UG{MynVPbmHBr=L&nN!V@8P|^ zzMtk3g={`$48LM-X_P^B2*fS1WaNzD6iz#m!S8m$R`)qV(v?vhnrX8dsbThpOlhs*Jza7Qh%)!j}1?$;w;>ew07Qr@heQnp=D?1u7O-sHt+i?{&Vn)JXdA^)ZPi6u70 zpcf8I+$SJUEef?>v`!z{DjowR&_G{di%jM(>FRH*;&M)Yv8`Cywmhv@p4aPo&;qL? z=>Yx8I3gXxrnw;6Lq$9S9Qev94hiQWNa< z1qb+kWC6&9JKd;(aN2%D4B=A8R_>pu#^sT%!aX>~!++xUBycoO=*9B!ffmNce?QCX zd$HtkQV)Iq!}+0ktprpODGqN?sYI@Y=CHJ8vOBRB8{%cGh_!r>BdK}ZG4oqsp*_uKnhgGF?T`&A&o!t{#|YTTbk_+)+2}CcI|~*IT&wO}Hv;vz z!LtwO@L&&%?v^|Xk&5j9Zw{S(DvX@O%UH?arR^=`&-@y6VfpKo+62+lgYW!~ zC-{;?A{G9$$FpuC;PIo#_MNHQ6Dw?quD^bFryXAGmB;e0@Y;bSDk zc}o`__!n#01^;qSS<4_i<8dw$_E6nR{08Yd!X%@G8jjdBf_%^CI?v}wrn$3FhTdfwFGB52*FrDPYhEe!A+I#iD$#3IAG_fV8}Mgw@1ahEtF93n%i)r>Fyx%ChT+H<~>PtiDZ!H zQEMd$_RGW{UzC;Vxb3ZUm8FLd#2Y_&z3y8im^)I=%H*BCRop3O zr+?uZt+IqJ#6|OBxiXxa&hsxK2UqCAQR(4Ps-=aN?pf4TVzjJHw4E2PuEal8Zr?BI zK-`y9${pkm_Q9AQ07{D)jlGzbV63j>jbaYO=!MJNCtn!q4n)O#ayAu5EHHK5tORTs ziNA(ScOM9vZ3RtFVFk^bQ$Z~c{8Od3e$yvxoitJ`7+N)QcA#elJqEBrQNr`v^i zzLyoyR#`w@z~l(`)n~L*`a`{LXXT^um$>58i$gXTVQLm@*_uc&DlS+p<>+viKh=0XhKN-!8W|hGG44BeGZ|$gIlZ{bepjh zR@hHzI97$HM!`cK?A1>VY;zF_?o=^`XH7)v+yY62JHl`UFR^m;K4Z_rYmLaAQJqYR)ALN;|8350T3T)45vS} z6us%6Cb|Y&U=|^WmobhOidUEhSNkBoo$$b0B)njpibD$)x@&y(FH{}IcyM38w8jPQ zOx0ngk4g1FSF4;>6rJvLWH1H}%2k z$)IXWg@`L*vD!nd`F%EpFV*7O(BSkNPS}^F=g}FFF})ZUGk%B@u33q~tfqEDBprCw z?)6VX(ll#TteGaZrbg_ro#_&@8d;UC^U=u4d^l(&s+EiuL|PrFktKX1DsUg~hIQVR5T<9)sx3kBv${PwfNdAyh6&zk*D0SZ>F@{`<;kcV(`z0 z>*s68z1h!PqPyenD;$aOKG?y!b9X%uTNFk4%~ZNoBJRPXenf z^qbv7dmY6@aw7eo@5W- z%%-SliWr=2bX~22a2gcssV0o~*$5B3(ZXvFL+GL$suYg0#cq35>j;B8Q$yU&D8RTm zgfVk4%#n$Q@P1Cv750S7-QT;7%fBt9^o4FUGtjUw?0ipyh_IBdwWy6?`mSj`=If%R z?nduw6lD4w-Xgscq!2MfAPA?T?MV38%_wGv$CQ7umVNMVwyZ`!I5H#azM$2;$Hu`1 zWxzI*^y$_)eQ?-1)6LMW$K_v+JkZ}^H`-j)qLjQ#Qt(<^% zw;Ax!-yXfZf6h(q@@DvHbNH`yWV~Ojg%{xwcm22{+O(8??Gkqw&@%V!amPOL-Wn)~ z7L>;@L66DtDVcxC=JZi%?Z4@lBXLHBrQc8s6oPL=wX#4%Ctfq};4bCZLsMOrRBTi+u9?*rCAdg>)%MMQe1IDOjm)NiUgV zo(mXonF=lhE5h*Yjz$^VFV5b%8;W-!xqnHg;Pu0!xpB*8(^?td$JGH8h5N*wS_Bi+ z;bnkkRIzcbsRK|V)vUQ*CDJP9G0N2{ooC-kgVR~gKfJXeD}>#x9hJK+B%tjWay5`3 zI-*l#u*4NvbO=^n`X?!e@AH5nx@85|8Y^g3UuehKZYzNVL&+X?#Hh5`ef6$(h>nxQA$IgF z-DnF=@YwYnSpEV?Q2df*z((0(_qbsn3+#&6Q|)n*DR24)@}Rrgj{o9P5NrJuwH_lh zLL@TwMc(Pc^`JThOr5g|+;=JlFluJlju7;r%>WeE;KCI>>lVS}fU`bK2t^?vyI)lm z-~nxB7bz2Yoj1d9uTni5mLD8BzJ5nK9qe^N*<$w|%TO1kzN!4%@VR@u#4~{jT$=}) zv8QH8Q`^l=#73Z9ta8r-kGj400?q_e`F9)MWRI6?(#_DsiPy#OiB+MslU*wRW)H`{ zpM5;}K-xKbP-yFx85CAsdiA&L2DGl#77)f=G)KIOQRIcMVv6^N)yZl|M)TDxV+q&S z!yKSA++op1SchBxHW4Fh#WxuBjfMgDf=X>04`jEs(ZM~zVi;vDJPo8JhV-xR4CzkQ z;`>)f(ZBQOfB>sG4m2^G^c~PnL*j-I1K-sEiPpS%B~QVlxl7IbUE+k9Rk+kHN6!*& zJ(Qz!2{$v!(ZAS)0il5ThT^QuRbvQagI@?bijleY5dKtS_FVh$9IyvVnml+{`;_$6>*@x1T`s;*gL4${q5LB*a0utY1?u!JH^`0>S% z=##3*%P;Lots3_sFTh7-^L{B&!Vh=j!?O6s6*Mf06)paZy?5O01IL0A9`PNOMYvD7 zOw^0qmJF(F?Pp6Ew6-~TptdaFe657vsz6@lZ6~1TwwB1_jxNE#?i=sf%V2q2!Ek#) zitu>QyB)3S)voMP1p!K*=~23l3{d(=k5Yv`N^kE`%63KA={-u-dQf^9N)svT);Kn} z^H|Wdv<_JKI4{hG8;G!3mkh+`iug)BqXf^ZIn1r(u)3PV)jDd%n~U}@3bM!3{}Xzd z*TcELVCE0EVeO=er;>HB5ESDVATUbTqlB}v(~wRrR!!-8CK$;YEz53|*;ZyTps|hd z58dOHi`cXc`6r(z8?Mb8*`V6T|;^{)%0u;O96_wo>r7-OV6j=O{Bqj682xK zo-$n{zK&=F$J z1q)21?4}s6tbkL`^JLyvctT+aWavx#f}WH{c3mP;C_zs~MgfMoA!7`?b;IFHLxmc7 zJ%0N43P|4J_Mo$;Z}|JX<`I!IyFoAHKos9&hNY|?M4{f4BKH=JXW?4Lcq~ZEn~8To zQo5!NllH1Y_p1=Ar@mF5c{<(;T@xUC$NOHmhqKXm-~KC(`~P*kkA4}lXUF@U9OF|# z3yg|*e`A5-{pm0NkK+9(tRy!P?{~Z+D{d;@d&ir)tLR_|=A%k}hrw642dERm3Ndm8 z0`e-@{wiz=uC?_flv{PNZo^@lKyQrV>$t>VduG6+og|79$>WhZ9wc}~4zAI9fM;Pi^mawEg;^nVbakr3-Y#^+nB8K2?$xoOR^ ze&{(;*hy!K;clT)e65WshCP<^56y|EVZWp92yzBZ3ipHo<>|YOGB8l>r@Zs%}+lbNn9G-hN?k zrNxLg^RiPi_{*mh1Jibl*2FxCY?HyWlnyg9mZ^HNI|Mb|t4Jgjx&L)GqUb^<_@0MU zfv(Hl)Qv}@}uP5~H zylH;_cVqH`urd1}5T=X*1~md}Ypyw7hes?}CJ+PaFw3!LnlP~-_W23Qhc1fNn;gIU zXWBNk0CWd={)c$}rz+2r@0%$xbR`(fKx<-Nz(L>biCvcvky7r_tL}`d*w!#tN#xmTj-^8Uy+v@ zm?VQUq>a3^*emd%(rhmkh!NJ*TToJ*Wg~UB5-ih}=JAdX&b2>D%j5*z9`7Rb7*G6? z7tKm7!p7?*1cH|Y3~B`SURsSucxg{!z$?tsONR(^h8L#O?Wug)OG8bLF&Q~l0@1za z`F`+%@sCIzdTBV7gO>>Ay|j!NzXwK^msnR|0}Q425ec~f3`kk^%x!K)vqEi#{& z=SrX8Zxj$}u?%$SrE=7SUi!mod1(a`d|y}E$Vxcn$n5CCe!o

w?pnU|)qwjXNY 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
@S>7)O;n4I(z^*|v-bA~SeK#x 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

r4RAsj`;+rmEtD{_A{;+Ghz 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 z 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


)E3EMr)C0cY3 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 z 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
>BmK{D>@# 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 v!8` + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Executes an AppleScript. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + AppleScript + + inputAttributes + + inputScript + + description + + name + Location + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputResult + + description + + name + Result + + + + diff --git a/Origami.plugin/Contents/Resources/DHImageAtURLPatch.xml b/Origami.plugin/Contents/Resources/DHImageAtURLPatch.xml new file mode 100644 index 0000000..664a30c --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHImageAtURLPatch.xml @@ -0,0 +1,65 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Asynchronously downloads and caches requested images. + +If you specify a single URL (a string), the image at that URL will be returned. If you specify multiple URLs (a structure of strings), a structure of images will be returned. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Image at URL + + inputAttributes + + inputURLOrURLs + + description + + name + URL(s) + + inputUseCache + + description + + name + Use Cache + + + outputAttributes + + outputImageOrStructure + + description + + name + Image(s) + + outputDone + + description + + name + Done + + + + diff --git a/Origami.plugin/Contents/Resources/DHImageWithFormattedStrings.xml b/Origami.plugin/Contents/Resources/DHImageWithFormattedStrings.xml new file mode 100644 index 0000000..16beb29 --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHImageWithFormattedStrings.xml @@ -0,0 +1,56 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Creates an image of a string generated by the String Formatter patch. This lets you put together runs of styled text. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Image With Formatted String + + inputAttributes + + inputString + + description + + name + String + + + outputAttributes + + outputImage + + description + + name + Image + + outputUnformattedString + + description + + name + Unformatted String + + + + diff --git a/Origami.plugin/Contents/Resources/DHJSONImporterPatch.xml b/Origami.plugin/Contents/Resources/DHJSONImporterPatch.xml new file mode 100644 index 0000000..654eb14 --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHJSONImporterPatch.xml @@ -0,0 +1,63 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Downloads and parses JSON from a specified URL or file path. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + JSON Importer + + inputAttributes + + inputJSONLocation + + description + + name + Location + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputParsedJSON + + description + + name + Structure + + outputDoneSignal + + description + + name + Done Signal + + + + diff --git a/Origami.plugin/Contents/Resources/DHRESTRequestPatch.xml b/Origami.plugin/Contents/Resources/DHRESTRequestPatch.xml new file mode 100644 index 0000000..d023eb5 --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHRESTRequestPatch.xml @@ -0,0 +1,105 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Performs a REST request and returns the result. Supports "Create" (POST), "Read" (GET), "Update" (PUT) and "Destroy" (DELETE) request types. Allows attaching an object to a "Create" or "Update" request and specification of additional headers for any request. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + REST Request + + inputAttributes + + inputEnable + + description + + name + Enable + + inputRequestType + + description + + name + Type + menu + + Create (POST) + Read (GET) + Update (PUT) + Destroy (DELETE) + + + inputURL + + description + + name + URL + + inputParameters + + description + + name + Parameters + + inputHeaders + + description + + name + Headers + + inputObject + + description + + name + Object + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputResult + + description + + name + Result + + outputDoneSignal + + description + + name + Done Signal + + + + diff --git a/Origami.plugin/Contents/Resources/DHSoundPlayerProPatch.xml b/Origami.plugin/Contents/Resources/DHSoundPlayerProPatch.xml new file mode 100644 index 0000000..cf09a53 --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHSoundPlayerProPatch.xml @@ -0,0 +1,67 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Plays any QuickTime file as a sound. Supports pausing, reseting, looping, and adjusting the volume. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Sound Player Pro + + inputAttributes + + inputSoundLocation + + description + + name + Sound Location + + inputPlaySound + + description + + name + Play Sound + + inputResetSignal + + description + + name + Reset Signal + + inputLooping + + description + + name + Looping + + inputVolume + + description + + name + Volume + + + + diff --git a/Origami.plugin/Contents/Resources/DHStringAtURLPatch.xml b/Origami.plugin/Contents/Resources/DHStringAtURLPatch.xml new file mode 100644 index 0000000..325a0bd --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHStringAtURLPatch.xml @@ -0,0 +1,70 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Asynchronously downloads the contents of a URL. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + String at URL + + inputAttributes + + inputEnable + + description + + name + Enable + + inputURL + + description + + name + URL + + inputUpdateSignal + + description + + name + Update Signal + + + outputAttributes + + outputString + + description + + name + String + + outputDoneSignal + + description + + name + Done Signal + + + + diff --git a/Origami.plugin/Contents/Resources/DHStringFormatterPatch.xml b/Origami.plugin/Contents/Resources/DHStringFormatterPatch.xml new file mode 100644 index 0000000..5ce55e4 --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHStringFormatterPatch.xml @@ -0,0 +1,105 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Creates a formatted string for use by the Image With Formatted String patch. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + String Formatter + + inputAttributes + + inputString + + description + + name + String + + inputColor + + description + + name + Color + + inputFontName + + description + + name + Font Name + + inputFontSize + + description + + name + Font Size + + inputBold + + description + + name + Bold + + inputUnderline + + description + + name + Underline + + inputStrikethrough + + description + + name + Strikethrough + + inputMaxWidth + + description + + name + Width + + inputMaxHeight + + description + + name + Max Height + + + outputAttributes + + outputFormattedString + + description + + name + Formatted String + + + + diff --git a/Origami.plugin/Contents/Resources/DHStructureAllKeysPatch.xml b/Origami.plugin/Contents/Resources/DHStructureAllKeysPatch.xml new file mode 100644 index 0000000..3767318 --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHStructureAllKeysPatch.xml @@ -0,0 +1,56 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Returns the keys from a named structure. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure All Keys + + inputAttributes + + inputStructure + + description + + name + Structure + + inputSort + + description + + name + Sort + + + outputAttributes + + outputStructure + + description + + name + Keys + + + + diff --git a/Origami.plugin/Contents/Resources/DHStructureAllValuesPatch.xml b/Origami.plugin/Contents/Resources/DHStructureAllValuesPatch.xml new file mode 100644 index 0000000..d52798c --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHStructureAllValuesPatch.xml @@ -0,0 +1,62 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Returns the values from a structure. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure All Values + + inputAttributes + + inputStructure + + description + + name + Structure + + inputSort + + description + + name + Sort + menu + + None + Using Keys + Using Values + + + + outputAttributes + + outputStructure + + description + + name + Values + + + + diff --git a/Origami.plugin/Contents/Resources/DHStructureMultiplePathMembersPatch.xml b/Origami.plugin/Contents/Resources/DHStructureMultiplePathMembersPatch.xml new file mode 100644 index 0000000..567dab1 --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHStructureMultiplePathMembersPatch.xml @@ -0,0 +1,58 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + Returns a structure containing the results from multiple search paths, separated by commas. Optionally specify labels for the new structure with equal signs and optionally cluster label sub-groups with a forward slash. + +For example, the path "id = story_id, user/name = actors.0.name.text, user/age = actors.0.age" would yield a structure with two top-level keys ("id" and "user") and two sub-level keys ("name" and "age" within "user"). All of the leaf-node children (in this example, "id", "name" and "age") will contain the values of their respective search path values. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure Multiple Path Members + + inputAttributes + + inputStructure + + description + + name + Structure + + inputPaths + + description + + name + Paths + + + outputAttributes + + outputStructure + + description + + name + Structure + + + + diff --git a/Origami.plugin/Contents/Resources/DHStructurePathMemberPatch.xml b/Origami.plugin/Contents/Resources/DHStructurePathMemberPatch.xml new file mode 100755 index 0000000..5a99e6f --- /dev/null +++ b/Origami.plugin/Contents/Resources/DHStructurePathMemberPatch.xml @@ -0,0 +1,65 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch returns a member or members in a structure resulting from a path search. + +For example, if you had an indexed structure with two members, a structure with key "name", value "Cat", and a structure with key "name", value "Dog", you could use a path of "0.name" to get the value "Cat". If you used a key of "*.name", you'd get a structure with "Cat" and "Dog". + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Drew Hamlin + name + Structure Path Member + + inputAttributes + + inputStructure + + description + + name + Structure + + inputPath + + description + + name + Path + + + outputAttributes + + outputMember + + description + + name + Member + + outputUntraversedPaths + + description + + name + Untraversed Paths + + + + diff --git a/Origami.plugin/Contents/Resources/Export for Origami.sketchplugin b/Origami.plugin/Contents/Resources/Export for Origami.sketchplugin index b855338..195c841 100644 --- a/Origami.plugin/Contents/Resources/Export for Origami.sketchplugin +++ b/Origami.plugin/Contents/Resources/Export for Origami.sketchplugin @@ -53,8 +53,6 @@ function main() { var group_name = ""; if (is_group(layer)) { group_name = [layer name]; - } - if (![layer isMemberOfClass:[MSArtboardGroup class]]) { inside_top_level_group = true; top_level_group_pos = calculate_real_position_for(layer); } @@ -211,27 +209,23 @@ function export_layer(layer, depth, artboard_name) { function metadata_for(layer, layer_copy) { loggle("Getting metadata for " + [layer name]); - var gkrect = [GKRect rectWithRect:[MSSliceTrimming trimmedRectForSlice:layer_copy]], + var cgrect = [MSSliceTrimming trimmedRectForSlice:layer_copy], position = calculate_real_position_for(layer), x,y,w,h, layer_hidden = [layer name].indexOf("@@hidden") > -1; x = position.x; y = position.y; - w = [gkrect width]; - h = [gkrect height]; + w = cgrect.size.width; + h = cgrect.size.height; - if ([layer isMemberOfClass:[MSArtboardGroup class]]) { + // If this is an artboard we should ignore its position (at least for now) + if (is_artboard(layer)) { loggle("Resetting x and y to 0 because artboard"); x = 0; y = 0; } - if (inside_top_level_group) { - x-= top_level_group_pos.x; - y-= top_level_group_pos.y; - loggle("Shifting x by: " + top_level_group_pos.x); - loggle("Shifting y by: " + top_level_group_pos.y); - } + loggle("Metadata for <" + [layer name] + ">: { x:"+x+", y:"+y+", width:"+w+", height:"+h+"}"); return { x: x, @@ -244,15 +238,15 @@ function metadata_for(layer, layer_copy) { } function calculate_real_position_for(layer) { - var gkrect = [GKRect rectWithRect:[MSSliceTrimming trimmedRectForSlice:layer]], + var cgrect = [MSSliceTrimming trimmedRectForSlice:layer], absrect = [layer absoluteRect]; var rulerDeltaX = [absrect rulerX] - [absrect x], rulerDeltaY = [absrect rulerY] - [absrect y], - GKRectRulerX = [gkrect x] + rulerDeltaX, - GKRectRulerY = [gkrect y] + rulerDeltaY; + CGRectRulerX = cgrect.origin.x + rulerDeltaX, + CGRectRulerY = cgrect.origin.y + rulerDeltaY; return { - x: Math.round(GKRectRulerX), - y: Math.round(GKRectRulerY) + x: Math.round(CGRectRulerX), + y: Math.round(CGRectRulerY) } } @@ -311,6 +305,10 @@ function is_group(layer) { return [layer isMemberOfClass:[MSLayerGroup class]] || [layer isMemberOfClass:[MSArtboardGroup class]] } +function is_artboard(layer) { + return [layer isMemberOfClass:[MSArtboardGroup class]]; +} + function is_symbol(layer) { return [layer parentOrSelfIsSymbol]; } diff --git a/Origami.plugin/Contents/Resources/FBCursorPatch.xml b/Origami.plugin/Contents/Resources/FBCursorPatch.xml index 1cdc6ce..5ae102c 100755 --- a/Origami.plugin/Contents/Resources/FBCursorPatch.xml +++ b/Origami.plugin/Contents/Resources/FBCursorPatch.xml @@ -40,6 +40,7 @@ Created by: Brandon Walkin Open Hand Closed Hand I Beam + Pointing Hand inputHide diff --git a/Origami.plugin/Contents/Resources/FBDescriptionPatch.xml b/Origami.plugin/Contents/Resources/FBDescriptionPatch.xml new file mode 100755 index 0000000..42e552b --- /dev/null +++ b/Origami.plugin/Contents/Resources/FBDescriptionPatch.xml @@ -0,0 +1,49 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch outputs a string description of an object. It should be similar to what you see in the tooltip when hovered over a port. It's helpful for inspecting complex structures. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + Description + + inputAttributes + + inputObject + + description + Object + name + Object + + + outputAttributes + + outputDescription + + description + Description + name + Description + + + + \ No newline at end of file diff --git a/Origami.plugin/Contents/Resources/FBFPS.xml b/Origami.plugin/Contents/Resources/FBFPS.xml new file mode 100755 index 0000000..d542b3e --- /dev/null +++ b/Origami.plugin/Contents/Resources/FBFPS.xml @@ -0,0 +1,38 @@ + + + + + nodeAttributes + + category + FPS + categories + + Environment + + copyright + Brandon Walkin + description + This patch outputs the frames per second of the composition. + name + FPS + + outputAttributes + + outputFPS + + description + Frames per second + name + FPS + + outputFPSString + + description + Frames per second string + name + FPS String + + + + \ No newline at end of file diff --git a/Origami.plugin/Contents/Resources/FBFileUpdated.xml b/Origami.plugin/Contents/Resources/FBFileUpdated.xml new file mode 100755 index 0000000..cef59fd --- /dev/null +++ b/Origami.plugin/Contents/Resources/FBFileUpdated.xml @@ -0,0 +1,49 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch outputs a pulse when the file at the specified path is modified. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + File Updated + + inputAttributes + + inputPath + + description + Path + name + Path + + + outputAttributes + + outputUpdated + + description + A pulse when the file is updated + name + Updated + + + + \ No newline at end of file diff --git a/Origami.plugin/Contents/Resources/FBLogToConsole.xml b/Origami.plugin/Contents/Resources/FBLogToConsole.xml new file mode 100755 index 0000000..c1d456e --- /dev/null +++ b/Origami.plugin/Contents/Resources/FBLogToConsole.xml @@ -0,0 +1,39 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch logs the input string to the console when it's enabled. It logs during each frame the viewer is rendering. Open Console.app to view the messages. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + Log to Console + + inputAttributes + + inputMessage + + description + The string you want to log. + name + Message + + + + \ No newline at end of file diff --git a/Origami.plugin/Contents/Resources/FBStructureShuffle.xml b/Origami.plugin/Contents/Resources/FBStructureShuffle.xml new file mode 100755 index 0000000..d85b47a --- /dev/null +++ b/Origami.plugin/Contents/Resources/FBStructureShuffle.xml @@ -0,0 +1,56 @@ + + + + + nodeAttributes + + category + Origami + categories + + Origami + + description + This patch takes an indexed structure and outputs a structure with each member in a random position. + + +Origami +http://origami.facebook.com/ + +Use of this patch is subject to the license found at http://origami.facebook.com/license/ + +Copyright: (c) 2016, Facebook, Inc. All rights reserved. + +Created by: Brandon Walkin + name + Structure Shuffle + + inputAttributes + + inputStructure + + description + Structure to be shuffled + name + Structure + + inputShuffleSignal + + description + Shuffles on the leading edge of the signal + name + Shuffle Signal + + + outputAttributes + + outputStructure + + description + Shuffled structure + name + Structure + + + + \ No newline at end of file