Class: DataPackage::ModelSerializer

Inherits:
BaseSerializer show all
Defined in:
app/serializers/data_package/model_serializer.rb

Instance Method Summary collapse

Methods inherited from BaseSerializer

#initialize

Constructor Details

This class inherits a constructor from DataPackage::BaseSerializer

Instance Method Details

#serialize ⇒ Object



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'app/serializers/data_package/model_serializer.rb', line 3

def serialize
  {
    "$schema": "https://manyfold.app/profiles/0.0/datapackage.json",
    name: @object.name.parameterize,
    title: @object.name,
    caption: @object.caption,
    description: @object.notes,
    homepage: Rails.application.routes.url_helpers.url_for(@object),
    image: @object.preview_file&.is_image? ? @object.preview_file.filename : nil,
    keywords: @object.tag_list,
    licenses: (@object.license ? [
      {
        name: @object.license,
        path: Spdx.licenses.dig(@object.license, "reference")
      }.compact
    ] : nil),
    resources: @object.model_files.without_special.map { ModelFileSerializer.new(it).serialize },
    sensitive: @object.sensitive,
    contributors: @object.creator ? [CreatorSerializer.new(@object.creator).serialize] : nil,
    collections: @object.collections.map { |c| CollectionSerializer.new(c).serialize },
    links: @object.links.map { LinkSerializer.new(it).serialize },
    entrypoint: (if @object.entrypoint
                   {
                     path: @object.entrypoint.filename,
                     fragment: @object.entrypoint_fragment
                   }.compact
                 end)
  }.compact
end