comparison OrthancServer/OrthancInitialization.cpp @ 1772:53e045b5a8ec

MIME content type can be associated to custom attachments (cf. "UserContentType")
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 12 Nov 2015 14:36:27 +0100
parents 57b9e6890482
children 0001f8cd7849
comparison
equal deleted inserted replaced
1771:8790488ae98b 1772:53e045b5a8ec
250 const Json::Value& parameter = configuration_["UserMetadata"]; 250 const Json::Value& parameter = configuration_["UserMetadata"];
251 251
252 Json::Value::Members members = parameter.getMemberNames(); 252 Json::Value::Members members = parameter.getMemberNames();
253 for (size_t i = 0; i < members.size(); i++) 253 for (size_t i = 0; i < members.size(); i++)
254 { 254 {
255 std::string info = "\"" + members[i] + "\" = " + parameter[members[i]].toStyledString(); 255 const std::string& name = members[i];
256 LOG(INFO) << "Registering user-defined metadata: " << info; 256
257 257 if (!parameter[name].isInt())
258 if (!parameter[members[i]].asBool()) 258 {
259 { 259 LOG(ERROR) << "Not a number in this user-defined metadata: " << name;
260 LOG(ERROR) << "Not a number in this user-defined metadata: " << info;
261 throw OrthancException(ErrorCode_BadParameterType); 260 throw OrthancException(ErrorCode_BadParameterType);
262 } 261 }
263 262
264 int metadata = parameter[members[i]].asInt(); 263 int metadata = parameter[name].asInt();
264
265 LOG(INFO) << "Registering user-defined metadata: " << name << " (index "
266 << metadata << ")";
265 267
266 try 268 try
267 { 269 {
268 RegisterUserMetadata(metadata, members[i]); 270 RegisterUserMetadata(metadata, name);
269 } 271 }
270 catch (OrthancException&) 272 catch (OrthancException&)
271 { 273 {
272 LOG(ERROR) << "Cannot register this user-defined metadata: " << info; 274 LOG(ERROR) << "Cannot register this user-defined metadata: " << name;
273 throw; 275 throw;
274 } 276 }
275 } 277 }
276 } 278 }
277 } 279 }
284 const Json::Value& parameter = configuration_["UserContentType"]; 286 const Json::Value& parameter = configuration_["UserContentType"];
285 287
286 Json::Value::Members members = parameter.getMemberNames(); 288 Json::Value::Members members = parameter.getMemberNames();
287 for (size_t i = 0; i < members.size(); i++) 289 for (size_t i = 0; i < members.size(); i++)
288 { 290 {
289 std::string info = "\"" + members[i] + "\" = " + parameter[members[i]].toStyledString(); 291 const std::string& name = members[i];
290 LOG(INFO) << "Registering user-defined attachment type: " << info; 292 std::string mime = "application/octet-stream";
291 293
292 if (!parameter[members[i]].asBool()) 294 const Json::Value& value = parameter[name];
293 { 295 int contentType;
294 LOG(ERROR) << "Not a number in this user-defined attachment type: " << info; 296
297 if (value.isArray() &&
298 value.size() == 2 &&
299 value[0].isInt() &&
300 value[1].isString())
301 {
302 contentType = value[0].asInt();
303 mime = value[1].asString();
304 }
305 else if (value.isInt())
306 {
307 contentType = value.asInt();
308 }
309 else
310 {
311 LOG(ERROR) << "Not a number in this user-defined attachment type: " << name;
295 throw OrthancException(ErrorCode_BadParameterType); 312 throw OrthancException(ErrorCode_BadParameterType);
296 } 313 }
297 314
298 int contentType = parameter[members[i]].asInt(); 315 LOG(INFO) << "Registering user-defined attachment type: " << name << " (index "
316 << contentType << ") with MIME type \"" << mime << "\"";
299 317
300 try 318 try
301 { 319 {
302 RegisterUserContentType(contentType, members[i]); 320 RegisterUserContentType(contentType, name, mime);
303 } 321 }
304 catch (OrthancException&) 322 catch (OrthancException&)
305 { 323 {
306 LOG(ERROR) << "Cannot register this user-defined attachment type: " << info;
307 throw; 324 throw;
308 } 325 }
309 } 326 }
310 } 327 }
311 } 328 }