Class: Spree::Api::V2::Operator::GuestJsonGzipsController

Inherits:
ResourceController
  • Object
show all
Includes:
ActiveStorage::SetCurrent
Defined in:
app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb

Instance Method Summary collapse

Instance Method Details

#collection_serializerObject

override



57
58
59
# File 'app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb', line 57

def collection_serializer
  SpreeCmCommissioner::V2::Operator::ExportSerializer
end

#createObject

POST /api/v2/operator/guest_json_gzips



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb', line 24

def create
  spree_authorize! :create, SpreeCmCommissioner::Exports::OperatorGuestJsonGzip

  exportable = Spree::Taxon.find(params[:taxon_id])

  result = SpreeCmCommissioner::OperatorGuestJsonGzips::Create.call(
    exportable: exportable,
    resource_includes: params[:resource_includes] || [],
    force_create: params[:force_create] == 'true'
  )

  if result.success?
    status = result.value.created_at < 1.minute.ago ? 200 : 201
    @export = result.value
    render_serialized_payload(status) { serialize_resource(@export) }
  else
    render_error_payload(result.error)
  end
end

#indexObject

Override index to disable server-side caching. We always want to show the latest exports and their download status. The app will cache files on its side to avoid unnecessary server requests once files are ready.



14
15
16
17
18
# File 'app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb', line 14

def index
  render_serialized_payload do
    serialize_collection(paginated_collection)
  end
end

#require_event_userObject

Raises:

  • (CanCan::AccessDenied)


44
45
46
# File 'app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb', line 44

def require_event_user
  raise CanCan::AccessDenied unless spree_current_user.events.exists?(id: params[:taxon_id])
end

#resource_serializerObject

override



62
63
64
# File 'app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb', line 62

def resource_serializer
  SpreeCmCommissioner::V2::Operator::ExportSerializer
end

#scopeObject

override



49
50
51
52
53
54
# File 'app/controllers/spree/api/v2/operator/guest_json_gzips_controller.rb', line 49

def scope
  SpreeCmCommissioner::Exports::OperatorGuestJsonGzip.where(
    exportable_type: 'Spree::Taxon',
    exportable_id: params[:taxon_id]
  ).order(created_at: :desc)
end