summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2025-05-01 20:49:21 +0200
committerCarl Hetherington <cth@carlh.net>2025-06-03 22:46:26 +0200
commit0d359b46b36aae30b3599c52764e9d972e6cc5ce (patch)
treec12a9b6172996483a72c92a29df29c8f602a5969 /src/lib
parent8e84a2e70cf228b91f089e7eec23fe8c7e334666 (diff)
Add to/from string conversion for FileTransferProtocol.
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/types.cc31
-rw-r--r--src/lib/types.h6
-rw-r--r--src/lib/upload_destination.cc4
3 files changed, 38 insertions, 3 deletions
diff --git a/src/lib/types.cc b/src/lib/types.cc
index 28d58f36b..46ec38361 100644
--- a/src/lib/types.cc
+++ b/src/lib/types.cc
@@ -75,7 +75,6 @@ CPLSummary::CPLSummary (boost::filesystem::path p)
}
-
ReelType
string_to_reel_type(string type)
{
@@ -111,3 +110,33 @@ reel_type_to_string(ReelType type)
DCPOMATIC_ASSERT(false);
return "single";
}
+
+
+FileTransferProtocol
+file_transfer_protocol_from_string(string s)
+{
+ if (s == "scp") {
+ return FileTransferProtocol::SCP;
+ } else if (s == "ftp") {
+ return FileTransferProtocol::FTP;
+ }
+
+ DCPOMATIC_ASSERT(false);
+ return FileTransferProtocol::SCP;
+}
+
+
+string
+file_transfer_protocol_to_string(FileTransferProtocol p)
+{
+ switch (p) {
+ case FileTransferProtocol::SCP:
+ return "scp";
+ case FileTransferProtocol::FTP:
+ return "ftp";
+ default:
+ DCPOMATIC_ASSERT(false);
+ }
+
+ return "";
+}
diff --git a/src/lib/types.h b/src/lib/types.h
index f6b0fb3be..9cc20d8b4 100644
--- a/src/lib/types.h
+++ b/src/lib/types.h
@@ -139,11 +139,17 @@ struct CPLSummary
time_t last_write_time;
};
+
enum class FileTransferProtocol {
SCP,
FTP
};
+
+FileTransferProtocol file_transfer_protocol_from_string(std::string s);
+std::string file_transfer_protocol_to_string(FileTransferProtocol p);
+
+
enum class EmailProtocol {
AUTO,
PLAIN,
diff --git a/src/lib/upload_destination.cc b/src/lib/upload_destination.cc
index 7acce968b..fe5a94eeb 100644
--- a/src/lib/upload_destination.cc
+++ b/src/lib/upload_destination.cc
@@ -25,7 +25,7 @@
UploadDestination::UploadDestination(cxml::ConstNodePtr node)
: name(node->string_child("Name"))
- , protocol(node->string_child("Protocol") == "SCP" ? FileTransferProtocol::SCP : FileTransferProtocol::FTP)
+ , protocol(file_transfer_protocol_from_string(node->string_child("Protocol")))
, passive_ftp(node->bool_child("PassiveFTP"))
, host(node->string_child("Host"))
, path(node->string_child("Path"))
@@ -40,7 +40,7 @@ void
UploadDestination::as_xml(xmlpp::Element* parent) const
{
cxml::add_text_child(parent, "Name", name);
- cxml::add_text_child(parent, "Protocol", protocol == FileTransferProtocol::SCP ? "SCP" : "FTP");
+ cxml::add_text_child(parent, "Protocol", file_transfer_protocol_to_string(protocol));
cxml::add_text_child(parent, "PassiveFTP", passive_ftp ? "1" : "0");
cxml::add_text_child(parent, "Host", host);
cxml::add_text_child(parent, "Path", path);