class Songkick::Transport::Service

Constants

DEFAULT_TIMEOUT
DEFAULT_TRANSPORT

Public Class Methods

ancestor() click to toggle source
# File lib/songkick/transport/service.rb, line 7
def self.ancestor
  warn "DEPRECATED: calling ancestor on #{self}"
  self.ancestors.select { |a| a.respond_to?(:get_user_agent) }[1]
end
endpoint(name) click to toggle source
# File lib/songkick/transport/service.rb, line 32
def self.endpoint(name)
  @endpoint_name = name.to_s
end
extra_headers() click to toggle source
# File lib/songkick/transport/service.rb, line 17
def self.extra_headers
  warn "DEPRECATED: calling extra_headers on #{self}"
  get_with_headers
end
get_endpoint() click to toggle source
# File lib/songkick/transport/service.rb, line 64
def self.get_endpoint
  Service.get_endpoints[self.get_endpoint_name] ||
    raise("can't find endpoint for '#{self.get_endpoint_name}', should have called Songkick::Transport::Service.set_endpoints")
end
get_endpoint_name() click to toggle source
# File lib/songkick/transport/service.rb, line 59
def self.get_endpoint_name
  @endpoint_name || (parent_service && parent_service.get_endpoint_name) ||
    raise("no endpoint specified for #{self}, call endpoint 'foo' inside #{self}")
end
get_endpoints() click to toggle source
# File lib/songkick/transport/service.rb, line 77
def self.get_endpoints
  @endpoints || {}
end
get_stub_transport() click to toggle source
# File lib/songkick/transport/service.rb, line 89
def self.get_stub_transport
  @stub_transport || (parent_service && parent_service.get_stub_transport) || nil
end
get_timeout() click to toggle source
# File lib/songkick/transport/service.rb, line 69
def self.get_timeout
  @timeout || (parent_service && parent_service.get_timeout) || DEFAULT_TIMEOUT
end
get_transport_layer() click to toggle source
# File lib/songkick/transport/service.rb, line 81
def self.get_transport_layer
  @transport_layer || (parent_service && parent_service.get_transport_layer) || DEFAULT_TRANSPORT
end
get_transport_layer_options() click to toggle source
# File lib/songkick/transport/service.rb, line 85
def self.get_transport_layer_options
  ((parent_service && parent_service.get_transport_layer_options) || {}).merge(@transport_layer_options || {})
end
get_user_agent() click to toggle source
# File lib/songkick/transport/service.rb, line 73
def self.get_user_agent
  @user_agent || (parent_service && parent_service.get_user_agent)
end
get_with_headers() click to toggle source
# File lib/songkick/transport/service.rb, line 93
def self.get_with_headers
  ((parent_service && parent_service.get_with_headers) || {}).merge(@with_headers || {})
end
new_transport() click to toggle source
# File lib/songkick/transport/service.rb, line 97
def self.new_transport
  unless user_agent = get_user_agent
    raise "no user agent specified for #{self}, call user_agent 'foo' inside #{self} or on Songkick::Transport::Service"
  end
  get_stub_transport || get_transport_layer.new(self.get_endpoint, { :user_agent => user_agent, :timeout => get_timeout }.merge(get_transport_layer_options))
end
set_endpoints(hash) click to toggle source
# File lib/songkick/transport/service.rb, line 52
def self.set_endpoints(hash)
  unless self == Songkick::Transport::Service
    raise "set_endpoints only on Songkick::Transport::Service"
  end
  @endpoints = hash
end
stub_transport(stub) click to toggle source
# File lib/songkick/transport/service.rb, line 12
def self.stub_transport(stub)
  warn "DEPRECATED: calling stub_transport on #{self}"
  @stub_transport = stub
end
this_extra_headers() click to toggle source
# File lib/songkick/transport/service.rb, line 22
def self.this_extra_headers
  warn "DEPRECATED: calling this_extra_headers on #{self}"
  @with_headers || {}
end
timeout(value) click to toggle source
# File lib/songkick/transport/service.rb, line 36
def self.timeout(value)
  @timeout = value
end
transport_layer(value) click to toggle source
# File lib/songkick/transport/service.rb, line 44
def self.transport_layer(value)
  @transport_layer = value
end
transport_layer_options(value) click to toggle source
# File lib/songkick/transport/service.rb, line 48
def self.transport_layer_options(value)
  @transport_layer_options = value
end
user_agent(value) click to toggle source
# File lib/songkick/transport/service.rb, line 40
def self.user_agent(value)
  @user_agent = value
end
with_headers(headers) click to toggle source
# File lib/songkick/transport/service.rb, line 104
def self.with_headers(headers)
  @with_headers = headers
end

Private Class Methods

parent_service() click to toggle source
# File lib/songkick/transport/service.rb, line 27
def self.parent_service
  superclass if superclass <= Songkick::Transport::Service
end

Public Instance Methods

http() click to toggle source
# File lib/songkick/transport/service.rb, line 108
def http
  r = (@http ||= self.class.new_transport)
  if self.class.get_with_headers.any?
    r.with_headers(self.class.get_with_headers)
  else
    r
  end
end
rescue_404(response=nil) { || ... } click to toggle source
# File lib/songkick/transport/service.rb, line 121
def rescue_404(response=nil)
  yield
rescue Songkick::Transport::HttpError => e
  e.status == 404 ? response : (raise e)
end
stub_transport(http) click to toggle source
# File lib/songkick/transport/service.rb, line 117
def stub_transport(http)
  @http = http
end