Class: Integrations::Cults3d::ModelDeserializer

Inherits:
BaseDeserializer
  • Object
show all
Defined in:
app/deserializers/integrations/cults3d/model_deserializer.rb

Constant Summary

Constants inherited from BaseDeserializer

BaseDeserializer::PATH_COMPONENTS

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from BaseDeserializer

client

Instance Attribute Details

#object_slug ⇒ Object (readonly)

Returns the value of attribute object_slug.



2
3
4
# File 'app/deserializers/integrations/cults3d/model_deserializer.rb', line 2

def object_slug
  @object_slug
end

Instance Method Details

#capabilities ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'app/deserializers/integrations/cults3d/model_deserializer.rb', line 42

def capabilities
  {
    class: Model,
    name: true,
    notes: true,
    images: true,
    model_files: false,
    creator: true,
    tags: true,
    sensitive: true,
    license: true
  }
end

#deserialize ⇒ Object

Raises:

  • (Faraday::ResourceNotFound)


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
32
33
34
35
36
37
38
39
40
# File 'app/deserializers/integrations/cults3d/model_deserializer.rb', line 4

def deserialize
  return {} unless valid?
  result = self.class.client.query <<~GRAPHQL
    {
      creation(slug: "#{@object_slug}") {
        name
        description
        license {
          spdxId
        }
        safe
        tags
        illustrationImageUrl
        illustrations {
          imageUrl
        }
        creator {
          nick
          bio
          url
          imageUrl
        }
      }
    }
  GRAPHQL
  raise Faraday::ResourceNotFound.new("Not Found") unless result.data&.creation
  {
    name: result.data&.creation&.name,
    slug: @object_slug,
    notes: result.data&.creation&.description,
    tag_list: result.data&.creation&.tags.to_a,
    sensitive: result.data&.creation&.safe == false,
    file_urls: result.data&.creation&.illustrations&.map { {url: it.image_url.split("()/").last, filename: filename_from_url(it.image_url.split("()/").last)} },
    preview_filename: filename_from_url(result.data&.creation&.illustration_image_url),
    license: result.data&.creation&.license&.spdx_id
  }.merge(creator_attributes(result&.data&.creation&.creator))
end