~ubuntu-branches/ubuntu/wily/davix/wily

« back to all changes in this revision

Viewing changes to src/fileops/davmeta.cpp

  • Committer: Package Import Robot
  • Author(s): Mattias Ellert
  • Date: 2014-10-23 16:02:47 UTC
  • mfrom: (5.1.1 sid)
  • Revision ID: package-import@ubuntu.com-20141023160247-izv1acuq0bcfv3qn
Tags: 0.3.6-1
Update to version 0.3.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
72
72
        TRY_DAVIX{
73
73
            const char * res = req_webdav_propfind(&req, &tmp_err);
74
74
            if(!tmp_err){
75
 
               parser.parseChuck((const char*) res, strlen(res));
 
75
               parser.parseChunk((const char*) res, strlen(res));
76
76
 
77
77
                std::deque<FileProperties> & props = parser.getProperties();
78
78
                if( props.size() < 1){
79
79
                    throw DavixException(davix_scope_stat_str(), Davix::StatusCode::WebDavPropertiesParsingError, "Parsing Error : properties number < 1");
80
80
                }else{
81
 
                    fill_fileinfo_from_fileproperties( props.front(), st_info);
 
81
                    st_info = props.front().info;
82
82
                    ret =0;
83
83
                }
84
84
            }
108
108
                st_info.mode = 0755 | S_IFREG;
109
109
                ret = 0;
110
110
            }else{
111
 
                httpcodeToDavixCode(req.getRequestCode(), davix_scope_http_request(), uri.getString() , &tmp_err);
 
111
                httpcodeToDavixError(req.getRequestCode(), davix_scope_http_request(), uri.getString() , &tmp_err);
112
112
                ret = -1;
113
113
            }
114
114
        }
137
137
    return ret;
138
138
}
139
139
 
 
140
void parse_creation_deletion_result(int code, const Uri & u, const std::string & scope, const std::string & msg){
 
141
    switch(code){
 
142
        case 200:
 
143
        case 201:
 
144
        case 202:
 
145
        case 204:{
 
146
                return;
 
147
        }
 
148
        case 207:{
 
149
            // parse webdav
 
150
            DavPropXMLParser parser;
 
151
            parser.parseChunk(msg);
 
152
            if( parser.getProperties().size() > 0){
 
153
               const int sub_code = parser.getProperties().at(0).req_status;
 
154
               if(httpcodeIsValid(sub_code) == false){
 
155
                   httpcodeToDavixException(sub_code, scope);
 
156
               }
 
157
               return;
 
158
            }
 
159
            // if no properties, properties were filtered because invalid
 
160
            httpcodeToDavixException(404, scope);
 
161
            break;
 
162
        }
 
163
    }
 
164
    httpcodeToDavixException(code, scope);
 
165
}
 
166
 
 
167
 
140
168
int internal_deleteResource(Context & c, const Uri & url, const RequestParams & params, DavixError** err){
141
169
    DavixError* tmp_err=NULL;
142
170
    int ret=-1;
146
174
    DeleteRequest req(c,url, err);
147
175
    req.setParameters(_params);
148
176
    if(!tmp_err){
149
 
        ret=req.executeRequest(&tmp_err);
150
 
        if(!tmp_err && httpcodeIsValid(req.getRequestCode()) == false){
151
 
                httpcodeToDavixCode(req.getRequestCode(), davix_scope_stat_str(), url.getString() , &tmp_err);
152
 
                ret = -1;
 
177
         if( ( ret=req.executeRequest(&tmp_err)) == 0){
 
178
                parse_creation_deletion_result(req.getRequestCode(), url, davix_scope_rm_str(), req.getAnswerContent());
153
179
         }
154
180
    }
155
181
 
172
198
        req.setParameters(params);
173
199
        req.setRequestMethod("MKCOL");
174
200
        if( (ret = req.executeRequest(&tmp_err)) == 0){
175
 
            ret = davixRequestToFileStatus(&req, davix_scope_mkdir_str(), &tmp_err);
 
201
                parse_creation_deletion_result(req.getRequestCode(),  url, davix_scope_mkdir_str(), req.getAnswerContent());
176
202
        }
177
203
 
178
204
        DAVIX_DEBUG(" makeCollection <-");