From fb22cc293bb202222b9dafd28fa40be3e8d39bcb Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 27 Apr 2021 12:56:35 +0200 Subject: [PATCH] Endpoint to receive full access requests --- .../api/public/data_observatory_controller.rb | 15 ++++++++++++--- app/services/carto/do_licensing_service.rb | 6 ++++++ config/routes.rb | 1 + 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/app/controllers/carto/api/public/data_observatory_controller.rb b/app/controllers/carto/api/public/data_observatory_controller.rb index e3540068d2..fa87bd3910 100644 --- a/app/controllers/carto/api/public/data_observatory_controller.rb +++ b/app/controllers/carto/api/public/data_observatory_controller.rb @@ -20,11 +20,11 @@ module Carto before_action :load_user before_action :load_filters, only: [:subscriptions] - before_action :load_id, only: [:subscription, :subscription_info, :subscribe, :unsubscribe] - before_action :load_type, only: [:subscription, :subscription_info, :subscribe] + before_action :load_id, only: [:subscription, :update_subscription, :subscription_info, :subscribe, :unsubscribe] + before_action :load_type, only: [:subscription, :update_subscription, :subscription_info, :subscribe] before_action :load_http_client, only: [:subscription_info, :subscribe] before_action :check_api_key_permissions - before_action :check_do_enabled, only: [:subscription, :subscription_info, :subscriptions] + before_action :check_do_enabled, only: [:subscription, :update_subscription, :subscription_info, :subscriptions] setup_default_rescues rescue_from Carto::SubscriptionNotFoundError, with: :rescue_from_subscription_not_found @@ -65,6 +65,15 @@ module Carto render(json: bq_subscription) end + def update_subscription + licensing_service = Carto::DoLicensingService.new(@user.username) + bq_subscription = licensing_service.subscription(@id) + allowed_params = params.slice(:full_access_status_bq, :full_access_status_azure, :full_access_status_aws) + updated_subscription = bq_subscription.merge(allowed_params) + licensing_service.update(updated_subscription) + render(json: updated_subscription) + end + def subscription_info response = present_metadata(subscription_metadata(@id, @type)) diff --git a/app/services/carto/do_licensing_service.rb b/app/services/carto/do_licensing_service.rb index 7dcfadaa98..8d56b7c723 100644 --- a/app/services/carto/do_licensing_service.rb +++ b/app/services/carto/do_licensing_service.rb @@ -17,6 +17,12 @@ module Carto add_to_redis(dataset) end + def update(dataset) + # TODO: update it in central + #Cartodb::Central.new.update_do_datasets(username: @user.username, datasets: [dataset]) + add_to_redis(dataset) + end + def unsubscribe(dataset_id) Cartodb::Central.new.remove_do_dataset(username: @user.username, id: dataset_id) remove_from_redis(dataset_id) diff --git a/config/routes.rb b/config/routes.rb index 652d9dc2a3..d4ddc6e759 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -659,6 +659,7 @@ CartoDB::Application.routes.draw do get 'token' => 'data_observatory#token', as: :api_v4_do_token get 'subscriptions' => 'data_observatory#subscriptions', as: :api_v4_do_subscriptions_show get 'subscriptions/:subscription_id' => 'data_observatory#subscription', as: :api_v4_do_subscription_show, constraints: { subscription_id: /[\w\.\-]+/ } + put 'subscriptions/:subscription_id' => 'data_observatory#update_subscription', as: :api_v4_do_subscription_update, constraints: { subscription_id: /[\w\.\-]+/ } post 'subscriptions' => 'data_observatory#subscribe', as: :api_v4_do_subscriptions_create delete 'subscriptions' => 'data_observatory#unsubscribe', as: :api_v4_do_subscriptions_destroy get 'subscription_info' => 'data_observatory#subscription_info', as: :api_v4_do_subscription_info