diff options
| author | Carl Hetherington <cth@carlh.net> | 2026-01-04 19:26:21 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2026-01-04 20:35:11 +0100 |
| commit | bad8a0e8c7b24f16d3651bea76e20b698cb2d643 (patch) | |
| tree | 9fed80ec4d6188566715f1856dbb3ab1d8eb0e98 | |
| parent | 8e7a736467d6f8692c42c614430e37c416b58ac4 (diff) | |
Extract Barco certificate download code to lib/
| -rw-r--r-- | src/lib/download_certificate.cc | 23 | ||||
| -rw-r--r-- | src/lib/download_certificate.h | 1 | ||||
| -rw-r--r-- | src/wx/barco_alchemy_certificate_panel.cc | 15 |
3 files changed, 27 insertions, 12 deletions
diff --git a/src/lib/download_certificate.cc b/src/lib/download_certificate.cc index d9560f6a2..505fa095d 100644 --- a/src/lib/download_certificate.cc +++ b/src/lib/download_certificate.cc @@ -53,12 +53,35 @@ download_gdc_certificate(string const& serial) } +static +pair<dcp::Certificate, string> +download_barco_certificate(string const& serial) +{ + string const url = fmt::format( + "sftp://{}:{}@certificates.barco.com/{}xxx/{}/Barco-ICMP.{}_cert.pem", + Config::instance()->barco_username().get(), + Config::instance()->barco_password().get(), + serial.substr(0, 7), + serial, + serial + ); + + try { + return { dcp::Certificate(get_from_url(url, true, false).as_string()), url }; + } catch (dcp::MiscError& e) { + throw CertificateDownloadError(fmt::format(_("Could not read certificate file ({})"), e.what())); + } +} + + pair<dcp::Certificate, string> download_certificate(Manufacturer manufacturer, string const& serial) { switch (manufacturer) { case Manufacturer::GDC: return download_gdc_certificate(serial); + case Manufacturer::BARCO: + return download_barco_certificate(serial); } return {}; diff --git a/src/lib/download_certificate.h b/src/lib/download_certificate.h index 98998ab4f..988b62138 100644 --- a/src/lib/download_certificate.h +++ b/src/lib/download_certificate.h @@ -25,6 +25,7 @@ enum class Manufacturer { GDC, + BARCO, }; diff --git a/src/wx/barco_alchemy_certificate_panel.cc b/src/wx/barco_alchemy_certificate_panel.cc index e73ab73da..014812e82 100644 --- a/src/wx/barco_alchemy_certificate_panel.cc +++ b/src/wx/barco_alchemy_certificate_panel.cc @@ -22,6 +22,7 @@ #include "barco_alchemy_certificate_panel.h" #include "download_certificate_dialog.h" #include "wx_util.h" +#include "lib/download_certificate.h" #include "lib/internet.h" #include "lib/config.h" #include <boost/algorithm/string.hpp> @@ -55,24 +56,14 @@ BarcoAlchemyCertificatePanel::ready_to_download() const return CredentialsDownloadCertificatePanel::ready_to_download() && _serial->GetValue().Length() == 10; } + void BarcoAlchemyCertificatePanel::do_download() { string serial = wx_to_std(_serial->GetValue()); trim(serial); - string url = fmt::format( - "sftp://{}:{}@certificates.barco.com/{}xxx/{}/Barco-ICMP.{}_cert.pem", - Config::instance()->barco_username().get(), - Config::instance()->barco_password().get(), - serial.substr(0, 7), - serial, - serial - ); - trim(url); - try { - auto data = get_from_url(url, true, false); - load_certificate(data, url); + std::tie(_certificate, _url) = download_certificate(Manufacturer::BARCO, serial); _dialog->message()->SetLabel(_("Certificate downloaded")); _dialog->setup_sensitivity(); } catch (std::exception& e) { |
