Sha256: 5d506987f0155491bdecdbc85480fe16ca5e32935bc48d02480e4fee4e80e4db

Contents?: true

Size: 1.68 KB

Versions: 38

Compression:

Stored size: 1.68 KB

Contents

module Spree
  module Api
    module V2
      module Storefront
        class CountriesController < ::Spree::Api::V2::BaseController
          include Spree::Api::V2::CollectionOptionsHelpers

          def index
            render_serialized_payload { serialize_collection(collection) }
          end

          def show
            render_serialized_payload { serialize_resource(resource) }
          end

          private

          def serialize_collection(collection)
            collection_serializer.new(collection).serializable_hash
          end

          def serialize_resource(resource)
            resource_serializer.new(
              resource,
              include: resource_includes,
              fields: sparse_fields,
              params: { include_states: true }
            ).serializable_hash
          end

          def collection
            collection_finder.new(scope, params).call
          end

          def resource
            return scope.default if params[:iso] == 'default'

            scope.find_by(iso: params[:iso]&.upcase) ||
              scope.find_by(id: params[:iso]&.upcase) ||
              scope.find_by(iso3: params[:iso]&.upcase)
          end

          def resource_serializer
            Spree::Api::Dependencies.storefront_country_serializer.constantize
          end

          def collection_serializer
            Spree::Api::Dependencies.storefront_country_serializer.constantize
          end

          def collection_finder
            Spree::Api::Dependencies.storefront_country_finder.constantize
          end

          def scope
            Spree::Country.accessible_by(current_ability, :show)
          end
        end
      end
    end
  end
end

Version data entries

38 entries across 38 versions & 1 rubygems

Version Path
spree_api-4.0.9 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.15 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.14 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.0.8 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.13.1 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.0.7.1 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.0.7 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.13 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.0.6 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.2.0.rc2 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.0.5 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.12 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.2.0.rc1 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.0.4 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.11 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.10 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.2.0.beta app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.9 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.8 app/controllers/spree/api/v2/storefront/countries_controller.rb
spree_api-4.1.7 app/controllers/spree/api/v2/storefront/countries_controller.rb