1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- // Post.m
- //
- // Copyright (c) 2012 Mattt Thompson (http://mattt.me/)
- //
- // Permission is hereby granted, free of charge, to any person obtaining a copy
- // of this software and associated documentation files (the "Software"), to deal
- // in the Software without restriction, including without limitation the rights
- // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- // copies of the Software, and to permit persons to whom the Software is
- // furnished to do so, subject to the following conditions:
- //
- // The above copyright notice and this permission notice shall be included in
- // all copies or substantial portions of the Software.
- //
- // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- // THE SOFTWARE.
- #import "Post.h"
- #import "User.h"
- #import "AFAppDotNetAPIClient.h"
- @implementation Post
- - (instancetype)initWithAttributes:(NSDictionary *)attributes {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- self.postID = (NSUInteger)[[attributes valueForKeyPath:@"id"] integerValue];
- self.text = [attributes valueForKeyPath:@"text"];
-
- self.user = [[User alloc] initWithAttributes:[attributes valueForKeyPath:@"user"]];
-
- return self;
- }
- #pragma mark -
- + (NSURLSessionDataTask *)globalTimelinePostsWithBlock:(void (^)(NSArray *posts, NSError *error))block {
- return [[AFAppDotNetAPIClient sharedClient] GET:@"stream/0/posts/stream/global" parameters:nil success:^(NSURLSessionDataTask * __unused task, id JSON) {
- NSArray *postsFromResponse = [JSON valueForKeyPath:@"data"];
- NSMutableArray *mutablePosts = [NSMutableArray arrayWithCapacity:[postsFromResponse count]];
- for (NSDictionary *attributes in postsFromResponse) {
- Post *post = [[Post alloc] initWithAttributes:attributes];
- [mutablePosts addObject:post];
- }
- if (block) {
- block([NSArray arrayWithArray:mutablePosts], nil);
- }
- } failure:^(NSURLSessionDataTask *__unused task, NSError *error) {
- if (block) {
- block([NSArray array], error);
- }
- }];
- }
- @end
- @implementation Post (NSCoding)
- - (void)encodeWithCoder:(NSCoder *)aCoder {
- [aCoder encodeInteger:(NSInteger)self.postID forKey:@"AF.postID"];
- [aCoder encodeObject:self.text forKey:@"AF.text"];
- [aCoder encodeObject:self.user forKey:@"AF.user"];
- }
- - (instancetype)initWithCoder:(NSCoder *)aDecoder {
- self = [super init];
- if (!self) {
- return nil;
- }
-
- self.postID = (NSUInteger)[aDecoder decodeIntegerForKey:@"AF.postID"];
- self.text = [aDecoder decodeObjectOfClass:[NSString class] forKey:@"AF.text"];
- self.user = [aDecoder decodeObjectOfClass:[User class] forKey:@"AF.user"];
-
- return self;
- }
- + (BOOL)supportsSecureCoding {
- return YES;
- }
- @end
|