1*8590a0fdSAndre Fischer /**************************************************************
2*8590a0fdSAndre Fischer  *
3*8590a0fdSAndre Fischer  * Licensed to the Apache Software Foundation (ASF) under one
4*8590a0fdSAndre Fischer  * or more contributor license agreements.  See the NOTICE file
5*8590a0fdSAndre Fischer  * distributed with this work for additional information
6*8590a0fdSAndre Fischer  * regarding copyright ownership.  The ASF licenses this file
7*8590a0fdSAndre Fischer  * to you under the Apache License, Version 2.0 (the
8*8590a0fdSAndre Fischer  * "License"); you may not use this file except in compliance
9*8590a0fdSAndre Fischer  * with the License.  You may obtain a copy of the License at
10*8590a0fdSAndre Fischer  *
11*8590a0fdSAndre Fischer  *   http://www.apache.org/licenses/LICENSE-2.0
12*8590a0fdSAndre Fischer  *
13*8590a0fdSAndre Fischer  * Unless required by applicable law or agreed to in writing,
14*8590a0fdSAndre Fischer  * software distributed under the License is distributed on an
15*8590a0fdSAndre Fischer  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*8590a0fdSAndre Fischer  * KIND, either express or implied.  See the License for the
17*8590a0fdSAndre Fischer  * specific language governing permissions and limitations
18*8590a0fdSAndre Fischer  * under the License.
19*8590a0fdSAndre Fischer  *
20*8590a0fdSAndre Fischer  *************************************************************/
21*8590a0fdSAndre Fischer 
22*8590a0fdSAndre Fischer // MARKER(update_precomp.py): autogen include statement, do not remove
23*8590a0fdSAndre Fischer #include "precompiled_ucb.hxx"
24*8590a0fdSAndre Fischer 
25*8590a0fdSAndre Fischer #include <SerfCallbacks.hxx>
26*8590a0fdSAndre Fischer 
27*8590a0fdSAndre Fischer #include <SerfSession.hxx>
28*8590a0fdSAndre Fischer #include <SerfRequestProcessor.hxx>
29*8590a0fdSAndre Fischer 
30*8590a0fdSAndre Fischer using namespace http_dav_ucp;
31*8590a0fdSAndre Fischer 
32*8590a0fdSAndre Fischer extern "C" apr_status_t Serf_ConnectSetup( apr_socket_t *skt,
33*8590a0fdSAndre Fischer                                            serf_bucket_t **read_bkt,
34*8590a0fdSAndre Fischer                                            serf_bucket_t **write_bkt,
35*8590a0fdSAndre Fischer                                            void *setup_baton,
36*8590a0fdSAndre Fischer                                            apr_pool_t *pool )
37*8590a0fdSAndre Fischer {
38*8590a0fdSAndre Fischer     SerfSession* pSerfSession = static_cast< SerfSession* >( setup_baton );
39*8590a0fdSAndre Fischer     return pSerfSession->setupSerfConnection( skt,
40*8590a0fdSAndre Fischer                                               read_bkt,
41*8590a0fdSAndre Fischer                                               write_bkt,
42*8590a0fdSAndre Fischer                                               pool );
43*8590a0fdSAndre Fischer }
44*8590a0fdSAndre Fischer 
45*8590a0fdSAndre Fischer extern "C" apr_status_t Serf_Credentials( char **username,
46*8590a0fdSAndre Fischer                                           char **password,
47*8590a0fdSAndre Fischer                                           serf_request_t *request,
48*8590a0fdSAndre Fischer                                           void *baton,
49*8590a0fdSAndre Fischer                                           int code,
50*8590a0fdSAndre Fischer                                           const char *authn_type,
51*8590a0fdSAndre Fischer                                           const char *realm,
52*8590a0fdSAndre Fischer                                           apr_pool_t *pool )
53*8590a0fdSAndre Fischer {
54*8590a0fdSAndre Fischer     SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( baton );
55*8590a0fdSAndre Fischer     return pReqProc->provideSerfCredentials( username,
56*8590a0fdSAndre Fischer                                              password,
57*8590a0fdSAndre Fischer                                              request,
58*8590a0fdSAndre Fischer                                              code,
59*8590a0fdSAndre Fischer                                              authn_type,
60*8590a0fdSAndre Fischer                                              realm,
61*8590a0fdSAndre Fischer                                              pool );
62*8590a0fdSAndre Fischer }
63*8590a0fdSAndre Fischer 
64*8590a0fdSAndre Fischer extern "C" apr_status_t Serf_CertificationValidation( void *data,
65*8590a0fdSAndre Fischer                                                       int failures,
66*8590a0fdSAndre Fischer                                                       const serf_ssl_certificate_t *cert )
67*8590a0fdSAndre Fischer {
68*8590a0fdSAndre Fischer     SerfSession* pSerfSession = static_cast< SerfSession* >( data );
69*8590a0fdSAndre Fischer     return pSerfSession->verifySerfCertificate( failures,
70*8590a0fdSAndre Fischer                                                 cert );
71*8590a0fdSAndre Fischer }
72*8590a0fdSAndre Fischer 
73*8590a0fdSAndre Fischer extern "C" apr_status_t Serf_SetupRequest( serf_request_t *request,
74*8590a0fdSAndre Fischer                                            void *setup_baton,
75*8590a0fdSAndre Fischer                                            serf_bucket_t **req_bkt,
76*8590a0fdSAndre Fischer                                            serf_response_acceptor_t *acceptor,
77*8590a0fdSAndre Fischer                                            void **acceptor_baton,
78*8590a0fdSAndre Fischer                                            serf_response_handler_t *handler,
79*8590a0fdSAndre Fischer                                            void **handler_baton,
80*8590a0fdSAndre Fischer                                            apr_pool_t * pool )
81*8590a0fdSAndre Fischer {
82*8590a0fdSAndre Fischer     SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( setup_baton );
83*8590a0fdSAndre Fischer     return pReqProc->setupSerfRequest( request,
84*8590a0fdSAndre Fischer                                        req_bkt,
85*8590a0fdSAndre Fischer                                        acceptor,
86*8590a0fdSAndre Fischer                                        acceptor_baton,
87*8590a0fdSAndre Fischer                                        handler,
88*8590a0fdSAndre Fischer                                        handler_baton,
89*8590a0fdSAndre Fischer                                        pool );
90*8590a0fdSAndre Fischer }
91*8590a0fdSAndre Fischer 
92*8590a0fdSAndre Fischer extern "C" serf_bucket_t* Serf_AcceptResponse( serf_request_t *request,
93*8590a0fdSAndre Fischer                                                serf_bucket_t *stream,
94*8590a0fdSAndre Fischer                                                void *acceptor_baton,
95*8590a0fdSAndre Fischer                                                apr_pool_t *pool )
96*8590a0fdSAndre Fischer {
97*8590a0fdSAndre Fischer     SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( acceptor_baton );
98*8590a0fdSAndre Fischer     return pReqProc->acceptSerfResponse( request,
99*8590a0fdSAndre Fischer                                          stream,
100*8590a0fdSAndre Fischer                                          pool );
101*8590a0fdSAndre Fischer }
102*8590a0fdSAndre Fischer 
103*8590a0fdSAndre Fischer extern "C" apr_status_t Serf_HandleResponse( serf_request_t *request,
104*8590a0fdSAndre Fischer                                              serf_bucket_t *response,
105*8590a0fdSAndre Fischer                                              void *handler_baton,
106*8590a0fdSAndre Fischer                                              apr_pool_t *pool )
107*8590a0fdSAndre Fischer {
108*8590a0fdSAndre Fischer     SerfRequestProcessor* pReqProc = static_cast< SerfRequestProcessor* >( handler_baton );
109*8590a0fdSAndre Fischer     return pReqProc->handleSerfResponse( request,
110*8590a0fdSAndre Fischer                                          response,
111*8590a0fdSAndre Fischer                                          pool );
112*8590a0fdSAndre Fischer }
113*8590a0fdSAndre Fischer 
114