From 868ad2903c063f3f2242e1bf0648bca0985f49f5 Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Tue, 25 Feb 2020 10:45:18 +0100 Subject: [PATCH] fix SourceCredentials constructor --- .../asapo_authorizer/server/authorize_test.go | 82 +++++++++++++++++++ .../src/asapo_authorizer/server/server.go | 1 + common/cpp/include/common/data_structs.h | 9 +- .../api/cpp/unittests/test_consumer_api.cpp | 2 +- .../api/cpp/unittests/test_server_broker.cpp | 6 +- .../getnext_broker/getnext_broker.cpp | 2 +- examples/pipeline/in_to_out/in_to_out.cpp | 4 +- .../dummy_data_producer.cpp | 2 +- producer/api/cpp/unittests/test_producer.cpp | 10 +-- .../api/cpp/unittests/test_producer_impl.cpp | 6 +- producer/api/python/asapo_producer.pxd | 1 + .../src/main_eventmon.cpp | 2 +- .../consumer/consumer_api/consumer_api.cpp | 2 +- .../next_multithread_broker.cpp | 2 +- .../curl_httpclient_command.cpp | 2 +- .../send_recv_substreams.cpp | 4 +- .../beamtime_metadata/beamtime_metadata.cpp | 2 +- .../getlast_broker.cpp | 2 +- 18 files changed, 116 insertions(+), 25 deletions(-) diff --git a/authorizer/src/asapo_authorizer/server/authorize_test.go b/authorizer/src/asapo_authorizer/server/authorize_test.go index 350538d28..0192b1303 100644 --- a/authorizer/src/asapo_authorizer/server/authorize_test.go +++ b/authorizer/src/asapo_authorizer/server/authorize_test.go @@ -49,6 +49,7 @@ func doAuthorizeRequest(path string,buf string) *httptest.ResponseRecorder { } + var credTests = [] struct { request string cred SourceCredentials @@ -114,8 +115,13 @@ var authTests = [] struct { func TestAuthorizeWithToken(t *testing.T) { allowBeamlines([]beamtimeInfo{}) settings.RootBeamtimesFolder ="." + settings.CurrentBeamlinesFolder="." os.MkdirAll(filepath.Clean("tf/gpfs/bl1/2019/data/test"), os.ModePerm) + os.MkdirAll(filepath.Clean("p07/current"), os.ModePerm) + ioutil.WriteFile("p07/current/beamtime-metadata-11111111.json", []byte(beamtime_meta), 0644) + defer os.RemoveAll("tf") + defer os.RemoveAll("p07") for _, test := range authTests { request := makeRequest(authorizationRequest{test.beamtime_id+"%"+test.beamline+"%"+test.stream+"%"+test.token,"host"}) @@ -138,6 +144,82 @@ func TestAuthorizeWithToken(t *testing.T) { } +var beamtime_meta =` +{ +"applicant": { +"email": "test", +"institute": "test", +"lastname": "test", +"userId": "1234", +"username": "test" +}, +"beamline": "p07", +"beamline_alias": "P07", +"beamtimeId": "11111111", +"contact": "None", +"core-path": "/asap3/petra3/gpfs/p07/2020/data/11111111", +"event-end": "2020-03-03 09:00:00", +"event-start": "2020-03-02 09:00:00", +"facility": "PETRA III", +"generated": "2020-02-22 22:37:16", +"pi": { +"email": "test", +"institute": "test", +"lastname": "test", +"userId": "14", +"username": "test" +}, +"proposalId": "12345678", +"proposalType": "H", +"title": "In-House Research (P07)", +"unixId": "None", +"users": { +"door-db": [ +"test" +], +"special": [], +"unknown": [] +} +} +` + +var authBeamlineTests = [] struct { + beamtime_id string + beamline string + token string + status int + message string +}{ + {"11111111","p07", prepareToken("1111111"),http.StatusOK,"beamtime found"}, + {"11111111","p08", prepareToken("1111111"),http.StatusUnauthorized,"beamtime not found"}, +} +/* +func TestAuthorizeBeamline(t *testing.T) { + allowBeamlines([]beamtimeInfo{}) + settings.CurrentBeamlinesFolder="." + os.MkdirAll(filepath.Clean("p07/current"), os.ModePerm) + ioutil.WriteFile("p07/current/beamtime-metadata-11111111.json", []byte(beamtime_meta), 0644) + defer os.RemoveAll("p07") + + for _, test := range authTests { + request := makeRequest(authorizationRequest{"auto%"+test.beamline+"%%"+test.token,"host"}) + w := doAuthorizeRequest("/authorize",request) + + body, _ := ioutil.ReadAll(w.Body) + if test.status==http.StatusOK { + assert.Contains(t, string(body), test.beamtime_id, "") + assert.Contains(t, string(body), test.beamline, "") +// assert.Contains(t, string(body), "2019", "") + assert.Contains(t, string(body), "default", "") + } + + assert.Equal(t, test.status, w.Code, test.message) + } + + +} + +*/ func TestNotAuthorized(t *testing.T) { request := makeRequest(authorizationRequest{"any_id%%%","host"}) diff --git a/authorizer/src/asapo_authorizer/server/server.go b/authorizer/src/asapo_authorizer/server/server.go index e0785c8f3..69ddb2bd9 100644 --- a/authorizer/src/asapo_authorizer/server/server.go +++ b/authorizer/src/asapo_authorizer/server/server.go @@ -15,6 +15,7 @@ type serverSettings struct { LogLevel string IpBeamlineMappingFolder string RootBeamtimesFolder string + CurrentBeamlinesFolder string AlwaysAllowedBeamtimes []beamtimeInfo SecretFile string } diff --git a/common/cpp/include/common/data_structs.h b/common/cpp/include/common/data_structs.h index 59b2f3bae..459726c01 100644 --- a/common/cpp/include/common/data_structs.h +++ b/common/cpp/include/common/data_structs.h @@ -49,7 +49,14 @@ using SubDirList = std::vector<std::string>; struct SourceCredentials { - static const std::string kDefaultStream; + SourceCredentials(std::string beamtime,std::string beamline,std::string stream,std::string token): + beamtime_id{std::move(beamtime)}, + beamline{std::move(beamline)}, + stream{std::move(stream)}, + user_token{std::move(token)} + {}; + SourceCredentials(){}; + static const std::string kDefaultStream; static const std::string kDefaultBeamline; static const std::string kDefaultBeamtimeId; std::string beamtime_id; diff --git a/consumer/api/cpp/unittests/test_consumer_api.cpp b/consumer/api/cpp/unittests/test_consumer_api.cpp index 9b3037f7b..24b7c098c 100644 --- a/consumer/api/cpp/unittests/test_consumer_api.cpp +++ b/consumer/api/cpp/unittests/test_consumer_api.cpp @@ -27,7 +27,7 @@ class DataBrokerFactoryTests : public Test { TEST_F(DataBrokerFactoryTests, CreateServerDataSource) { - auto data_broker = DataBrokerFactory::CreateServerBroker("server", "path", asapo::SourceCredentials{"beamtime_id", "", "token"}, &error); + auto data_broker = DataBrokerFactory::CreateServerBroker("server", "path", asapo::SourceCredentials{"beamtime_id","", "", "token"}, &error); ASSERT_THAT(error, Eq(nullptr)); ASSERT_THAT(dynamic_cast<ServerDataBroker*>(data_broker.get()), Ne(nullptr)); diff --git a/consumer/api/cpp/unittests/test_server_broker.cpp b/consumer/api/cpp/unittests/test_server_broker.cpp index c5c239868..43b655997 100644 --- a/consumer/api/cpp/unittests/test_server_broker.cpp +++ b/consumer/api/cpp/unittests/test_server_broker.cpp @@ -44,7 +44,7 @@ namespace { TEST(FolderDataBroker, Constructor) { auto data_broker = - std::unique_ptr<ServerDataBroker> {new ServerDataBroker("test", "path", asapo::SourceCredentials{"beamtime_id", "", "token"})}; + std::unique_ptr<ServerDataBroker> {new ServerDataBroker("test", "path", asapo::SourceCredentials{"beamtime_id", "", "", "token"})}; ASSERT_THAT(dynamic_cast<asapo::SystemIO*>(data_broker->io__.get()), Ne(nullptr)); ASSERT_THAT(dynamic_cast<asapo::CurlHttpClient*>(data_broker->httpclient__.get()), Ne(nullptr)); ASSERT_THAT(dynamic_cast<asapo::TcpClient*>(data_broker->net_client__.get()), Ne(nullptr)); @@ -74,7 +74,7 @@ class ServerDataBrokerTests : public Test { std::string expected_next_substream = "nextsubstream"; void SetUp() override { data_broker = std::unique_ptr<ServerDataBroker> { - new ServerDataBroker(expected_server_uri, expected_path, asapo::SourceCredentials{"beamtime_id", expected_stream, expected_token}) + new ServerDataBroker(expected_server_uri, expected_path, asapo::SourceCredentials{"beamtime_id","", expected_stream, expected_token}) }; data_broker->io__ = std::unique_ptr<IO> {&mock_io}; data_broker->httpclient__ = std::unique_ptr<asapo::HttpClient> {&mock_http_client}; @@ -137,7 +137,7 @@ TEST_F(ServerDataBrokerTests, DefaultStreamIsDetector) { data_broker->httpclient__.release(); data_broker->net_client__.release(); data_broker = std::unique_ptr<ServerDataBroker> { - new ServerDataBroker(expected_server_uri, expected_path, asapo::SourceCredentials{"beamtime_id", "", expected_token}) + new ServerDataBroker(expected_server_uri, expected_path, asapo::SourceCredentials{"beamtime_id","", "", expected_token}) }; data_broker->io__ = std::unique_ptr<IO> {&mock_io}; data_broker->httpclient__ = std::unique_ptr<asapo::HttpClient> {&mock_http_client}; diff --git a/examples/consumer/getnext_broker/getnext_broker.cpp b/examples/consumer/getnext_broker/getnext_broker.cpp index 65719c3d8..a7c8df8f5 100644 --- a/examples/consumer/getnext_broker/getnext_broker.cpp +++ b/examples/consumer/getnext_broker/getnext_broker.cpp @@ -55,7 +55,7 @@ std::vector<std::thread> StartThreads(const Args& params, asapo::FileInfo fi; Error err; auto broker = asapo::DataBrokerFactory::CreateServerBroker(params.server, params.file_path, - asapo::SourceCredentials{params.beamtime_id, params.stream, params.token}, &err); + asapo::SourceCredentials{params.beamtime_id, "",params.stream, params.token}, &err); broker->SetTimeout((uint64_t) params.timeout_ms); asapo::FileData data; diff --git a/examples/pipeline/in_to_out/in_to_out.cpp b/examples/pipeline/in_to_out/in_to_out.cpp index 97d5234e4..5153dfeac 100644 --- a/examples/pipeline/in_to_out/in_to_out.cpp +++ b/examples/pipeline/in_to_out/in_to_out.cpp @@ -65,7 +65,7 @@ int ProcessError(const Error& err) { BrokerPtr CreateBrokerAndGroup(const Args& args, Error* err) { auto broker = asapo::DataBrokerFactory::CreateServerBroker(args.server, args.file_path, - asapo::SourceCredentials{args.beamtime_id, args.stream_in, args.token}, err); + asapo::SourceCredentials{args.beamtime_id, "",args.stream_in, args.token}, err); if (*err) { return nullptr; } @@ -188,7 +188,7 @@ std::unique_ptr<asapo::Producer> CreateProducer(const Args& args) { asapo::Error err; auto producer = asapo::Producer::Create(args.server, args.nthreads, asapo::RequestHandlerType::kTcp, - asapo::SourceCredentials{args.beamtime_id, args.stream_out, args.token }, 60, &err); + asapo::SourceCredentials{args.beamtime_id, "", args.stream_out, args.token }, 60, &err); if(err) { std::cerr << "Cannot start producer. ProducerError: " << err << std::endl; exit(EXIT_FAILURE); diff --git a/examples/producer/dummy-data-producer/dummy_data_producer.cpp b/examples/producer/dummy-data-producer/dummy_data_producer.cpp index 9a7be1a9c..59aaf83a5 100644 --- a/examples/producer/dummy-data-producer/dummy_data_producer.cpp +++ b/examples/producer/dummy-data-producer/dummy_data_producer.cpp @@ -180,7 +180,7 @@ std::unique_ptr<asapo::Producer> CreateProducer(const Args& args) { asapo::Error err; auto producer = asapo::Producer::Create(args.receiver_address, args.nthreads, args.mode % 10 == 0 ? asapo::RequestHandlerType::kTcp : asapo::RequestHandlerType::kFilesystem, - asapo::SourceCredentials{args.beamtime_id, args.stream, args.token }, 3600, &err); + asapo::SourceCredentials{args.beamtime_id, "", args.stream, args.token }, 3600, &err); if(err) { std::cerr << "Cannot start producer. ProducerError: " << err << std::endl; exit(EXIT_FAILURE); diff --git a/producer/api/cpp/unittests/test_producer.cpp b/producer/api/cpp/unittests/test_producer.cpp index a6da3670e..77308974b 100644 --- a/producer/api/cpp/unittests/test_producer.cpp +++ b/producer/api/cpp/unittests/test_producer.cpp @@ -15,7 +15,7 @@ namespace { TEST(CreateProducer, TcpProducer) { asapo::Error err; std::unique_ptr<asapo::Producer> producer = asapo::Producer::Create("endpoint", 4, asapo::RequestHandlerType::kTcp, - SourceCredentials{"bt", "", ""}, 3600, &err); + SourceCredentials{"bt", "","", ""}, 3600, &err); ASSERT_THAT(dynamic_cast<asapo::ProducerImpl*>(producer.get()), Ne(nullptr)); ASSERT_THAT(err, Eq(nullptr)); } @@ -24,7 +24,7 @@ TEST(CreateProducer, ErrorBeamtime) { asapo::Error err; std::string expected_beamtimeid(asapo::kMaxMessageSize * 10, 'a'); std::unique_ptr<asapo::Producer> producer = asapo::Producer::Create("endpoint", 4, asapo::RequestHandlerType::kTcp, - SourceCredentials{expected_beamtimeid, "", ""}, 3600, &err); + SourceCredentials{expected_beamtimeid,"", "", ""}, 3600, &err); ASSERT_THAT(producer, Eq(nullptr)); ASSERT_THAT(err, Eq(asapo::ProducerErrorTemplates::kWrongInput)); } @@ -41,7 +41,7 @@ TEST(CreateProducer, ErrorOnBothAutoBeamlineBeamtime) { TEST(CreateProducer, TooManyThreads) { asapo::Error err; std::unique_ptr<asapo::Producer> producer = asapo::Producer::Create("", asapo::kMaxProcessingThreads + 1, - asapo::RequestHandlerType::kTcp, SourceCredentials{"bt", "", ""}, 3600, &err); + asapo::RequestHandlerType::kTcp, SourceCredentials{"bt","", "", ""}, 3600, &err); ASSERT_THAT(producer, Eq(nullptr)); ASSERT_THAT(err, Eq(asapo::ProducerErrorTemplates::kWrongInput)); } @@ -50,7 +50,7 @@ TEST(CreateProducer, TooManyThreads) { TEST(CreateProducer, ZeroThreads) { asapo::Error err; std::unique_ptr<asapo::Producer> producer = asapo::Producer::Create("", 0, - asapo::RequestHandlerType::kTcp, SourceCredentials{"bt", "", ""}, 3600, &err); + asapo::RequestHandlerType::kTcp, SourceCredentials{"bt", "","", ""}, 3600, &err); ASSERT_THAT(producer, Eq(nullptr)); ASSERT_THAT(err, Eq(asapo::ProducerErrorTemplates::kWrongInput)); } @@ -59,7 +59,7 @@ TEST(CreateProducer, ZeroThreads) { TEST(Producer, SimpleWorkflowWihoutConnection) { asapo::Error err; std::unique_ptr<asapo::Producer> producer = asapo::Producer::Create("hello", 5, asapo::RequestHandlerType::kTcp, - SourceCredentials{"bt", "", ""}, 3600, + SourceCredentials{"bt", "","", ""}, 3600, &err); asapo::EventHeader event_header{1, 1, "test"}; diff --git a/producer/api/cpp/unittests/test_producer_impl.cpp b/producer/api/cpp/unittests/test_producer_impl.cpp index 507ed0458..eb989ffa1 100644 --- a/producer/api/cpp/unittests/test_producer_impl.cpp +++ b/producer/api/cpp/unittests/test_producer_impl.cpp @@ -386,7 +386,7 @@ TEST_F(ProducerImplTests, OKSendingSendFileRequestWithSubstream) { TEST_F(ProducerImplTests, ErrorSettingBeamtime) { std::string long_str(asapo::kMaxMessageSize * 10, 'a'); - expected_credentials = asapo::SourceCredentials{long_str, "", ""}; + expected_credentials = asapo::SourceCredentials{long_str,"", "", ""}; EXPECT_CALL(mock_logger, Error(testing::HasSubstr("too long"))); auto err = producer.SetCredentials(expected_credentials); @@ -397,8 +397,8 @@ TEST_F(ProducerImplTests, ErrorSettingBeamtime) { TEST_F(ProducerImplTests, ErrorSettingSecondTime) { EXPECT_CALL(mock_logger, Error(testing::HasSubstr("already"))); - producer.SetCredentials(asapo::SourceCredentials{"1", "2", "3"}); - auto err = producer.SetCredentials(asapo::SourceCredentials{"4", "5", "6"}); + producer.SetCredentials(asapo::SourceCredentials{"1", "","2", "3"}); + auto err = producer.SetCredentials(asapo::SourceCredentials{"4","", "5", "6"}); ASSERT_THAT(err, Eq(asapo::ProducerErrorTemplates::kWrongInput)); } diff --git a/producer/api/python/asapo_producer.pxd b/producer/api/python/asapo_producer.pxd index 22fdedcba..b4e2386bc 100644 --- a/producer/api/python/asapo_producer.pxd +++ b/producer/api/python/asapo_producer.pxd @@ -47,6 +47,7 @@ cdef extern from "asapo_producer.h" namespace "asapo": cdef extern from "asapo_producer.h" namespace "asapo": struct SourceCredentials: string beamtime_id + string beamline string stream string user_token diff --git a/producer/event_monitor_producer/src/main_eventmon.cpp b/producer/event_monitor_producer/src/main_eventmon.cpp index cd5899c3c..ff57a2dc3 100644 --- a/producer/event_monitor_producer/src/main_eventmon.cpp +++ b/producer/event_monitor_producer/src/main_eventmon.cpp @@ -39,7 +39,7 @@ std::unique_ptr<Producer> CreateProducer() { Error err; auto producer = Producer::Create(config->asapo_endpoint, (uint8_t) config->nthreads, - config->mode, asapo::SourceCredentials{config->beamtime_id, config->stream, ""}, 3600, &err); + config->mode, asapo::SourceCredentials{config->beamtime_id, "", config->stream, ""}, 3600, &err); if(err) { std::cerr << "cannot create producer: " << err << std::endl; exit(EXIT_FAILURE); diff --git a/tests/automatic/consumer/consumer_api/consumer_api.cpp b/tests/automatic/consumer/consumer_api/consumer_api.cpp index 9a51b41a1..8dccf3da1 100644 --- a/tests/automatic/consumer/consumer_api/consumer_api.cpp +++ b/tests/automatic/consumer/consumer_api/consumer_api.cpp @@ -187,7 +187,7 @@ void TestDataset(const std::unique_ptr<asapo::DataBroker>& broker, const std::st void TestAll(const Args& args) { asapo::Error err; auto broker = asapo::DataBrokerFactory::CreateServerBroker(args.server, ".", - asapo::SourceCredentials{args.run_name, "", args.token}, &err); + asapo::SourceCredentials{args.run_name, "","", args.token}, &err); broker->SetTimeout(100); auto group_id = broker->GenerateNewGroupId(&err); diff --git a/tests/automatic/consumer/next_multithread_broker/next_multithread_broker.cpp b/tests/automatic/consumer/next_multithread_broker/next_multithread_broker.cpp index e623774e2..515b591eb 100644 --- a/tests/automatic/consumer/next_multithread_broker/next_multithread_broker.cpp +++ b/tests/automatic/consumer/next_multithread_broker/next_multithread_broker.cpp @@ -49,7 +49,7 @@ Args GetArgs(int argc, char* argv[]) { void TestAll(const Args& args) { asapo::Error err; - auto broker = asapo::DataBrokerFactory::CreateServerBroker(args.server, "dummy", asapo::SourceCredentials{args.run_name, "", args.token}, &err); + auto broker = asapo::DataBrokerFactory::CreateServerBroker(args.server, "dummy", asapo::SourceCredentials{args.run_name,"", "", args.token}, &err); auto group_id = broker->GenerateNewGroupId(&err); broker->SetTimeout(10000); std::vector<asapo::FileInfos>file_infos(args.nthreads); diff --git a/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp b/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp index 8fb1df762..ea34c81ae 100644 --- a/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp +++ b/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp @@ -32,7 +32,7 @@ int main(int argc, char* argv[]) { auto args = GetArgs(argc, argv); asapo::Error err; - auto broker = asapo::DataBrokerFactory::CreateServerBroker(args.uri, "", asapo::SourceCredentials{"", "", ""}, &err); + auto broker = asapo::DataBrokerFactory::CreateServerBroker(args.uri, "", asapo::SourceCredentials{"", "","", ""}, &err); auto server_broker = static_cast<asapo::ServerDataBroker*>(broker.get()); asapo::HttpCode code; diff --git a/tests/automatic/full_chain/send_recv_substreams/send_recv_substreams.cpp b/tests/automatic/full_chain/send_recv_substreams/send_recv_substreams.cpp index d4eb41a50..500b1d261 100644 --- a/tests/automatic/full_chain/send_recv_substreams/send_recv_substreams.cpp +++ b/tests/automatic/full_chain/send_recv_substreams/send_recv_substreams.cpp @@ -36,7 +36,7 @@ void ProcessAfterSend(asapo::GenericRequestHeader header, asapo::Error err) { BrokerPtr CreateBrokerAndGroup(const Args& args, Error* err) { auto broker = asapo::DataBrokerFactory::CreateServerBroker(args.server, ".", - asapo::SourceCredentials{args.beamtime_id, "", args.token}, err); + asapo::SourceCredentials{args.beamtime_id,"", "", args.token}, err); if (*err) { return nullptr; } @@ -56,7 +56,7 @@ ProducerPtr CreateProducer(const Args& args) { asapo::Error err; auto producer = asapo::Producer::Create(args.server, 1, asapo::RequestHandlerType::kTcp, - asapo::SourceCredentials{args.beamtime_id, "", args.token }, 60, &err); + asapo::SourceCredentials{args.beamtime_id,"", "", args.token }, 60, &err); if(err) { std::cerr << "Cannot start producer. ProducerError: " << err << std::endl; exit(EXIT_FAILURE); diff --git a/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp b/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp index 2b72594b7..0817a9d84 100644 --- a/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp +++ b/tests/automatic/producer/beamtime_metadata/beamtime_metadata.cpp @@ -69,7 +69,7 @@ std::unique_ptr<asapo::Producer> CreateProducer(const Args& args) { auto producer = asapo::Producer::Create(args.receiver_address, 1, args.mode == 0 ? asapo::RequestHandlerType::kTcp : asapo::RequestHandlerType::kFilesystem, - asapo::SourceCredentials{args.beamtime_id, "", ""}, 60, &err); + asapo::SourceCredentials{args.beamtime_id, "","", ""}, 60, &err); if (err) { std::cerr << "Cannot start producer. ProducerError: " << err << std::endl; exit(EXIT_FAILURE); diff --git a/tests/manual/performance_broker_receiver/getlast_broker.cpp b/tests/manual/performance_broker_receiver/getlast_broker.cpp index 8aaa9d9aa..adebed571 100644 --- a/tests/manual/performance_broker_receiver/getlast_broker.cpp +++ b/tests/manual/performance_broker_receiver/getlast_broker.cpp @@ -48,7 +48,7 @@ std::vector<std::thread> StartThreads(const Args& params, asapo::FileInfo fi; Error err; auto broker = asapo::DataBrokerFactory::CreateServerBroker(params.server, params.file_path, - asapo::SourceCredentials{params.beamtime_id, "", params.token}, &err); + asapo::SourceCredentials{params.beamtime_id, "","", params.token}, &err); broker->SetTimeout((uint64_t) params.timeout_ms); asapo::FileData data; -- GitLab