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