summaryrefslogtreecommitdiff
path: root/app/controllers
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers')
-rw-r--r--app/controllers/api/companies_controller.rb18
-rw-r--r--app/controllers/application_controller.rb4
-rw-r--r--app/controllers/authenticated_controller.rb2
-rw-r--r--app/controllers/serializers/company_serializer.rb4
4 files changed, 25 insertions, 3 deletions
diff --git a/app/controllers/api/companies_controller.rb b/app/controllers/api/companies_controller.rb
index 4317682..9d6cb1c 100644
--- a/app/controllers/api/companies_controller.rb
+++ b/app/controllers/api/companies_controller.rb
@@ -17,7 +17,7 @@ module Api
render json: serialized_object.serializable_hash, status: :ok and return if @company
- render json: { error_message: "No se encontró la compañía #{params[:short_name]}" }, status: :not_found
+ render json: not_found_error_message, status: :not_found
end
def create
@@ -28,6 +28,18 @@ module Api
render json: { error_messages: @company.errors.full_messages }, status: :unprocessable_entity
end
+ def update
+ @company = Company.find_by(short_name: params[:id])
+
+ render json: not_found_error_message, status: :not_found and return if @company.nil?
+
+ if @company.update(permitted_params)
+ render json: serialized_object.serializable_hash, status: :ok
+ else
+ render json: { error_messages: @company.errors.full_messages }, status: :unprocessable_entity
+ end
+ end
+
private
def serialized_object
@@ -41,5 +53,9 @@ module Api
def permitted_params
params.permit(:name, :country, :short_name, :logo)
end
+
+ def not_found_error_message
+ { error_message: "No se encontró la compañía #{params[:short_name]}"}
+ end
end
end
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 7f803c8..4fc614c 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -2,6 +2,10 @@
# The father class of all controllers.
class ApplicationController < ActionController::API
+ before_action do
+ ActiveStorage::Current.url_options = { protocol: request.protocol, host: request.host, port: request.port }
+ end
+
def logic(permitted_params)
@logic = Object.const_get("#{self.class}::#{action_name.camelize}Logic").new(permitted_params)
end
diff --git a/app/controllers/authenticated_controller.rb b/app/controllers/authenticated_controller.rb
index 7098202..de02cab 100644
--- a/app/controllers/authenticated_controller.rb
+++ b/app/controllers/authenticated_controller.rb
@@ -19,7 +19,7 @@ class AuthenticatedController < ApplicationController
def decoded_token
@decoded_token ||= JWT.decode(authentication_token, ENV['HMAC_SECRET_KEY'], true, { algorithm: 'HS512' })
- rescue JWT::ExpiredSignature
+ rescue JWT::ExpiredSignature, JWT::DecodeError
@decoded_token = nil
end
diff --git a/app/controllers/serializers/company_serializer.rb b/app/controllers/serializers/company_serializer.rb
index ec3f200..d211e9e 100644
--- a/app/controllers/serializers/company_serializer.rb
+++ b/app/controllers/serializers/company_serializer.rb
@@ -3,10 +3,12 @@
module Serializers
# CompanySerializer
class CompanySerializer < BaseSerializer
+ extend ActionView::RoutingUrlFor
+
attributes :id, :name, :country, :short_name
attribute :logo do |object|
- url_for(object.logo)
+ object.logo.url
end
end
end