37 NULL, // opt_mkcol |
37 NULL, // opt_mkcol |
38 NULL, // opt_mkcol_finish |
38 NULL, // opt_mkcol_finish |
39 NULL, // opt_delete |
39 NULL, // opt_delete |
40 NULL, // opt_delete_finish |
40 NULL, // opt_delete_finish |
41 0, |
41 0, |
|
42 NULL, |
42 NULL |
43 NULL |
43 }; |
44 }; |
|
45 |
|
46 WebdavBackend* pg_webdav_create(Session *sn, Request *rq, pblock *pb) { |
|
47 // resourcepool is required |
|
48 char *resource_pool = pblock_findval("resourcepool", pb); |
|
49 if(!resource_pool) { |
|
50 log_ereport(LOG_MISCONFIG, "pg_webdav_create: missing resourcepool parameter"); |
|
51 return NULL; |
|
52 } |
|
53 |
|
54 // get the resource first (should only fail in case of misconfig) |
|
55 ResourceData *resdata = resourcepool_lookup(sn, rq, resource_pool, 0); |
|
56 if(!resdata) { |
|
57 log_ereport(LOG_MISCONFIG, "postgresql webdav: resource pool %s not found", resource_pool); |
|
58 return NULL; |
|
59 } |
|
60 |
|
61 return pg_webdav_create_from_resdata(sn, rq, resdata); |
|
62 } |
|
63 |
|
64 WebdavBackend* pg_webdav_create_from_resdata(Session *sn, Request *rq, ResourceData *resdata) { |
|
65 WebdavBackend *webdav = pool_malloc(sn->pool, sizeof(WebdavBackend)); |
|
66 if(!webdav) { |
|
67 return NULL; |
|
68 } |
|
69 *webdav = pg_webdav_backend; |
|
70 |
|
71 PgWebdavBackend *instance = pool_malloc(sn->pool, sizeof(PgWebdavBackend)); |
|
72 if(instance) { |
|
73 pool_free(sn->pool, webdav); |
|
74 return NULL; |
|
75 } |
|
76 webdav->instance = instance; |
|
77 |
|
78 instance->pg_resource = resdata; |
|
79 instance->connection = resdata->data; |
|
80 |
|
81 return webdav; |
|
82 } |
|
83 |
|
84 WebdavBackend* pg_webdav_prop_create(Session *sn, Request *rq, pblock *pb) { |
|
85 return NULL; |
|
86 } |
|
87 |
44 |
88 |
45 int pg_dav_propfind_init( |
89 int pg_dav_propfind_init( |
46 WebdavPropfindRequest *rq, |
90 WebdavPropfindRequest *rq, |
47 const char *path, |
91 const char *path, |
48 WebdavPList **outplist) |
92 WebdavPList **outplist) |