bool StorePeerCommand::Apply(ListOfStrings& outputs, const ListOfStrings& inputs) { // Configure the HTTP client HttpClient client; client.SetProxy(Configuration::GetGlobalStringParameter("HttpProxy", "")); if (peer_.GetUsername().size() != 0 && peer_.GetPassword().size() != 0) { client.SetCredentials(peer_.GetUsername().c_str(), peer_.GetPassword().c_str()); } client.SetUrl(peer_.GetUrl() + "instances"); client.SetMethod(HttpMethod_Post); for (ListOfStrings::const_iterator it = inputs.begin(); it != inputs.end(); ++it) { LOG(INFO) << "Sending resource " << *it << " to peer \"" << peer_.GetUrl() << "\""; try { context_.ReadFile(client.AccessPostData(), *it, FileContentType_Dicom); std::string answer; if (!client.Apply(answer)) { LOG(ERROR) << "Unable to send resource " << *it << " to peer \"" << peer_.GetUrl() << "\""; throw OrthancException(ErrorCode_NetworkProtocol); } // Only chain with other commands if this command succeeds outputs.push_back(*it); } catch (OrthancException& e) { LOG(ERROR) << "Unable to forward to an Orthanc peer in a Lua script (instance " << *it << ", peer " << peer_.GetUrl() << "): " << e.What(); if (!ignoreExceptions_) { throw; } } } return true; }
const char *PropertySet::getPropertyName(int which) { ListOfStrings *propNames = (ListOfStrings *) propertyNameList; int i = 0; for (ListOfStrings::iterator itr = propNames->begin(); itr != propNames->end(); itr++, i++) { if (i == which) { std::string s = *itr; char *pc = new char[strlen(s.c_str())+1]; strcpy(pc, s.c_str()); return pc; } } return(NULL); }
bool DeleteInstanceCommand::Apply(ListOfStrings& outputs, const ListOfStrings& inputs) { for (ListOfStrings::const_iterator it = inputs.begin(); it != inputs.end(); ++it) { LOG(INFO) << "Deleting instance " << *it; try { Json::Value tmp; context_.DeleteResource(tmp, *it, ResourceType_Instance); } catch (OrthancException& e) { LOG(ERROR) << "Unable to delete instance " << *it << " in a Lua script: " << e.What(); } } return true; }
bool StoreScuCommand::Apply(ListOfStrings& outputs, const ListOfStrings& inputs) { ReusableDicomUserConnection::Locker locker(context_.GetReusableDicomUserConnection(), localAet_, modality_); for (ListOfStrings::const_iterator it = inputs.begin(); it != inputs.end(); ++it) { LOG(INFO) << "Sending resource " << *it << " to modality \"" << modality_.GetApplicationEntityTitle() << "\""; try { std::string dicom; context_.ReadFile(dicom, *it, FileContentType_Dicom); locker.GetConnection().Store(dicom, moveOriginatorID_); // Only chain with other commands if this command succeeds outputs.push_back(*it); } catch (OrthancException& e) { // Ignore transmission errors (e.g. if the remote modality is // powered off) LOG(ERROR) << "Unable to forward to a modality in a Lua script (instance " << *it << "): " << e.What(); if (!ignoreExceptions_) { throw; } } } return true; }