@@ -39,26 +39,32 @@ * @brief A callback which is called when an OFHTTPClient performed a request. * * @param client The OFHTTPClient which performed the request * @param request The request the OFHTTPClient performed * @param response The response to the request performed + * @param context The context object that was passed to + * @ref asyncPerformRequest:context: */ - (void)client: (OFHTTPClient *)client didPerformRequest: (OFHTTPRequest *)request - response: (OFHTTPResponse *)response; + response: (OFHTTPResponse *)response + context: (nullable id)context; /*! * @brief A callback which is called when an OFHTTPClient encountered an * exception while performing a request. * * @param client The client which encountered an exception * @param exception The exception the client encountered * @param request The request during which the client encountered the exception + * @param context The context object that was passed to + * @ref asyncPerformRequest:context: */ - (void)client: (OFHTTPClient *)client didEncounterException: (id)exception - forRequest: (OFHTTPRequest *)request; + forRequest: (OFHTTPRequest *)request + context: (nullable id)context; @optional /*! * @brief A callback which is called when an OFHTTPClient creates a socket. * @@ -68,28 +74,34 @@ * proxy it should use for this connection. * * @param client The OFHTTPClient that created a socket * @param socket The socket created by the OFHTTPClient * @param request The request for which the socket was created + * @param context The context object that was passed to + * @ref asyncPerformRequest:context: */ - (void)client: (OFHTTPClient *)client didCreateSocket: (OF_KINDOF(OFTCPSocket *))socket - forRequest: (OFHTTPRequest *)request; + forRequest: (OFHTTPRequest *)request + context: (nullable id)context; /*! * @brief A callback which is called when an OFHTTPClient received headers. * * @param client The OFHTTPClient which received the headers * @param headers The headers received * @param statusCode The status code received * @param request The request for which the headers and status code have been * received + * @param context The context object that was passed to + * @ref asyncPerformRequest:context: */ - (void)client: (OFHTTPClient *)client didReceiveHeaders: (OFDictionary OF_GENERIC(OFString *, OFString *) *)headers statusCode: (int)statusCode - request: (OFHTTPRequest *)request; + request: (OFHTTPRequest *)request + context: (nullable id)context; /*! * @brief A callback which is called when an OFHTTPClient wants to follow a * redirect. * @@ -109,17 +121,20 @@ * You are allowed to change the request's headers from this * callback and they will be used when following the redirect * (e.g. to set the cookies for the new URL), however, keep in * mind that this will change the request you originally passed. * @param response The response indicating the redirect + * @param context The context object that was passed to + * @ref asyncPerformRequest:context: * @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; + response: (OFHTTPResponse *)response + context: (nullable id)context; @end /*! * @class OFHTTPClient OFHTTPClient.h ObjFW/OFHTTPClient.h * @@ -156,26 +171,32 @@ */ + (instancetype)client; /*! * @brief Asynchronously performs the specified HTTP request. + * + * @param request The request to perform + * @param context A context object to be passed to the delegate */ -- (void)asyncPerformRequest: (OFHTTPRequest *)request; +- (void)asyncPerformRequest: (OFHTTPRequest *)request + context: (nullable id)context; /*! * @brief Asynchronously performs the specified HTTP request. * * @param request The request to perform * @param redirects The maximum number of redirects after which no further * attempt is done to follow the redirect, but instead the * redirect is treated as an OFHTTPResponse + * @param context A context object to be passed to the delegate */ - (void)asyncPerformRequest: (OFHTTPRequest *)request - redirects: (unsigned int)redirects; + redirects: (unsigned int)redirects + context: (nullable id)context; /*! * @brief Closes connections that are still open due to keep-alive. */ - (void)close; @end OF_ASSUME_NONNULL_END