Mercurial > hg > orthanc
comparison OrthancServer/OrthancRestApi.cpp @ 436:d51186bf7602
read access to metadata
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 15 May 2013 16:28:00 +0200 |
parents | ccf3a0a43dac |
children | beca6747945e |
comparison
equal
deleted
inserted
replaced
435:28ba73274919 | 436:d51186bf7602 |
---|---|
1495 ResourceType_Patient, call); | 1495 ResourceType_Patient, call); |
1496 } | 1496 } |
1497 } | 1497 } |
1498 | 1498 |
1499 | 1499 |
1500 // Handling of metadata ----------------------------------------------------- | |
1501 | |
1502 template <enum ResourceType resourceType> | |
1503 static void ListMetadata(RestApi::GetCall& call) | |
1504 { | |
1505 RETRIEVE_CONTEXT(call); | |
1506 | |
1507 std::string publicId = call.GetUriComponent("id", ""); | |
1508 std::list<MetadataType> metadata; | |
1509 if (context.GetIndex().ListAvailableMetadata(metadata, publicId)) | |
1510 { | |
1511 Json::Value result = Json::arrayValue; | |
1512 | |
1513 for (std::list<MetadataType>::const_iterator | |
1514 it = metadata.begin(); it != metadata.end(); it++) | |
1515 { | |
1516 result.append(EnumerationToString(*it)); | |
1517 } | |
1518 | |
1519 call.GetOutput().AnswerJson(result); | |
1520 } | |
1521 } | |
1522 | |
1523 | |
1524 template <enum ResourceType resourceType> | |
1525 static void GetMetadata(RestApi::GetCall& call) | |
1526 { | |
1527 RETRIEVE_CONTEXT(call); | |
1528 | |
1529 std::string publicId = call.GetUriComponent("id", ""); | |
1530 std::string name = call.GetUriComponent("name", ""); | |
1531 MetadataType metadata = StringToMetadata(name); | |
1532 | |
1533 std::string value; | |
1534 if (context.GetIndex().LookupMetadata(value, publicId, metadata)) | |
1535 { | |
1536 call.GetOutput().AnswerBuffer(value, "text/plain"); | |
1537 } | |
1538 } | |
1539 | |
1500 | 1540 |
1501 // Registration of the various REST handlers -------------------------------- | 1541 // Registration of the various REST handlers -------------------------------- |
1502 | 1542 |
1503 OrthancRestApi::OrthancRestApi(ServerContext& context) : | 1543 OrthancRestApi::OrthancRestApi(ServerContext& context) : |
1504 context_(context) | 1544 context_(context) |
1530 | 1570 |
1531 Register("/patients/{id}/archive", GetArchive<ResourceType_Patient>); | 1571 Register("/patients/{id}/archive", GetArchive<ResourceType_Patient>); |
1532 Register("/studies/{id}/archive", GetArchive<ResourceType_Study>); | 1572 Register("/studies/{id}/archive", GetArchive<ResourceType_Study>); |
1533 Register("/series/{id}/archive", GetArchive<ResourceType_Series>); | 1573 Register("/series/{id}/archive", GetArchive<ResourceType_Series>); |
1534 | 1574 |
1575 Register("/instances/{id}/metadata", ListMetadata<ResourceType_Instance>); | |
1576 Register("/instances/{id}/metadata/{name}", GetMetadata<ResourceType_Instance>); | |
1577 Register("/patients/{id}/metadata", ListMetadata<ResourceType_Patient>); | |
1578 Register("/patients/{id}/metadata/{name}", GetMetadata<ResourceType_Patient>); | |
1579 Register("/series/{id}/metadata", ListMetadata<ResourceType_Series>); | |
1580 Register("/series/{id}/metadata/{name}", GetMetadata<ResourceType_Series>); | |
1581 Register("/studies/{id}/metadata", ListMetadata<ResourceType_Study>); | |
1582 Register("/studies/{id}/metadata/{name}", GetMetadata<ResourceType_Study>); | |
1583 | |
1535 Register("/patients/{id}/protected", IsProtectedPatient); | 1584 Register("/patients/{id}/protected", IsProtectedPatient); |
1536 Register("/patients/{id}/protected", SetPatientProtection); | 1585 Register("/patients/{id}/protected", SetPatientProtection); |
1537 Register("/instances/{id}/file", GetInstanceFile); | 1586 Register("/instances/{id}/file", GetInstanceFile); |
1538 Register("/instances/{id}/tags", GetInstanceTags<false>); | 1587 Register("/instances/{id}/tags", GetInstanceTags<false>); |
1539 Register("/instances/{id}/simplified-tags", GetInstanceTags<true>); | 1588 Register("/instances/{id}/simplified-tags", GetInstanceTags<true>); |