comparison OrthancServer/OrthancRestApi.cpp @ 437:beca6747945e

PUT on metadata
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 15 May 2013 16:43:30 +0200
parents d51186bf7602
children 7bbe77cb9e12
comparison
equal deleted inserted replaced
436:d51186bf7602 437:beca6747945e
1497 } 1497 }
1498 1498
1499 1499
1500 // Handling of metadata ----------------------------------------------------- 1500 // Handling of metadata -----------------------------------------------------
1501 1501
1502 template <enum ResourceType resourceType>
1503 static void ListMetadata(RestApi::GetCall& call) 1502 static void ListMetadata(RestApi::GetCall& call)
1504 { 1503 {
1505 RETRIEVE_CONTEXT(call); 1504 RETRIEVE_CONTEXT(call);
1506 1505
1507 std::string publicId = call.GetUriComponent("id", ""); 1506 std::string publicId = call.GetUriComponent("id", "");
1519 call.GetOutput().AnswerJson(result); 1518 call.GetOutput().AnswerJson(result);
1520 } 1519 }
1521 } 1520 }
1522 1521
1523 1522
1524 template <enum ResourceType resourceType>
1525 static void GetMetadata(RestApi::GetCall& call) 1523 static void GetMetadata(RestApi::GetCall& call)
1526 { 1524 {
1527 RETRIEVE_CONTEXT(call); 1525 RETRIEVE_CONTEXT(call);
1528 1526
1529 std::string publicId = call.GetUriComponent("id", ""); 1527 std::string publicId = call.GetUriComponent("id", "");
1534 if (context.GetIndex().LookupMetadata(value, publicId, metadata)) 1532 if (context.GetIndex().LookupMetadata(value, publicId, metadata))
1535 { 1533 {
1536 call.GetOutput().AnswerBuffer(value, "text/plain"); 1534 call.GetOutput().AnswerBuffer(value, "text/plain");
1537 } 1535 }
1538 } 1536 }
1537
1538
1539 static void SetMetadata(RestApi::PutCall& call)
1540 {
1541 RETRIEVE_CONTEXT(call);
1542
1543 std::string publicId = call.GetUriComponent("id", "");
1544 std::string name = call.GetUriComponent("name", "");
1545 MetadataType metadata = StringToMetadata(name);
1546 std::string value = call.GetPutBody();
1547
1548 if (metadata >= MetadataType_StartUser &&
1549 metadata <= MetadataType_EndUser)
1550 {
1551 // It is forbidden to modify internal metadata
1552 context.GetIndex().SetMetadata(publicId, metadata, value);
1553 call.GetOutput().AnswerBuffer("", "text/plain");
1554 }
1555 }
1556
1539 1557
1540 1558
1541 // Registration of the various REST handlers -------------------------------- 1559 // Registration of the various REST handlers --------------------------------
1542 1560
1543 OrthancRestApi::OrthancRestApi(ServerContext& context) : 1561 OrthancRestApi::OrthancRestApi(ServerContext& context) :
1570 1588
1571 Register("/patients/{id}/archive", GetArchive<ResourceType_Patient>); 1589 Register("/patients/{id}/archive", GetArchive<ResourceType_Patient>);
1572 Register("/studies/{id}/archive", GetArchive<ResourceType_Study>); 1590 Register("/studies/{id}/archive", GetArchive<ResourceType_Study>);
1573 Register("/series/{id}/archive", GetArchive<ResourceType_Series>); 1591 Register("/series/{id}/archive", GetArchive<ResourceType_Series>);
1574 1592
1575 Register("/instances/{id}/metadata", ListMetadata<ResourceType_Instance>); 1593 Register("/instances/{id}/metadata", ListMetadata);
1576 Register("/instances/{id}/metadata/{name}", GetMetadata<ResourceType_Instance>); 1594 Register("/instances/{id}/metadata/{name}", GetMetadata);
1577 Register("/patients/{id}/metadata", ListMetadata<ResourceType_Patient>); 1595 Register("/instances/{id}/metadata/{name}", SetMetadata);
1578 Register("/patients/{id}/metadata/{name}", GetMetadata<ResourceType_Patient>); 1596 Register("/patients/{id}/metadata", ListMetadata);
1579 Register("/series/{id}/metadata", ListMetadata<ResourceType_Series>); 1597 Register("/patients/{id}/metadata/{name}", GetMetadata);
1580 Register("/series/{id}/metadata/{name}", GetMetadata<ResourceType_Series>); 1598 Register("/patients/{id}/metadata/{name}", SetMetadata);
1581 Register("/studies/{id}/metadata", ListMetadata<ResourceType_Study>); 1599 Register("/series/{id}/metadata", ListMetadata);
1582 Register("/studies/{id}/metadata/{name}", GetMetadata<ResourceType_Study>); 1600 Register("/series/{id}/metadata/{name}", GetMetadata);
1601 Register("/series/{id}/metadata/{name}", SetMetadata);
1602 Register("/studies/{id}/metadata", ListMetadata);
1603 Register("/studies/{id}/metadata/{name}", GetMetadata);
1604 Register("/studies/{id}/metadata/{name}", SetMetadata);
1583 1605
1584 Register("/patients/{id}/protected", IsProtectedPatient); 1606 Register("/patients/{id}/protected", IsProtectedPatient);
1585 Register("/patients/{id}/protected", SetPatientProtection); 1607 Register("/patients/{id}/protected", SetPatientProtection);
1586 Register("/instances/{id}/file", GetInstanceFile); 1608 Register("/instances/{id}/file", GetInstanceFile);
1587 Register("/instances/{id}/tags", GetInstanceTags<false>); 1609 Register("/instances/{id}/tags", GetInstanceTags<false>);