rest_kat 0.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,212 @@
1
+ //
2
+ // NSApiBase.m
3
+ // MySugr
4
+ //
5
+ // Created by brad phelan on 10/4/11.
6
+ // Copyright (c) 2011 __MyCompanyName__. All rights reserved.
7
+ //
8
+
9
+ #import "MSRestSerializable.h"
10
+ #import <RestKit/RestKit.h>
11
+ #import <objc/runtime.h>
12
+
13
+ @implementation MSRestSerializable
14
+
15
+
16
+ - (RKObjectMapping *) _mapper
17
+ {
18
+ RKObjectMappingProvider * provider = [RKObjectManager sharedManager].mappingProvider;
19
+ RKObjectMapping * mapping = [provider objectMappingForClass:[self class]];
20
+ return mapping;
21
+
22
+
23
+ }
24
+
25
+ - (RKObjectMapping *) _serializer
26
+ {
27
+ RKObjectMappingProvider * provider = [RKObjectManager sharedManager].mappingProvider;
28
+ RKObjectMapping * mapping = [provider serializationMappingForClass:[self class]];
29
+ return mapping;
30
+ }
31
+
32
+
33
+
34
+ - (BOOL)isNew
35
+ {
36
+ BOOL hasId = class_getProperty([self class], [@"id" UTF8String]) != NULL;
37
+ return ([self valueForKey:@"id"] == NULL || !hasId);
38
+ }
39
+
40
+
41
+ - (NSDictionary *)convertToDictionary
42
+ {
43
+ NSError * error;
44
+ // First convert the query object into a dictionary
45
+ RKObjectSerializer * querySerializer = [RKObjectSerializer serializerWithObject:self mapping:[self _serializer]];
46
+ return [querySerializer serializedObject:&error];
47
+ }
48
+
49
+
50
+ - (NSString*)convertToJSON
51
+ {
52
+ RKObjectSerializer * serializer = [RKObjectSerializer serializerWithObject:self mapping:[self _serializer]];
53
+ NSError * error;
54
+ NSString * text = (NSString *)[serializer serializedObjectForMIMEType:RKMIMETypeJSON error:&error];
55
+ return text;
56
+ }
57
+
58
+ - (NSString *)convertToFormURLEncoded
59
+ {
60
+ RKObjectSerializer * serializer = [RKObjectSerializer serializerWithObject:self mapping:[self _serializer]];
61
+
62
+ NSError * error;
63
+ NSString * text = (NSString *)[serializer serializedObjectForMIMEType:RKMIMETypeFormURLEncoded error: &error];
64
+ return text;
65
+ }
66
+
67
+ - (NSString*)description
68
+ {
69
+
70
+
71
+ RKObjectSerializer * serializer = [RKObjectSerializer serializerWithObject:self mapping:[self _serializer]];
72
+
73
+ NSError * error;
74
+ NSString * description = (NSString *)[serializer serializedObjectForMIMEType:RKMIMETypeJSON error: &error];
75
+ return [description stringByReplacingOccurrencesOfString:@"\"" withString:@"'"];
76
+ }
77
+
78
+ - (id)copyWithZone:(NSZone *)zone
79
+ {
80
+ return [[MSRestSerializable allocWithZone:zone] init];
81
+ }
82
+
83
+ @end
84
+
85
+ @implementation MSRestSerializableResource
86
+
87
+ + (RKObjectRouter *) router
88
+ {
89
+ return [RKObjectManager sharedManager].router;
90
+ }
91
+
92
+ + (Class) classForResource
93
+ {
94
+ NSAssert(NO, @"Stub implementation. Must be implemented in subclass");
95
+ return NULL;
96
+ }
97
+
98
+
99
+ + (void) initializeRouting
100
+ {
101
+ RKObjectRouter * router = [self router];
102
+
103
+ NSString * collectionResource = [self resourcePath];
104
+ NSString * objectResource = [NSString stringWithFormat:@"%@/(id)", collectionResource];
105
+
106
+ if([self isSingleton])
107
+ {
108
+ objectResource = collectionResource;
109
+ }
110
+
111
+ if ([self canCreate]){
112
+ [router routeClass:self toResourcePath:collectionResource forMethod:RKRequestMethodPOST];
113
+ }
114
+
115
+ if ([self canRead]){
116
+ [router routeClass:self toResourcePath:objectResource forMethod:RKRequestMethodGET];
117
+ }
118
+
119
+ if ([self canUpdate])
120
+ {
121
+ [router routeClass:self toResourcePath:objectResource forMethod:RKRequestMethodPUT];
122
+ }
123
+
124
+ if ([self canDelete])
125
+ {
126
+ [router routeClass:self toResourcePath:objectResource forMethod:RKRequestMethodDELETE];
127
+ }
128
+
129
+ }
130
+
131
+
132
+ + (NSString *) resourcePath{
133
+ NSAssert(NO, @"Not implemented");
134
+ return NULL;
135
+ }
136
+
137
+ + (bool) isSingleton{
138
+ return true;
139
+ }
140
+ + (bool) canCreate{
141
+ return true;
142
+ }
143
+ + (bool) canRead{
144
+ return true;
145
+ }
146
+ + (bool) canUpdate{
147
+ return true;
148
+ }
149
+ + (bool) canDelete{
150
+ return true;
151
+ }
152
+
153
+
154
+ - (void) saveWithDelegate:(id<RKObjectLoaderDelegate>)delegate
155
+ {
156
+ if ([self isNew])
157
+ {
158
+ NSLog(@"Creating new object\n%@", self);
159
+ // Save a new object
160
+ [[RKObjectManager sharedManager] postObject:self mapResponseWith:[self _mapper] delegate:delegate];
161
+ }else{
162
+ NSLog(@"Updating object\n%@", self);
163
+ // Update the object as it allready has an id
164
+ [[RKObjectManager sharedManager] putObject:self mapResponseWith:[self _mapper] delegate:delegate];
165
+ }
166
+
167
+ }
168
+
169
+ // Find an instance by id
170
+ + (void) find:(NSNumber *)id withDelegate:(id<RKObjectLoaderDelegate>)delegate
171
+ {
172
+ MSRestSerializable * instance = [[self alloc] init];
173
+ [instance setValue:id forKey:@"id"];
174
+ [[RKObjectManager sharedManager] getObject:instance
175
+ mapResponseWith:[instance _mapper]
176
+ delegate:delegate];
177
+ }
178
+
179
+ // Load collection
180
+ + (void) loadCollectionWithDelegate:(id<RKObjectLoaderDelegate>)delegate
181
+ {
182
+ RKObjectManager * objectManager = [RKObjectManager sharedManager];
183
+ RKObjectMapping * mapping = [objectManager.mappingProvider
184
+ objectMappingForClass:self ];
185
+
186
+ [objectManager loadObjectsAtResourcePath:[self resourcePath]
187
+ objectMapping:mapping
188
+ delegate:delegate];
189
+ }
190
+
191
+
192
+ // Load collection with query
193
+ + (void) loadCollectionThroughQuery:(MSRestSerializable *)mappableQueryObject
194
+ withDelegate:(id<RKObjectLoaderDelegate>)delegate
195
+ {
196
+
197
+ RKObjectManager * objectManager = [RKObjectManager sharedManager];
198
+ RKObjectMapping * mapping = [objectManager.mappingProvider
199
+ objectMappingForClass:self ];
200
+
201
+
202
+ // Append the dictionary to the resource as query parameters
203
+ NSString * resourcePath = RKPathAppendQueryParams([self resourcePath], [mappableQueryObject convertToDictionary]);
204
+
205
+ // Load the objects at the query
206
+ [objectManager loadObjectsAtResourcePath:resourcePath
207
+ objectMapping:mapping
208
+ delegate:delegate];
209
+ }
210
+
211
+
212
+ @end
metadata ADDED
@@ -0,0 +1,131 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rest_kat
3
+ version: !ruby/object:Gem::Version
4
+ prerelease:
5
+ version: 0.0.4
6
+ platform: ruby
7
+ authors:
8
+ - Brad Phelan
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2011-11-18 00:00:00 Z
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: kwalify
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: *id001
26
+ - !ruby/object:Gem::Dependency
27
+ name: rspec
28
+ requirement: &id002 !ruby/object:Gem::Requirement
29
+ none: false
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 2.3.0
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: *id002
37
+ - !ruby/object:Gem::Dependency
38
+ name: bundler
39
+ requirement: &id003 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ version: 1.0.0
45
+ type: :development
46
+ prerelease: false
47
+ version_requirements: *id003
48
+ - !ruby/object:Gem::Dependency
49
+ name: jeweler
50
+ requirement: &id004 !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ~>
54
+ - !ruby/object:Gem::Version
55
+ version: 1.6.4
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: *id004
59
+ - !ruby/object:Gem::Dependency
60
+ name: rcov
61
+ requirement: &id005 !ruby/object:Gem::Requirement
62
+ none: false
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: "0"
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: *id005
70
+ description: The generated source code is a layer on top of the iOS REST framework http://restkit.org/
71
+ email: brad.phelan@mysugr.com
72
+ executables: []
73
+
74
+ extensions: []
75
+
76
+ extra_rdoc_files:
77
+ - LICENSE.txt
78
+ - README.md
79
+ - README.rdoc
80
+ files:
81
+ - .document
82
+ - .rspec
83
+ - .rvmrc
84
+ - Gemfile
85
+ - LICENSE.txt
86
+ - README.md
87
+ - README.rdoc
88
+ - Rakefile
89
+ - VERSION
90
+ - lib/model.h.erb
91
+ - lib/model.m.erb
92
+ - lib/rest_kat.rb
93
+ - lib/tasks/iphone.rake
94
+ - lib/validator.rb
95
+ - rest_kat.gemspec
96
+ - spec/rest_kat_spec.rb
97
+ - spec/spec_helper.rb
98
+ - src/MSRestSerializable.h
99
+ - src/MSRestSerializable.m
100
+ homepage: http://github.com/mysugr/rest_kat
101
+ licenses:
102
+ - MIT
103
+ post_install_message:
104
+ rdoc_options: []
105
+
106
+ require_paths:
107
+ - lib
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ none: false
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ hash: 2884833936484461467
114
+ segments:
115
+ - 0
116
+ version: "0"
117
+ required_rubygems_version: !ruby/object:Gem::Requirement
118
+ none: false
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: "0"
123
+ requirements: []
124
+
125
+ rubyforge_project:
126
+ rubygems_version: 1.8.8
127
+ signing_key:
128
+ specification_version: 3
129
+ summary: Generate objective C RestKit boilerplate code from a yaml schema
130
+ test_files: []
131
+