Showing
8 changed files
with
66 additions
and
50 deletions
@@ -312,6 +312,8 @@ extern unsigned long const ASIWWANBandwidthThrottleAmount; | @@ -312,6 +312,8 @@ extern unsigned long const ASIWWANBandwidthThrottleAmount; | ||
312 | // This only affects credentials stored in the session cache when useSessionPersistance is YES. Credentials from the keychain are never presented unless the server asks for them | 312 | // This only affects credentials stored in the session cache when useSessionPersistance is YES. Credentials from the keychain are never presented unless the server asks for them |
313 | // Default is YES | 313 | // Default is YES |
314 | BOOL shouldPresentCredentialsBeforeChallenge; | 314 | BOOL shouldPresentCredentialsBeforeChallenge; |
315 | + | ||
316 | + BOOL isSynchronous; | ||
315 | } | 317 | } |
316 | 318 | ||
317 | #pragma mark init / dealloc | 319 | #pragma mark init / dealloc |
@@ -353,14 +355,17 @@ extern unsigned long const ASIWWANBandwidthThrottleAmount; | @@ -353,14 +355,17 @@ extern unsigned long const ASIWWANBandwidthThrottleAmount; | ||
353 | 355 | ||
354 | #pragma mark running a request | 356 | #pragma mark running a request |
355 | 357 | ||
356 | -// Run a request asynchronously by adding it to the global queue | 358 | +// For an asynchronous request in the current thread, use [request start] |
357 | -// (Use [request start] for a synchronous request) | 359 | + |
358 | -- (void)startAsynchronous; | 360 | +// Run a request asynchronously in the background by adding it to the global queue, where it will run in its own thread |
361 | +- (void)startInBackgroundThread; | ||
362 | + | ||
363 | +// Run a request synchronously in the current thread | ||
364 | +- (void)startSynchronous; | ||
359 | 365 | ||
360 | -#pragma mark request logic | ||
361 | 366 | ||
362 | -// Main request loop is in here | 367 | + |
363 | -- (void)loadRequest; | 368 | +#pragma mark request logic |
364 | 369 | ||
365 | // Start the read stream. Called by loadRequest, and again to restart the request when authentication is needed | 370 | // Start the read stream. Called by loadRequest, and again to restart the request when authentication is needed |
366 | - (void)startRequest; | 371 | - (void)startRequest; |
@@ -639,4 +644,7 @@ extern unsigned long const ASIWWANBandwidthThrottleAmount; | @@ -639,4 +644,7 @@ extern unsigned long const ASIWWANBandwidthThrottleAmount; | ||
639 | @property (assign, readonly) int proxyAuthenticationRetryCount; | 644 | @property (assign, readonly) int proxyAuthenticationRetryCount; |
640 | @property (assign) BOOL haveBuiltRequestHeaders; | 645 | @property (assign) BOOL haveBuiltRequestHeaders; |
641 | @property (assign, nonatomic) BOOL haveBuiltPostBody; | 646 | @property (assign, nonatomic) BOOL haveBuiltPostBody; |
647 | + | ||
648 | +@property (assign, readonly) BOOL isSynchronous; | ||
649 | + | ||
642 | @end | 650 | @end |
This diff is collapsed. Click to expand it.
@@ -39,7 +39,7 @@ | @@ -39,7 +39,7 @@ | ||
39 | [request setPostValue:d forKey:@"post_var2"]; | 39 | [request setPostValue:d forKey:@"post_var2"]; |
40 | [request setPostValue:v forKey:@"post_var3"]; | 40 | [request setPostValue:v forKey:@"post_var3"]; |
41 | [request setFile:path forKey:@"file"]; | 41 | [request setFile:path forKey:@"file"]; |
42 | - [request start]; | 42 | + [request startSynchronous]; |
43 | 43 | ||
44 | BOOL success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"bigfile",size,@"application/octet-stream"]]); | 44 | BOOL success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"bigfile",size,@"application/octet-stream"]]); |
45 | GHAssertTrue(success,@"Failed to upload the correct data (using local file)"); | 45 | GHAssertTrue(success,@"Failed to upload the correct data (using local file)"); |
@@ -50,7 +50,7 @@ | @@ -50,7 +50,7 @@ | ||
50 | [request setPostValue:d forKey:@"post_var2"]; | 50 | [request setPostValue:d forKey:@"post_var2"]; |
51 | [request setPostValue:v forKey:@"post_var3"]; | 51 | [request setPostValue:v forKey:@"post_var3"]; |
52 | [request setData:data forKey:@"file"]; | 52 | [request setData:data forKey:@"file"]; |
53 | - [request start]; | 53 | + [request startSynchronous]; |
54 | 54 | ||
55 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"file",size,@"application/octet-stream"]]); | 55 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"file",size,@"application/octet-stream"]]); |
56 | GHAssertTrue(success,@"Failed to upload the correct data (using NSData)"); | 56 | GHAssertTrue(success,@"Failed to upload the correct data (using NSData)"); |
@@ -61,7 +61,7 @@ | @@ -61,7 +61,7 @@ | ||
61 | [request setPostValue:d forKey:@"post_var2"]; | 61 | [request setPostValue:d forKey:@"post_var2"]; |
62 | [request setPostValue:v forKey:@"post_var3"]; | 62 | [request setPostValue:v forKey:@"post_var3"]; |
63 | [request setFile:path withFileName:@"myfile" andContentType:@"text/plain" forKey:@"file"]; | 63 | [request setFile:path withFileName:@"myfile" andContentType:@"text/plain" forKey:@"file"]; |
64 | - [request start]; | 64 | + [request startSynchronous]; |
65 | 65 | ||
66 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"myfile",size,@"text/plain"]]); | 66 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"myfile",size,@"text/plain"]]); |
67 | GHAssertTrue(success,@"Failed to send the correct content-type / file name"); | 67 | GHAssertTrue(success,@"Failed to send the correct content-type / file name"); |
@@ -72,7 +72,7 @@ | @@ -72,7 +72,7 @@ | ||
72 | [request setPostValue:d forKey:@"post_var2"]; | 72 | [request setPostValue:d forKey:@"post_var2"]; |
73 | [request setPostValue:v forKey:@"post_var3"]; | 73 | [request setPostValue:v forKey:@"post_var3"]; |
74 | [request setData:data withFileName:@"myfile" andContentType:@"text/plain" forKey:@"file"]; | 74 | [request setData:data withFileName:@"myfile" andContentType:@"text/plain" forKey:@"file"]; |
75 | - [request start]; | 75 | + [request startSynchronous]; |
76 | 76 | ||
77 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"myfile",size,@"text/plain"]]); | 77 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"post_var: %@\r\npost_var2: %@\r\npost_var3: %@\r\nfile_name: %@\r\nfile_size: %hu\r\ncontent_type: %@",@"foo",d,v,@"myfile",size,@"text/plain"]]); |
78 | GHAssertTrue(success,@"Failed to send the correct content-type / file name"); | 78 | GHAssertTrue(success,@"Failed to send the correct content-type / file name"); |
@@ -88,7 +88,7 @@ | @@ -88,7 +88,7 @@ | ||
88 | [request setPostValue:@"there" forKey:@"xxx_non_empty_string"]; | 88 | [request setPostValue:@"there" forKey:@"xxx_non_empty_string"]; |
89 | [request setShouldStreamPostDataFromDisk:YES]; | 89 | [request setShouldStreamPostDataFromDisk:YES]; |
90 | [request buildPostBody]; | 90 | [request buildPostBody]; |
91 | - [request start]; | 91 | + [request startSynchronous]; |
92 | 92 | ||
93 | BOOL success = ([[request responseString] isEqualToString:@"a_non_empty_string: hello\r\nzzz_empty_string: \r\nxxx_non_empty_string: there"]); | 93 | BOOL success = ([[request responseString] isEqualToString:@"a_non_empty_string: hello\r\nzzz_empty_string: \r\nxxx_non_empty_string: there"]); |
94 | GHAssertTrue(success,@"Failed to send the correct post data"); | 94 | GHAssertTrue(success,@"Failed to send the correct post data"); |
@@ -114,7 +114,7 @@ | @@ -114,7 +114,7 @@ | ||
114 | 114 | ||
115 | [request setShouldStreamPostDataFromDisk:YES]; | 115 | [request setShouldStreamPostDataFromDisk:YES]; |
116 | [request setPostFormat:ASIURLEncodedPostFormat]; | 116 | [request setPostFormat:ASIURLEncodedPostFormat]; |
117 | - [request start]; | 117 | + [request startSynchronous]; |
118 | 118 | ||
119 | 119 | ||
120 | BOOL success = ([[request responseString] isEqualToString:@"value1: value1\r\nvalue2: (%20 ? =)\r\nvalue3: £100.00\r\nvalue4: \r\nteskey&aa: &??aaa=//ciaoèèè"]); | 120 | BOOL success = ([[request responseString] isEqualToString:@"value1: value1\r\nvalue2: (%20 ? =)\r\nvalue3: £100.00\r\nvalue4: \r\nteskey&aa: &??aaa=//ciaoèèè"]); |
@@ -130,7 +130,7 @@ | @@ -130,7 +130,7 @@ | ||
130 | NSString *charset = @"utf-8"; | 130 | NSString *charset = @"utf-8"; |
131 | ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; | 131 | ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; |
132 | [request setPostValue:testString forKey:@"value"]; | 132 | [request setPostValue:testString forKey:@"value"]; |
133 | - [request start]; | 133 | + [request startSynchronous]; |
134 | BOOL success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); | 134 | BOOL success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); |
135 | GHAssertTrue(success,@"Failed to correctly encode the data"); | 135 | GHAssertTrue(success,@"Failed to correctly encode the data"); |
136 | 136 | ||
@@ -138,7 +138,7 @@ | @@ -138,7 +138,7 @@ | ||
138 | request = [ASIFormDataRequest requestWithURL:url]; | 138 | request = [ASIFormDataRequest requestWithURL:url]; |
139 | [request setPostValue:testString forKey:@"value"]; | 139 | [request setPostValue:testString forKey:@"value"]; |
140 | [request setPostFormat:ASIMultipartFormDataPostFormat]; | 140 | [request setPostFormat:ASIMultipartFormDataPostFormat]; |
141 | - [request start]; | 141 | + [request startSynchronous]; |
142 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); | 142 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); |
143 | GHAssertTrue(success,@"Failed to correctly encode the data"); | 143 | GHAssertTrue(success,@"Failed to correctly encode the data"); |
144 | 144 | ||
@@ -148,7 +148,7 @@ | @@ -148,7 +148,7 @@ | ||
148 | request = [ASIFormDataRequest requestWithURL:url]; | 148 | request = [ASIFormDataRequest requestWithURL:url]; |
149 | [request setPostValue:testString forKey:@"value"]; | 149 | [request setPostValue:testString forKey:@"value"]; |
150 | [request setStringEncoding:NSISOLatin1StringEncoding]; | 150 | [request setStringEncoding:NSISOLatin1StringEncoding]; |
151 | - [request start]; | 151 | + [request startSynchronous]; |
152 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); | 152 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); |
153 | GHAssertTrue(success,@"Failed to correctly encode the data"); | 153 | GHAssertTrue(success,@"Failed to correctly encode the data"); |
154 | 154 | ||
@@ -157,7 +157,7 @@ | @@ -157,7 +157,7 @@ | ||
157 | [request setPostValue:testString forKey:@"value"]; | 157 | [request setPostValue:testString forKey:@"value"]; |
158 | [request setPostFormat:ASIMultipartFormDataPostFormat]; | 158 | [request setPostFormat:ASIMultipartFormDataPostFormat]; |
159 | [request setStringEncoding:NSISOLatin1StringEncoding]; | 159 | [request setStringEncoding:NSISOLatin1StringEncoding]; |
160 | - [request start]; | 160 | + [request startSynchronous]; |
161 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); | 161 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); |
162 | GHAssertTrue(success,@"Failed to correctly encode the data"); | 162 | GHAssertTrue(success,@"Failed to correctly encode the data"); |
163 | 163 | ||
@@ -166,7 +166,7 @@ | @@ -166,7 +166,7 @@ | ||
166 | request = [ASIFormDataRequest requestWithURL:url]; | 166 | request = [ASIFormDataRequest requestWithURL:url]; |
167 | [request setPostValue:testString forKey:@"value"]; | 167 | [request setPostValue:testString forKey:@"value"]; |
168 | [request setStringEncoding:NSWindowsCP1252StringEncoding]; | 168 | [request setStringEncoding:NSWindowsCP1252StringEncoding]; |
169 | - [request start]; | 169 | + [request startSynchronous]; |
170 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); | 170 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); |
171 | GHAssertTrue(success,@"Failed to correctly encode the data"); | 171 | GHAssertTrue(success,@"Failed to correctly encode the data"); |
172 | 172 | ||
@@ -174,7 +174,7 @@ | @@ -174,7 +174,7 @@ | ||
174 | [request setPostValue:testString forKey:@"value"]; | 174 | [request setPostValue:testString forKey:@"value"]; |
175 | [request setPostFormat:ASIMultipartFormDataPostFormat]; | 175 | [request setPostFormat:ASIMultipartFormDataPostFormat]; |
176 | [request setStringEncoding:NSWindowsCP1252StringEncoding]; | 176 | [request setStringEncoding:NSWindowsCP1252StringEncoding]; |
177 | - [request start]; | 177 | + [request startSynchronous]; |
178 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); | 178 | success = ([[request responseString] isEqualToString:[NSString stringWithFormat:@"Got data in %@: %@",charset,testString]]); |
179 | GHAssertTrue(success,@"Failed to correctly encode the data"); | 179 | GHAssertTrue(success,@"Failed to correctly encode the data"); |
180 | 180 |
This diff is collapsed. Click to expand it.
@@ -118,7 +118,7 @@ static NSString *bucket = @""; | @@ -118,7 +118,7 @@ static NSString *bucket = @""; | ||
118 | [request setDateString:dateString]; | 118 | [request setDateString:dateString]; |
119 | [request setSecretAccessKey:exampleSecretAccessKey]; | 119 | [request setSecretAccessKey:exampleSecretAccessKey]; |
120 | [request setAccessKey:exampleAccessKey]; | 120 | [request setAccessKey:exampleAccessKey]; |
121 | - [request start]; | 121 | + [request startSynchronous]; |
122 | GHAssertNotNil([request error],@"Failed to generate an error when the request was not correctly signed"); | 122 | GHAssertNotNil([request error],@"Failed to generate an error when the request was not correctly signed"); |
123 | 123 | ||
124 | BOOL success = ([[request error] code] == ASIS3ResponseErrorType); | 124 | BOOL success = ([[request error] code] == ASIS3ResponseErrorType); |
@@ -147,7 +147,7 @@ static NSString *bucket = @""; | @@ -147,7 +147,7 @@ static NSString *bucket = @""; | ||
147 | ASIS3Request *request = [ASIS3Request PUTRequestForFile:filePath withBucket:bucket path:path]; | 147 | ASIS3Request *request = [ASIS3Request PUTRequestForFile:filePath withBucket:bucket path:path]; |
148 | [request setSecretAccessKey:secretAccessKey]; | 148 | [request setSecretAccessKey:secretAccessKey]; |
149 | [request setAccessKey:accessKey]; | 149 | [request setAccessKey:accessKey]; |
150 | - [request start]; | 150 | + [request startSynchronous]; |
151 | success = [[request responseString] isEqualToString:@""]; | 151 | success = [[request responseString] isEqualToString:@""]; |
152 | GHAssertTrue(success,@"Failed to PUT a file to S3"); | 152 | GHAssertTrue(success,@"Failed to PUT a file to S3"); |
153 | 153 | ||
@@ -155,7 +155,7 @@ static NSString *bucket = @""; | @@ -155,7 +155,7 @@ static NSString *bucket = @""; | ||
155 | request = [ASIS3Request requestWithBucket:bucket path:path]; | 155 | request = [ASIS3Request requestWithBucket:bucket path:path]; |
156 | [request setSecretAccessKey:secretAccessKey]; | 156 | [request setSecretAccessKey:secretAccessKey]; |
157 | [request setAccessKey:accessKey]; | 157 | [request setAccessKey:accessKey]; |
158 | - [request start]; | 158 | + [request startSynchronous]; |
159 | success = [[request responseString] isEqualToString:@"This is my content"]; | 159 | success = [[request responseString] isEqualToString:@"This is my content"]; |
160 | GHAssertTrue(success,@"Failed to GET the correct data from S3"); | 160 | GHAssertTrue(success,@"Failed to GET the correct data from S3"); |
161 | 161 | ||
@@ -163,14 +163,14 @@ static NSString *bucket = @""; | @@ -163,14 +163,14 @@ static NSString *bucket = @""; | ||
163 | request = [ASIS3Request COPYRequestFromBucket:bucket path:path toBucket:bucket path:@"/test-copy"]; | 163 | request = [ASIS3Request COPYRequestFromBucket:bucket path:path toBucket:bucket path:@"/test-copy"]; |
164 | [request setSecretAccessKey:secretAccessKey]; | 164 | [request setSecretAccessKey:secretAccessKey]; |
165 | [request setAccessKey:accessKey]; | 165 | [request setAccessKey:accessKey]; |
166 | - [request start]; | 166 | + [request startSynchronous]; |
167 | GHAssertNil([request error],@"Failed to COPY a file"); | 167 | GHAssertNil([request error],@"Failed to COPY a file"); |
168 | 168 | ||
169 | // GET the copy | 169 | // GET the copy |
170 | request = [ASIS3Request requestWithBucket:bucket path:@"/test-copy"]; | 170 | request = [ASIS3Request requestWithBucket:bucket path:@"/test-copy"]; |
171 | [request setSecretAccessKey:secretAccessKey]; | 171 | [request setSecretAccessKey:secretAccessKey]; |
172 | [request setAccessKey:accessKey]; | 172 | [request setAccessKey:accessKey]; |
173 | - [request start]; | 173 | + [request startSynchronous]; |
174 | success = [[request responseString] isEqualToString:@"This is my content"]; | 174 | success = [[request responseString] isEqualToString:@"This is my content"]; |
175 | GHAssertTrue(success,@"Failed to GET the correct data from S3"); | 175 | GHAssertTrue(success,@"Failed to GET the correct data from S3"); |
176 | 176 | ||
@@ -179,7 +179,7 @@ static NSString *bucket = @""; | @@ -179,7 +179,7 @@ static NSString *bucket = @""; | ||
179 | request = [ASIS3Request HEADRequestWithBucket:bucket path:@"/test-copy"]; | 179 | request = [ASIS3Request HEADRequestWithBucket:bucket path:@"/test-copy"]; |
180 | [request setSecretAccessKey:secretAccessKey]; | 180 | [request setSecretAccessKey:secretAccessKey]; |
181 | [request setAccessKey:accessKey]; | 181 | [request setAccessKey:accessKey]; |
182 | - [request start]; | 182 | + [request startSynchronous]; |
183 | success = [[request responseString] isEqualToString:@""]; | 183 | success = [[request responseString] isEqualToString:@""]; |
184 | GHAssertTrue(success,@"Got a response body for a HEAD request"); | 184 | GHAssertTrue(success,@"Got a response body for a HEAD request"); |
185 | 185 | ||
@@ -188,7 +188,7 @@ static NSString *bucket = @""; | @@ -188,7 +188,7 @@ static NSString *bucket = @""; | ||
188 | [listRequest setPrefix:@"test"]; | 188 | [listRequest setPrefix:@"test"]; |
189 | [listRequest setSecretAccessKey:secretAccessKey]; | 189 | [listRequest setSecretAccessKey:secretAccessKey]; |
190 | [listRequest setAccessKey:accessKey]; | 190 | [listRequest setAccessKey:accessKey]; |
191 | - [listRequest start]; | 191 | + [listRequest startSynchronous]; |
192 | GHAssertNil([listRequest error],@"Failed to download a list from S3"); | 192 | GHAssertNil([listRequest error],@"Failed to download a list from S3"); |
193 | success = [[listRequest bucketObjects] count]; | 193 | success = [[listRequest bucketObjects] count]; |
194 | GHAssertTrue(success,@"The file didn't show up in the list"); | 194 | GHAssertTrue(success,@"The file didn't show up in the list"); |
@@ -198,7 +198,7 @@ static NSString *bucket = @""; | @@ -198,7 +198,7 @@ static NSString *bucket = @""; | ||
198 | [request setSecretAccessKey:secretAccessKey]; | 198 | [request setSecretAccessKey:secretAccessKey]; |
199 | [request setRequestMethod:@"DELETE"]; | 199 | [request setRequestMethod:@"DELETE"]; |
200 | [request setAccessKey:accessKey]; | 200 | [request setAccessKey:accessKey]; |
201 | - [request start]; | 201 | + [request startSynchronous]; |
202 | success = [[request responseString] isEqualToString:@""]; | 202 | success = [[request responseString] isEqualToString:@""]; |
203 | GHAssertTrue(success,@"Failed to DELETE the file from S3"); | 203 | GHAssertTrue(success,@"Failed to DELETE the file from S3"); |
204 | 204 | ||
@@ -207,7 +207,7 @@ static NSString *bucket = @""; | @@ -207,7 +207,7 @@ static NSString *bucket = @""; | ||
207 | [request setSecretAccessKey:secretAccessKey]; | 207 | [request setSecretAccessKey:secretAccessKey]; |
208 | [request setRequestMethod:@"DELETE"]; | 208 | [request setRequestMethod:@"DELETE"]; |
209 | [request setAccessKey:accessKey]; | 209 | [request setAccessKey:accessKey]; |
210 | - [request start]; | 210 | + [request startSynchronous]; |
211 | success = [[request responseString] isEqualToString:@""]; | 211 | success = [[request responseString] isEqualToString:@""]; |
212 | GHAssertTrue(success,@"Failed to DELETE the copy from S3"); | 212 | GHAssertTrue(success,@"Failed to DELETE the copy from S3"); |
213 | 213 | ||
@@ -215,7 +215,7 @@ static NSString *bucket = @""; | @@ -215,7 +215,7 @@ static NSString *bucket = @""; | ||
215 | request = [ASIS3Request COPYRequestFromBucket:bucket path:path toBucket:bucket path:@"/test-copy"]; | 215 | request = [ASIS3Request COPYRequestFromBucket:bucket path:path toBucket:bucket path:@"/test-copy"]; |
216 | [request setSecretAccessKey:secretAccessKey]; | 216 | [request setSecretAccessKey:secretAccessKey]; |
217 | [request setAccessKey:accessKey]; | 217 | [request setAccessKey:accessKey]; |
218 | - [request start]; | 218 | + [request startSynchronous]; |
219 | GHAssertNotNil([request error],@"Failed generate an error for what should have been a failed COPY"); | 219 | GHAssertNotNil([request error],@"Failed generate an error for what should have been a failed COPY"); |
220 | 220 | ||
221 | success = [[[request error] localizedDescription] isEqualToString:@"The specified key does not exist."]; | 221 | success = [[[request error] localizedDescription] isEqualToString:@"The specified key does not exist."]; |
@@ -243,7 +243,7 @@ static NSString *bucket = @""; | @@ -243,7 +243,7 @@ static NSString *bucket = @""; | ||
243 | [request setAccessKey:accessKey]; | 243 | [request setAccessKey:accessKey]; |
244 | [request setShouldCompressRequestBody:YES]; | 244 | [request setShouldCompressRequestBody:YES]; |
245 | [request setAccessPolicy:ASIS3AccessPolicyPublicRead]; // We'll make it public | 245 | [request setAccessPolicy:ASIS3AccessPolicyPublicRead]; // We'll make it public |
246 | - [request start]; | 246 | + [request startSynchronous]; |
247 | success = [[request responseString] isEqualToString:@""]; | 247 | success = [[request responseString] isEqualToString:@""]; |
248 | GHAssertTrue(success,@"Failed to PUT the gzipped file"); | 248 | GHAssertTrue(success,@"Failed to PUT the gzipped file"); |
249 | 249 | ||
@@ -251,7 +251,7 @@ static NSString *bucket = @""; | @@ -251,7 +251,7 @@ static NSString *bucket = @""; | ||
251 | request = [ASIS3Request requestWithBucket:bucket path:path]; | 251 | request = [ASIS3Request requestWithBucket:bucket path:path]; |
252 | [request setSecretAccessKey:secretAccessKey]; | 252 | [request setSecretAccessKey:secretAccessKey]; |
253 | [request setAccessKey:accessKey]; | 253 | [request setAccessKey:accessKey]; |
254 | - [request start]; | 254 | + [request startSynchronous]; |
255 | success = [[request responseString] isEqualToString:text]; | 255 | success = [[request responseString] isEqualToString:text]; |
256 | GHAssertTrue(success,@"Failed to GET the correct data from S3"); | 256 | GHAssertTrue(success,@"Failed to GET the correct data from S3"); |
257 | 257 | ||
@@ -283,7 +283,7 @@ static NSString *bucket = @""; | @@ -283,7 +283,7 @@ static NSString *bucket = @""; | ||
283 | ASIS3Request *request = [ASIS3Request PUTRequestForFile:filePath withBucket:bucket path:path]; | 283 | ASIS3Request *request = [ASIS3Request PUTRequestForFile:filePath withBucket:bucket path:path]; |
284 | [request setSecretAccessKey:secretAccessKey]; | 284 | [request setSecretAccessKey:secretAccessKey]; |
285 | [request setAccessKey:accessKey]; | 285 | [request setAccessKey:accessKey]; |
286 | - [request start]; | 286 | + [request startSynchronous]; |
287 | GHAssertNil([request error],@"Give up on list request test - failed to upload a file"); | 287 | GHAssertNil([request error],@"Give up on list request test - failed to upload a file"); |
288 | } | 288 | } |
289 | 289 | ||
@@ -292,7 +292,7 @@ static NSString *bucket = @""; | @@ -292,7 +292,7 @@ static NSString *bucket = @""; | ||
292 | [listRequest setPrefix:@"test-file"]; | 292 | [listRequest setPrefix:@"test-file"]; |
293 | [listRequest setSecretAccessKey:secretAccessKey]; | 293 | [listRequest setSecretAccessKey:secretAccessKey]; |
294 | [listRequest setAccessKey:accessKey]; | 294 | [listRequest setAccessKey:accessKey]; |
295 | - [listRequest start]; | 295 | + [listRequest startSynchronous]; |
296 | GHAssertNil([listRequest error],@"Failed to download a list from S3"); | 296 | GHAssertNil([listRequest error],@"Failed to download a list from S3"); |
297 | success = ([[listRequest bucketObjects] count] == 5); | 297 | success = ([[listRequest bucketObjects] count] == 5); |
298 | GHAssertTrue(success,@"List did not contain all files"); | 298 | GHAssertTrue(success,@"List did not contain all files"); |
@@ -354,7 +354,7 @@ static NSString *bucket = @""; | @@ -354,7 +354,7 @@ static NSString *bucket = @""; | ||
354 | [listRequest setPrefix:@"test-file"]; | 354 | [listRequest setPrefix:@"test-file"]; |
355 | [listRequest setSecretAccessKey:secretAccessKey]; | 355 | [listRequest setSecretAccessKey:secretAccessKey]; |
356 | [listRequest setAccessKey:accessKey]; | 356 | [listRequest setAccessKey:accessKey]; |
357 | - [listRequest start]; | 357 | + [listRequest startSynchronous]; |
358 | GHAssertNil([listRequest error],@"Failed to download a list from S3"); | 358 | GHAssertNil([listRequest error],@"Failed to download a list from S3"); |
359 | success = ([[listRequest bucketObjects] count] == 0); | 359 | success = ([[listRequest bucketObjects] count] == 0); |
360 | GHAssertTrue(success,@"List contained files that should have been deleted"); | 360 | GHAssertTrue(success,@"List contained files that should have been deleted"); |
@@ -52,7 +52,7 @@ IMPORTANT | @@ -52,7 +52,7 @@ IMPORTANT | ||
52 | [[self cancelRequest] setDownloadProgressDelegate:self]; | 52 | [[self cancelRequest] setDownloadProgressDelegate:self]; |
53 | [[self cancelRequest] setShowAccurateProgress:YES]; | 53 | [[self cancelRequest] setShowAccurateProgress:YES]; |
54 | NSLog(@"Stress test: Start request %@",[self cancelRequest]); | 54 | NSLog(@"Stress test: Start request %@",[self cancelRequest]); |
55 | - [[self cancelRequest] startAsynchronous]; | 55 | + [[self cancelRequest] startInBackgroundThread]; |
56 | } | 56 | } |
57 | } | 57 | } |
58 | 58 | ||
@@ -77,7 +77,7 @@ IMPORTANT | @@ -77,7 +77,7 @@ IMPORTANT | ||
77 | [self setCancelRequest:[ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://127.0.0.1/ASIHTTPRequest/tests/one_infinite_loop"]]]; | 77 | [self setCancelRequest:[ASIHTTPRequest requestWithURL:[NSURL URLWithString:@"http://127.0.0.1/ASIHTTPRequest/tests/one_infinite_loop"]]]; |
78 | if ([[self cancelStartDate] timeIntervalSinceNow] > 0) { | 78 | if ([[self cancelStartDate] timeIntervalSinceNow] > 0) { |
79 | NSLog(@"Redirect stress test: Start request %@",[self cancelRequest]); | 79 | NSLog(@"Redirect stress test: Start request %@",[self cancelRequest]); |
80 | - [[self cancelRequest] startAsynchronous]; | 80 | + [[self cancelRequest] startInBackgroundThread]; |
81 | [self performSelector:@selector(cancelRedirectRequest) withObject:nil afterDelay:0.2]; | 81 | [self performSelector:@selector(cancelRedirectRequest) withObject:nil afterDelay:0.2]; |
82 | } | 82 | } |
83 | [createRequestLock unlock]; | 83 | [createRequestLock unlock]; |
@@ -114,7 +114,7 @@ IMPORTANT | @@ -114,7 +114,7 @@ IMPORTANT | ||
114 | [[self cancelRequest] setDelegate:delegate]; | 114 | [[self cancelRequest] setDelegate:delegate]; |
115 | [[self cancelRequest] setShowAccurateProgress:YES]; | 115 | [[self cancelRequest] setShowAccurateProgress:YES]; |
116 | NSLog(@"Set delegate stress test: Start request %@",[self cancelRequest]); | 116 | NSLog(@"Set delegate stress test: Start request %@",[self cancelRequest]); |
117 | - [[self cancelRequest] startAsynchronous]; | 117 | + [[self cancelRequest] startInBackgroundThread]; |
118 | [self performSelectorInBackground:@selector(cancelSetDelegateRequest) withObject:nil]; | 118 | [self performSelectorInBackground:@selector(cancelSetDelegateRequest) withObject:nil]; |
119 | } | 119 | } |
120 | [createRequestLock unlock]; | 120 | [createRequestLock unlock]; |
@@ -37,6 +37,8 @@ | @@ -37,6 +37,8 @@ | ||
37 | IBOutlet NSButton *resumeButton; | 37 | IBOutlet NSButton *resumeButton; |
38 | 38 | ||
39 | IBOutlet NSTextField *bandwidthUsed; | 39 | IBOutlet NSTextField *bandwidthUsed; |
40 | + | ||
41 | + ASIHTTPRequest *bigFetchRequest; | ||
40 | } | 42 | } |
41 | 43 | ||
42 | - (IBAction)simpleURLFetch:(id)sender; | 44 | - (IBAction)simpleURLFetch:(id)sender; |
@@ -54,4 +56,5 @@ | @@ -54,4 +56,5 @@ | ||
54 | 56 | ||
55 | - (IBAction)throttleBandwidth:(id)sender; | 57 | - (IBAction)throttleBandwidth:(id)sender; |
56 | 58 | ||
59 | +@property (assign, nonatomic) ASIHTTPRequest *bigFetchRequest; | ||
57 | @end | 60 | @end |
@@ -30,11 +30,12 @@ | @@ -30,11 +30,12 @@ | ||
30 | 30 | ||
31 | - (IBAction)simpleURLFetch:(id)sender | 31 | - (IBAction)simpleURLFetch:(id)sender |
32 | { | 32 | { |
33 | - ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/"]] autorelease]; | 33 | + ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://allseeing-i.com/ASIHTTPRequest/tests/the_great_american_novel_%28abridged%29.txt"]] autorelease]; |
34 | 34 | ||
35 | //Customise our user agent, for no real reason | 35 | //Customise our user agent, for no real reason |
36 | [request addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"]; | 36 | [request addRequestHeader:@"User-Agent" value:@"ASIHTTPRequest"]; |
37 | - [request start]; | 37 | + [request setDelegate:self]; |
38 | + [request startSynchronous]; | ||
38 | if ([request error]) { | 39 | if ([request error]) { |
39 | [htmlSource setString:[[request error] localizedDescription]]; | 40 | [htmlSource setString:[[request error] localizedDescription]]; |
40 | } else if ([request responseString]) { | 41 | } else if ([request responseString]) { |
@@ -42,6 +43,11 @@ | @@ -42,6 +43,11 @@ | ||
42 | } | 43 | } |
43 | } | 44 | } |
44 | 45 | ||
46 | +- (void)requestFinished:(ASIHTTPRequest *)request | ||
47 | +{ | ||
48 | + [htmlSource setString:[request responseString]]; | ||
49 | +} | ||
50 | + | ||
45 | 51 | ||
46 | - (IBAction)URLFetchWithProgress:(id)sender | 52 | - (IBAction)URLFetchWithProgress:(id)sender |
47 | { | 53 | { |
@@ -61,7 +67,8 @@ | @@ -61,7 +67,8 @@ | ||
61 | { | 67 | { |
62 | [startButton setTitle:@"Start"]; | 68 | [startButton setTitle:@"Start"]; |
63 | [startButton setAction:@selector(URLFetchWithProgress:)]; | 69 | [startButton setAction:@selector(URLFetchWithProgress:)]; |
64 | - [networkQueue cancelAllOperations]; | 70 | + [[self bigFetchRequest] cancel]; |
71 | + [self setBigFetchRequest:nil]; | ||
65 | [resumeButton setEnabled:YES]; | 72 | [resumeButton setEnabled:YES]; |
66 | } | 73 | } |
67 | 74 | ||
@@ -71,18 +78,16 @@ | @@ -71,18 +78,16 @@ | ||
71 | [startButton setTitle:@"Stop"]; | 78 | [startButton setTitle:@"Stop"]; |
72 | [startButton setAction:@selector(stopURLFetchWithProgress:)]; | 79 | [startButton setAction:@selector(stopURLFetchWithProgress:)]; |
73 | 80 | ||
81 | + // Stop any other requests | ||
74 | [networkQueue cancelAllOperations]; | 82 | [networkQueue cancelAllOperations]; |
75 | - [networkQueue setShowAccurateProgress:YES]; | ||
76 | - [networkQueue setDownloadProgressDelegate:progressIndicator]; | ||
77 | - [networkQueue setDelegate:self]; | ||
78 | - [networkQueue setRequestDidFinishSelector:@selector(URLFetchWithProgressComplete:)]; | ||
79 | 83 | ||
80 | - ASIHTTPRequest *request = [[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://trails-network.net/Downloads/MemexTrails_1.0b1.zip"]] autorelease]; | 84 | + [self setBigFetchRequest:[[[ASIHTTPRequest alloc] initWithURL:[NSURL URLWithString:@"http://trails-network.net/Downloads/MemexTrails_1.0b1.zip"]] autorelease]]; |
81 | - [request setDownloadDestinationPath:[[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip"]]; | 85 | + [[self bigFetchRequest] setDownloadDestinationPath:[[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip"]]; |
82 | - [request setTemporaryFileDownloadPath:[[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip.download"]]; | 86 | + [[self bigFetchRequest] setTemporaryFileDownloadPath:[[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] stringByAppendingPathComponent:@"MemexTrails_1.0b1.zip.download"]]; |
83 | - [request setAllowResumeForFileDownloads:YES]; | 87 | + [[self bigFetchRequest] setAllowResumeForFileDownloads:YES]; |
84 | - [networkQueue addOperation:request]; | 88 | + [[self bigFetchRequest] setDidFinishSelector:@selector(URLFetchWithProgressComplete:)]; |
85 | - [networkQueue go]; | 89 | + [[self bigFetchRequest] setDownloadProgressDelegate:progressIndicator]; |
90 | + [[self bigFetchRequest] start]; | ||
86 | } | 91 | } |
87 | 92 | ||
88 | - (void)URLFetchWithProgressComplete:(ASIHTTPRequest *)request | 93 | - (void)URLFetchWithProgressComplete:(ASIHTTPRequest *)request |
@@ -279,5 +284,5 @@ | @@ -279,5 +284,5 @@ | ||
279 | } | 284 | } |
280 | 285 | ||
281 | 286 | ||
282 | - | 287 | +@synthesize bigFetchRequest; |
283 | @end | 288 | @end |
-
Please register or login to post a comment