Sha256: 3c772609875ee0ea241ddf3411582fe375eed8d037cb4679343cf96bf07391f9

Contents?: true

Size: 1.14 KB

Versions: 2

Compression:

Stored size: 1.14 KB

Contents

module Types::Objects::Base
  class AttachmentType < Types::BaseObject
    field :id,          Int,      nil, null: false
    field :filename,    String,   nil, null: false
    field :url,         String,   nil, null: false
    field :base64,      String,   nil, null: false

    def id
      if object.class.eql?(ActiveStorage::Variant)
        object.blob.id
      else
        object.id
      end
    end

    def filename
      if object.class.eql?(ActiveStorage::Variant)
        object.blob.filename.to_s + "-" + object.variation.transformations[:resize]
      else
        object.filename.to_s
      end
    end

    def url
      if object.class.eql?(ActiveStorage::Variant)
        Rails.application.routes.url_helpers.rails_representation_url(object)
      elsif defined?(object.service_url)
        object.service_url
      else
        object.url
      end
    end

    def base64
      data = if object.class.eql?(ActiveStorage::Variant)
               Base64.strict_encode64(object.blob.download)
             else
               Base64.strict_encode64(object.download)
             end
      "data:#{object.content_type};base64,#{data}"
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
cm-graphql-0.0.6 app/graphql/types/objects/base/attachment_type.rb
cm-graphql-0.0.5 app/graphql/types/objects/base/attachment_type.rb