#include <stdio.h>
#include <stdlib.h>
#include <libidav/utils.h>
#include "error.h"
void print_resource_error(DavSession *sn,
const char *path) {
print_resource_error_to_file(stderr, sn, path);
}
void print_resource_error_to_file(
FILE *file, DavSession *sn,
const char *path) {
char *res_url = util_concat_path(sn->base_url, path);
switch(sn->error) {
default: {
fprintf(file,
"Operation failed for resource %s.\n", res_url);
if(sn->errorstr) {
fprintf(file,
"%s\n", sn->errorstr);
}
break;
}
case DAV_NOT_FOUND: {
fprintf(file,
"Resource %s not found.\n", res_url);
break;
}
case DAV_UNAUTHORIZED: {
fprintf(file,
"Authentication required.\n");
break;
}
case DAV_PROXY_AUTH_REQUIRED: {
fprintf(file,
"Proxy authentication required.\n");
break;
}
case DAV_NET_AUTH_REQUIRED: {
fprintf(file,
"Network authentication required.\n");
break;
}
case DAV_FORBIDDEN: {
fprintf(file,
"Access forbidden.\n");
break;
}
case DAV_METHOD_NOT_ALLOWED: {
fprintf(file,
"Method not allowed.\n");
break;
}
case DAV_CONFLICT: {
fprintf(
stderr,
"Missing intermediate collections for resource %s.\n",
res_url);
break;
}
case DAV_LOCKED: {
fprintf(
stderr,
"Resource is locked.\n");
break;
}
case DAV_UNSUPPORTED_PROTOCOL: {
fprintf(file,
"Unsupported protocol.\n");
if(sn->errorstr) {
fprintf(file,
"%s\n", sn->errorstr);
}
break;
}
case DAV_COULDNT_RESOLVE_PROXY: {
fprintf(file,
"Cannot resolve proxy host.\n");
break;
}
case DAV_COULDNT_RESOLVE_HOST: {
fprintf(file,
"Cannot resolve host name.\n");
break;
}
case DAV_COULDNT_CONNECT: {
fprintf(file,
"Cannot connect to host.\n");
break;
}
case DAV_TIMEOUT: {
fprintf(file,
"Operation timed out.\n");
break;
}
case DAV_SSL_ERROR: {
fprintf(file,
"SSL error.\n");
if(sn->errorstr) {
fprintf(file,
"%s\n", sn->errorstr);
}
break;
}
case DAV_CONTENT_VERIFICATION_ERROR: {
fprintf(
file,
"Content checksum verification failed for resource %s.\n",
res_url);
break;
}
case DAV_REQUEST_ENTITY_TOO_LARGE: {
fprintf(file,
"Request entity too large.\n");
break;
}
case DAV_REQUEST_URL_TOO_LONG: {
fprintf(file,
"Request URL too long.\n");
break;
}
}
free(res_url);
}