Mercurial > hg > orthanc
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>); |