From 26bb594bfdddc6dd3b28eda258808dc46f5546b6 Mon Sep 17 00:00:00 2001 From: Rob Nichols Date: Thu, 21 Nov 2024 14:23:40 +0000 Subject: [PATCH] Add data marketplace connector --- app/services/data_marketplace_connector.rb | 26 +++++++++++++++++ app/views/records/show.html.erb | 2 +- config/credentials.yml.enc | 2 +- .../data_marketplace_connector_spec.rb | 28 +++++++++++++++++++ 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 app/services/data_marketplace_connector.rb create mode 100644 spec/services/data_marketplace_connector_spec.rb diff --git a/app/services/data_marketplace_connector.rb b/app/services/data_marketplace_connector.rb new file mode 100644 index 0000000..68a9da6 --- /dev/null +++ b/app/services/data_marketplace_connector.rb @@ -0,0 +1,26 @@ +class DataMarketplaceConnector + def self.create(record) + new.create(record) # rubocop:disable Rails/SaveBang + end + + def create(record) + Faraday.post( + "https://apitest.datamarketplace.gov.uk/v1/datasets", + record.metadata.to_json, + "Content-Type" => "application/json", + "Authorization" => "Bearer #{token}", + ) + end + + def token + @token ||= begin + response = Faraday.post( + "https://apitest.datamarketplace.gov.uk/v1/clientauth/get-token", + Rails.application.credentials.dm_api.to_json, + "Content-Type" => "application/json", + ) + json = JSON.parse(response.body) + json["token"] + end + end +end diff --git a/app/views/records/show.html.erb b/app/views/records/show.html.erb index 7b7a09a..196222c 100644 --- a/app/views/records/show.html.erb +++ b/app/views/records/show.html.erb @@ -7,7 +7,7 @@
- <%= govuk_button_to "Destroy this record", @record, method: :delete, warning: true %> + <%#= govuk_button_to "Publish this record", @record, method: :delete, warning: true %>
diff --git a/config/credentials.yml.enc b/config/credentials.yml.enc index 9264701..a5c1d45 100644 --- a/config/credentials.yml.enc +++ b/config/credentials.yml.enc @@ -1 +1 @@ -POsrQfSdplij0H2sViAnX9/9xgscONWUPtkJH9Lu+QpO7RNYXOOKorXm59q0Uq9T5jN9aESjzmQTDsSwbN5lRLLvYOA5WxnW56ryI2bgtV8xKDBswjTFwmnKMLF8jWzy2vJKVs7IpPrwjM5HqV4tZmhfL2ubl55Q4dYl3+YkdkPE6BK1hWBX/PO+jR14Of18qPA/UOVH6HTa1dQFeUsbI5s9uszpy+61UiCchDxCIbaEfXsm6uVi4Ds+S6cj8TVCalAnB4MnQ21+WM/JJiQkTCkBjVlrYhMqiFFqUOV2BMd7XMW9saRvsPIITKzgOa67M8cZftFwPBwQ7BD0eewMWwdOBr4oJbkUwWjHAUaXwaouB0ITWaNhW9k1grJxDVLLTiey7RbBaxocA2kSAVD1QHwW4141KrePvmd9eK65ljZbY2U3gs8hhplzpAvn10c1lY4vYLKDBcMzIGXYeWtnXPrh4c7+wF2sTtrKWjbiE8Oex9MVY3rIYovY--7J3CjbhJSclY07JR--tTqkp9MXLsIucAG184AMmg== \ No newline at end of file +pndKHm68MmCXzcA+zfuYgt7Tzco9kC8DGQ0I0ZiL/GvRpk3kKywlGAs97m4PP3WFiOdjNlqRC0OubUj29OruOHzadlc5tNNRwnSLrL04vqpk49pNUiNLtUTSJynqHW3x74KZTiEW12Nrhc5rQt3ELo54pzp8GmHoAvKr0xIylmynHPl3dWAaQgcWjsfji2sOHYsEhBKmF2MGODma1bYVISIwaBZieSlDCO2LByY1QeaHi+DPwComAzbyAwfUnJmUeVlfQc3GHtnC5AhsrcAKVLAG2Ac8oj3PtnIuuAb/K484u8bYQKPYL/TgRwzqWNKGeTSvIIVtaBctn6hLtnxmj+qWvg2VjQbwiv9vQMJbOZkEjB1Dc0rSba9IAyDPAKtNH89yddkbwdG9VoGP9PsXdfccLgVLen81IbYRSFbwBDrmZnYrd4Vhz3UdBtFvVm1TR6PkOKYBS078ipI1IVkJGGGmmhNm+j0bldYHNU3Qkt9biiLuf8zrUg91q3KEEzH0DWeA/V3AYqBv8qVsKnFMmF2Wae1nx+r4gmd/Mpm7SQfNXry37BZ3KFNLwhfvF0DlqtXV7hmkTgSFOz3bQ1DNKy47bGzbJnCP88SHlbBI6nVZ0VXByuBAnnMIrmNum11loVmAf0ivIsMOjept0GpZE0DS0b0aQvC7sn0l/MTN9TbeCaEm7KD8LE2MPjzYfkNpIJCrrfXkZa5pkJgd9JwFhJ6Y6FuUMgD6G+Rz--En0TcO9xILwtVJQp--RPoPlaXeS9hmQ8YzIRp6DA== \ No newline at end of file diff --git a/spec/services/data_marketplace_connector_spec.rb b/spec/services/data_marketplace_connector_spec.rb new file mode 100644 index 0000000..9502977 --- /dev/null +++ b/spec/services/data_marketplace_connector_spec.rb @@ -0,0 +1,28 @@ +require "rails_helper" + +RSpec.describe DataMarketplaceConnector, type: :service do + describe ".create" do + let(:token) { SecureRandom.uuid } + let(:record) { create :record } + + before do + stub_request(:post, "https://apitest.datamarketplace.gov.uk/v1/clientauth/get-token") + .with( + body: Rails.application.credentials.dm_api.to_json, + headers: { "Content-Type" => "application/json" }, + ) + .to_return(status: 200, body: { token: }.to_json) + + stub_request(:post, "https://apitest.datamarketplace.gov.uk/v1/datasets") + .with( + body: record.metadata.to_json, + headers: { "Content-Type" => "application/json" }, + ) + .to_return(status: 200, body: "", headers: {}) + end + + it "returns success" do + expect(described_class.create(record)).to be_success + end + end +end