Overview
Comment: | OFHTTPClient: Add response to redirect delegate
This allows ofhttp to display all headers for the redirect in verbose |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
a509ab7e91b52e5b318bdd9322607052 |
User & Date: | js on 2016-08-21 14:09:57 |
Other Links: | manifest | tags |
Context
2016-08-28
| ||
10:12 | ofhttp: Add -f / --force to overwrite file check-in: 9a43c41721 user: js tags: trunk | |
2016-08-21
| ||
14:09 | OFHTTPClient: Add response to redirect delegate check-in: a509ab7e91 user: js tags: trunk | |
14:00 | OFURL: Do not URL decode and reencode parts check-in: 516517deb3 user: js tags: trunk | |
Changes
Modified src/OFHTTPClient.h from [c62fbae14a] to [bb02a1b9bf].
︙ | ︙ | |||
80 81 82 83 84 85 86 87 88 89 90 91 | * redirect. If the maximum number of redirects has been reached already, this * callback will not be called. * * @param client The OFHTTPClient which wants to follow a redirect * @param URL The URL to which it will follow a redirect * @param statusCode The status code for the redirection * @param request The request for which the OFHTTPClient wants to redirect * @return A boolean whether the OFHTTPClient should follow the redirect */ - (bool)client: (OFHTTPClient*)client shouldFollowRedirect: (OFURL*)URL statusCode: (int)statusCode | > | > | 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 | * redirect. If the maximum number of redirects has been reached already, this * callback will not be called. * * @param client The OFHTTPClient which wants to follow a redirect * @param URL The URL to which it will follow a redirect * @param statusCode The status code for the redirection * @param request The request for which the OFHTTPClient wants to redirect * @param response The response indicating the redirect * @return A boolean whether the OFHTTPClient should follow the redirect */ - (bool)client: (OFHTTPClient*)client shouldFollowRedirect: (OFURL*)URL statusCode: (int)statusCode request: (OFHTTPRequest*)request response: (OFHTTPResponse*)response; @end /*! * @class OFHTTPClient OFHTTPClient.h ObjFW/OFHTTPClient.h * * @brief A class for performing HTTP requests. */ |
︙ | ︙ |
Modified src/OFHTTPClient.m from [5d3409efa0] to [9433d07795].
︙ | ︙ | |||
614 615 616 617 618 619 620 | [redirect hasPrefix: @"https://"])) { OFURL *newURL; bool follow; newURL = [OFURL URLWithString: redirect relativeToURL: URL]; | | | | > | 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 | [redirect hasPrefix: @"https://"])) { OFURL *newURL; bool follow; newURL = [OFURL URLWithString: redirect relativeToURL: URL]; if ([_delegate respondsToSelector: @selector(client: shouldFollowRedirect:statusCode:request:response:)]) follow = [_delegate client: self shouldFollowRedirect: newURL statusCode: status request: request response: response]; else { /* * 301, 302 and 307 should only redirect with user * confirmation if the request method is not GET or * HEAD. Asking the delegate and getting true returned * is considered user confirmation. */ |
︙ | ︙ |
Modified utils/ofhttp/OFHTTP.m from [4bc226ed65] to [e8263f7476].
︙ | ︙ | |||
322 323 324 325 326 327 328 329 330 | afterDelay: 0]; } - (bool)client: (OFHTTPClient*)client shouldFollowRedirect: (OFURL*)URL statusCode: (int)statusCode request: (OFHTTPRequest*)request { if (!_quiet) | > | > > > > > > > > > > > > > > > > > > > | | 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 | afterDelay: 0]; } - (bool)client: (OFHTTPClient*)client shouldFollowRedirect: (OFURL*)URL statusCode: (int)statusCode request: (OFHTTPRequest*)request response: (OFHTTPResponse*)response { if (!_quiet) [of_stdout writeFormat: @" ➜ %d\n", statusCode]; if (_verbose) { void *pool = objc_autoreleasePoolPush(); OFDictionary OF_GENERIC(OFString*, OFString*) *headers = [response headers]; OFEnumerator *keyEnumerator = [headers keyEnumerator]; OFEnumerator *objectEnumerator = [headers objectEnumerator]; OFString *key, *object; while ((key = [keyEnumerator nextObject]) != nil && (object = [objectEnumerator nextObject]) != nil) [of_stdout writeFormat: @" %@: %@\n", key, object]; objc_autoreleasePoolPop(pool); } if (!_quiet) [of_stdout writeFormat: @"☇ %@", [URL string]]; return true; } - (OFHTTPResponse*)performRequest: (OFHTTPRequest*)request { OFHTTPResponse *response = nil; |
︙ | ︙ |