Class: ManyfoldApi::V0::ApplicationSerializer

Inherits:
Object
  • Object
show all
Defined in:
app/serializers/manyfold_api/v0/application_serializer.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(object) ⇒ ApplicationSerializer

Returns a new instance of ApplicationSerializer.



3
4
5
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 3

def initialize(object)
  @object = object
end

Class Method Details

.schema ⇒ Object

Raises:

  • (NotImplementedError)


68
69
70
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 68

def self.schema
  raise NotImplementedError
end

.schema_ref ⇒ Object



64
65
66
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 64

def self.schema_ref
  {"$ref" => "#/components/schemas/#{schema_ref_name}"}
end

.schema_ref_name ⇒ Object



60
61
62
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 60

def self.schema_ref_name
  name.underscore.split("/").last.gsub("_serializer", "_response")
end

Instance Method Details

#collection_ref(collection) ⇒ Object



28
29
30
31
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 28

def collection_ref(collection)
  return if collection.nil?
  ref id: Rails.application.routes.url_helpers.collection_url(collection), type: "Collection"
end

#context ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 7

def context
  [
    "https://schema.org/",
    {
      hydra: "http://www.w3.org/ns/hydra/core#",
      spdx: "http://spdx.org/rdf/terms#"
    }
  ]
end

#creator_ref(creator) ⇒ Object



33
34
35
36
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 33

def creator_ref(creator)
  return if creator.nil?
  ref id: Rails.application.routes.url_helpers.creator_url(creator), type: "Organization"
end

#file_ref(file) ⇒ Object



48
49
50
51
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 48

def file_ref(file)
  return if file.nil?
  ref id: Rails.application.routes.url_helpers.model_model_file_url(file.model, file), type: "3DModel"
end

#group_ref(group) ⇒ Object



38
39
40
41
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 38

def group_ref(group)
  return if group.nil?
  ref id: Rails.application.routes.url_helpers.creator_group_url(group.creator, group), type: "Group"
end

#license(id) ⇒ Object



17
18
19
20
21
22
23
24
25
26
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 17

def license(id)
  return if id.blank?
  {
    "@type": "spdx:License",
    "@id": id.starts_with?("LicenseRef-") ?
      nil :
      "http://spdx.org/licenses/#{id}",
    licenseId: id
  }.compact
end

#model_ref(model) ⇒ Object



43
44
45
46
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 43

def model_ref(model)
  return if model.nil?
  ref id: Rails.application.routes.url_helpers.model_url(model), type: "3DModel"
end

#ref(id:, type:) ⇒ Object



53
54
55
56
57
58
# File 'app/serializers/manyfold_api/v0/application_serializer.rb', line 53

def ref(id:, type:)
  {
    "@id": id,
    "@type": type
  }
end