class AssetHost::Asset

Constants

ATTRIBUTES
BAD_STATUS
GOOD_STATUS

Attributes

json[RW]

Public Class Methods

config() click to toggle source
# File lib/asset_host/asset.rb, line 19
def config
  @config ||= Rails.application.config.assethost
end
connection() click to toggle source
# File lib/asset_host/asset.rb, line 92
def connection
  @connection ||= begin
    Faraday.new(
      :url    => "http://#{config.server}",
      :params => { auth_token: config.token }
    ) do |conn|
      conn.request :json
      conn.response :json
      conn.adapter Faraday.default_adapter
    end
  end
end
create(attributes={}) click to toggle source
# File lib/asset_host/asset.rb, line 73
def create(attributes={})
  response = connection.post do |request|
    request.url "#{config.prefix}/assets"
    request.body = attributes
  end

  json = response.body

  if response.success? && json
    asset = new(json)
    Rails.cache.write("asset/asset-#{asset.id}", json)
  else
    return false
  end

  asset
end
find(id) click to toggle source

asset = Asset.find(id) Given an asset ID, returns an asset object

# File lib/asset_host/asset.rb, line 50
def find(id)
  key = "asset/asset-#{id}"

  if cached = Rails.cache.read(key)
    return new(cached)
  end

  response = connection.get "#{config.prefix}/assets/#{id}"
  json = response.body

  if !GOOD_STATUS.include?(response.status.to_i) || !json
    asset = Fallback.new
  else
    asset = new(json)
    Rails.cache.write(key, json)
  end

  asset
end
new(json) click to toggle source
# File lib/asset_host/asset.rb, line 124
def initialize(json)
  @json = json
  @_sizes = {}

  ATTRIBUTES.map(&:to_s).each do |attribute|
    send "#{attribute}=", @json[attribute]
  end
end
outputs() click to toggle source
# File lib/asset_host/asset.rb, line 25
def outputs
  @outputs ||= begin
    key = "assets/outputs"

    if cached = Rails.cache.read(key)
      return cached
    end

    response = connection.get "#{config.prefix}/outputs"

    if !GOOD_STATUS.include? response.status
      outputs = JSON.parse(File.read(File.join(AssetHost.fallback_root, "outputs.json")))
    else
      outputs = response.body
      Rails.cache.write(key, outputs)
    end

    outputs
  end
end

Public Instance Methods

_size(output) click to toggle source
# File lib/asset_host/asset.rb, line 139
def _size(output)
  @_sizes[ output['code'] ] ||= AssetSize.new(self, output)
end
as_json(options={}) click to toggle source
# File lib/asset_host/asset.rb, line 145
def as_json(options={})
  @json
end
is_rich?() click to toggle source
# File lib/asset_host/asset.rb, line 133
def is_rich?
  self.native.present?
end
method_missing(method, *args) click to toggle source
Calls superclass method
# File lib/asset_host/asset.rb, line 149
def method_missing(method, *args)
  if output = Asset.outputs.find { |output| output['code'] == method.to_s }
    self._size(output)
  else
    super
  end
end