From 64aab83d3e04e732dfd09376ba3669683b8b4da8 Mon Sep 17 00:00:00 2001 From: Gonzalo Riestra Date: Thu, 31 Jan 2019 17:23:05 +0100 Subject: [PATCH] new tags endpoint in UsersController --- app/controllers/carto/api/users_controller.rb | 11 +++++++++++ config/routes.rb | 2 ++ .../carto/api/users_controller_spec.rb | 19 +++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/app/controllers/carto/api/users_controller.rb b/app/controllers/carto/api/users_controller.rb index 3dac7ea484..e70453077e 100644 --- a/app/controllers/carto/api/users_controller.rb +++ b/app/controllers/carto/api/users_controller.rb @@ -14,6 +14,7 @@ module Carto include FrontendConfigHelper include AccountTypeHelper include AvatarHelper + include Carto::ControllerHelper UPDATE_ME_FIELDS = [ :name, :last_name, :website, :description, :location, :twitter_username, @@ -31,6 +32,8 @@ module Carto skip_before_action :api_authorization_required, only: [:me, :me_public, :get_authenticated_users] skip_before_action :check_user_state, only: [:me, :delete_me] + rescue_from StandardError, with: :rescue_from_standard_error + def show render json: Carto::Api::UserPresenter.new(uri_user).data end @@ -138,6 +141,14 @@ module Carto render_auth_users_data(session_user, referer, subdomain, referer_organization_username) end + def tags + query_builder = Carto::TagQueryBuilder.new.with_user(current_viewer) + result = query_builder.build + tags = result.map { |tag| TagPresenter.new(tag).to_poro } + + render json: tags + end + private def google_plus_iframe_src diff --git a/config/routes.rb b/config/routes.rb index 9a68956b61..1667843a4e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -656,6 +656,8 @@ CartoDB::Application.routes.draw do resources :multifactor_auths, only: [:create, :destroy, :show, :index], constraints: { id: /[^\/]+/ } do post 'verify_code', on: :member end + + get 'tags' => 'users#tags', as: :api_v3_users_tags end scope 'v2/' do diff --git a/spec/requests/carto/api/users_controller_spec.rb b/spec/requests/carto/api/users_controller_spec.rb index 4c2f829a5f..181af88b5b 100644 --- a/spec/requests/carto/api/users_controller_spec.rb +++ b/spec/requests/carto/api/users_controller_spec.rb @@ -433,4 +433,23 @@ describe Carto::Api::UsersController do end end end + + describe 'tags' do + it 'returns 401 if there is no authenticated user' do + get_json api_v3_users_tags_url, @headers do |response| + expect(response.status).to eq(401) + end + end + + it 'returns a 200 response with the current user tags' do + user = @organization.owner + FactoryGirl.create(:derived_visualization, user_id: user.id, tags: ["ETIQUETA"]) + expected_result = { tag: "ETIQUETA", maps: 1, datasets: 0 }.with_indifferent_access + + get_json api_v3_users_tags_url(user_domain: user.username, api_key: user.api_key), @headers do |response| + expect(response.status).to eq(200) + expect(response.body).to eq [expected_result] + end + end + end end