-
Notifications
You must be signed in to change notification settings - Fork 56
/
MZRESTSearch.m
125 lines (108 loc) · 2.69 KB
/
MZRESTSearch.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
//
// MZRESTSearch.m
// MetaZ
//
// Created by Brian Olsen on 18/11/09.
// Copyright 2009 Maven-Group. All rights reserved.
//
#import "MZRESTSearch.h"
#import "MZSearchProvider.h"
@implementation MZRESTSearch
+ (Class)restWrapper
{
return [MZRESTWrapper class];
}
@synthesize isFinished;
@synthesize isExecuting;
- (id)initWithProvider:(id)theProvider delegate:(id<MZSearchProviderDelegate>)theDelegate url:(NSURL *)url usingVerb:(NSString *)theVerb parameters:(NSDictionary *)params;
{
self = [super init];
if(self)
{
searchURL = [url retain];
verb = [theVerb retain];
parameters = [params retain];
provider = [theProvider retain];
delegate = [theDelegate retain];
wrapper = [[[[self class] restWrapper] alloc] init];
wrapper.delegate = self;
}
return self;
}
- (void)dealloc
{
self.isExecuting = NO;
self.isFinished = YES;
[parameters release];
[searchURL release];
[verb release];
[wrapper cancelConnection];
[wrapper release];
[delegate release];
[super dealloc];
}
- (void)start
{
self.isExecuting = YES;
if([self isCancelled])
{
id del = delegate;
[del performSelectorOnMainThread:@selector(searchFinished) withObject:nil waitUntilDone:NO];
//[delegate searchFinished];
self.isExecuting = NO;
self.isFinished = YES;
}
else
[wrapper sendRequestTo:searchURL usingVerb:verb withParameters:parameters];
}
- (BOOL)isConcurrent
{
return YES;
}
/*
- (BOOL)isExecuting
{
return wrapper.connection != nil;
}
- (BOOL)isFinished
{
return self.finished;
}
*/
- (void)cancel
{
[super cancel];
if(self.isExecuting)
[wrapper cancelConnection];
}
#pragma mark - MZRESTWrapperDelegate
- (void)wrapper:(MZRESTWrapper *)theWrapper didRetrieveData:(NSData *)data
{
//NSLog(@"Got response:\n%@", [theWrapper responseAsText]);
[delegate searchProvider:provider result:[NSArray array]];
[delegate searchFinished];
self.isExecuting = NO;
self.isFinished = YES;
}
- (void)wrapper:(MZRESTWrapper *)theWrapper didFailWithError:(NSError *)error
{
NSLog(@"%@ search failed: %@", [self class], [error localizedDescription]);
[delegate searchFinished];
self.isExecuting = NO;
self.isFinished = YES;
}
- (void)wrapper:(MZRESTWrapper *)theWrapper didReceiveStatusCode:(int)statusCode
{
NSLog(@"%@ got status code: %d", [self class], statusCode);
[delegate searchFinished];
self.isExecuting = NO;
self.isFinished = YES;
}
- (void)wrapperWasCanceled:(MZRESTWrapper *)theWrapper
{
if(self.isExecuting)
[delegate searchFinished];
self.isExecuting = NO;
self.isFinished = YES;
}
@end