Overview
Comment: | utils/ofhttp: Add options for method and entity |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
a83058c2c03a903c7afcb207e1d13e14 |
User & Date: | js on 2015-05-06 22:07:53 |
Other Links: | manifest | tags |
Context
2015-05-07
| ||
15:26 | Update buildsys check-in: 05362e68d8 user: js tags: trunk | |
2015-05-06
| ||
22:07 | utils/ofhttp: Add options for method and entity check-in: a83058c2c0 user: js tags: trunk | |
20:18 | OFNotConnectedException -> OFNotOpenException check-in: ff759684e2 user: js tags: trunk | |
Changes
Modified utils/ofhttp/OFHTTP.m from [2ecde9c270] to [b1ee5836a1].
︙ | ︙ | |||
14 15 16 17 18 19 20 21 22 23 24 25 26 27 | * file. */ #include "config.h" #import "OFApplication.h" #import "OFArray.h" #import "OFDictionary.h" #import "OFFile.h" #import "OFHTTPClient.h" #import "OFHTTPRequest.h" #import "OFHTTPResponse.h" #import "OFOptionsParser.h" #import "OFStdIOStream.h" | > | 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | * file. */ #include "config.h" #import "OFApplication.h" #import "OFArray.h" #import "OFDataArray.h" #import "OFDictionary.h" #import "OFFile.h" #import "OFHTTPClient.h" #import "OFHTTPRequest.h" #import "OFHTTPResponse.h" #import "OFOptionsParser.h" #import "OFStdIOStream.h" |
︙ | ︙ | |||
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | @interface OFHTTP: OFObject { OFArray *_URLs; size_t _URLIndex; int _errorCode; OFString *_outputPath; bool _continue, _quiet; OFMutableDictionary *_clientHeaders; OFHTTPClient *_HTTPClient; char *_buffer; OFStream *_output; intmax_t _received, _length, _resumedFrom; ProgressBar *_progressBar; } @end OF_APPLICATION_DELEGATE(OFHTTP) static void help(OFStream *stream, bool full, int status) { [of_stderr writeFormat: | > > | > > > > | 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 | @interface OFHTTP: OFObject { OFArray *_URLs; size_t _URLIndex; int _errorCode; OFString *_outputPath; bool _continue, _quiet; OFDataArray *_entity; of_http_request_method_t _method; OFMutableDictionary *_clientHeaders; OFHTTPClient *_HTTPClient; char *_buffer; OFStream *_output; intmax_t _received, _length, _resumedFrom; ProgressBar *_progressBar; } @end OF_APPLICATION_DELEGATE(OFHTTP) static void help(OFStream *stream, bool full, int status) { [of_stderr writeFormat: @"Usage: %@ -[cehHmoPq] url1 [url2 ...]\n", [OFApplication programName]]; if (full) [stream writeString: @"\nOptions:\n" @" -c Continue download of existing file\n" @" -e Specify the entity\n" @" -h Show this help\n" @" -H Add a header (e.g. X-Foo:Bar)\n" @" -m Set the method of the HTTP request\n" @" -o Output filename\n" @" -P Specify SOCKS5 proxy\n" @" -q Quiet mode (no output, except errors)\n"]; [OFApplication terminateWithStatus: status]; } @implementation OFHTTP - init { self = [super init]; @try { _method = OF_HTTP_REQUEST_METHOD_GET; _clientHeaders = [[OFMutableDictionary alloc] init]; _HTTPClient = [[OFHTTPClient alloc] init]; [_HTTPClient setDelegate: self]; _buffer = [self allocMemoryWithSize: [OFSystemInfo pageSize]]; } @catch (id e) { |
︙ | ︙ | |||
123 124 125 126 127 128 129 130 131 132 133 134 135 136 | value = [header substringWithRange: of_range(pos + 1, [header length] - pos - 1)]; value = [value stringByDeletingEnclosingWhitespaces]; [_clientHeaders setObject: value forKey: name]; } - (void)setProxy: (OFString*)proxy { @try { size_t pos = [proxy rangeOfString: @":" options: OF_STRING_SEARCH_BACKWARDS].location; | > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > | 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | value = [header substringWithRange: of_range(pos + 1, [header length] - pos - 1)]; value = [value stringByDeletingEnclosingWhitespaces]; [_clientHeaders setObject: value forKey: name]; } - (void)setEntity: (OFString*)entity { [_entity release]; _entity = [[OFDataArray alloc] initWithContentsOfFile: entity]; } - (void)setMethod: (OFString*)method { void *pool = objc_autoreleasePoolPush(); method = [method uppercaseString]; if ([method isEqual: @"GET"]) _method = OF_HTTP_REQUEST_METHOD_GET; else if ([method isEqual: @"HEAD"]) _method = OF_HTTP_REQUEST_METHOD_HEAD; else if ([method isEqual: @"POST"]) _method = OF_HTTP_REQUEST_METHOD_POST; else if ([method isEqual: @"PUT"]) _method = OF_HTTP_REQUEST_METHOD_PUT; else if ([method isEqual: @"DELETE"]) _method = OF_HTTP_REQUEST_METHOD_DELETE; else if ([method isEqual: @"TRACE"]) _method = OF_HTTP_REQUEST_METHOD_TRACE; else { [of_stderr writeFormat: @"%@: Invalid request method %@!\n", [OFApplication programName], method]; [OFApplication terminateWithStatus: 1]; } objc_autoreleasePoolPop(pool); } - (void)setProxy: (OFString*)proxy { @try { size_t pos = [proxy rangeOfString: @":" options: OF_STRING_SEARCH_BACKWARDS].location; |
︙ | ︙ | |||
156 157 158 159 160 161 162 | [OFApplication terminateWithStatus: 1]; } } - (void)applicationDidFinishLaunching { OFOptionsParser *optionsParser = | | > > > > > > | 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 | [OFApplication terminateWithStatus: 1]; } } - (void)applicationDidFinishLaunching { OFOptionsParser *optionsParser = [OFOptionsParser parserWithOptions: @"ce:hH:m:o:P:q"]; of_unichar_t option; while ((option = [optionsParser nextOption]) != '\0') { switch (option) { case 'c': _continue = true; break; case 'e': [self setEntity: [optionsParser argument]]; break; case 'h': help(of_stdout, true, 0); break; case 'H': [self addHeader: [optionsParser argument]]; break; case 'm': [self setMethod: [optionsParser argument]]; break; case 'o': [_outputPath release]; _outputPath = [[optionsParser argument] retain]; break; case 'P': [self setProxy: [optionsParser argument]]; break; |
︙ | ︙ | |||
347 348 349 350 351 352 353 354 355 356 357 358 359 360 | forKey: @"Range"]; } @catch (OFStatItemFailedException *e) { } } request = [OFHTTPRequest requestWithURL: URL]; [request setHeaders: clientHeaders]; @try { response = [_HTTPClient performRequest: request]; } @catch (OFAddressTranslationFailedException *e) { if (!_quiet) [of_stdout writeString: @"\n"]; | > > | 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 | forKey: @"Range"]; } @catch (OFStatItemFailedException *e) { } } request = [OFHTTPRequest requestWithURL: URL]; [request setHeaders: clientHeaders]; [request setMethod: _method]; [request setEntity: _entity]; @try { response = [_HTTPClient performRequest: request]; } @catch (OFAddressTranslationFailedException *e) { if (!_quiet) [of_stdout writeString: @"\n"]; |
︙ | ︙ |