class Populr

Attributes

api_key[R]
api_server[RW]
api_version[R]

Public Class Methods

interpret_response(result, result_content, options = {}) click to toggle source
# File lib/populr.rb, line 30
def self.interpret_response(result, result_content, options = {})
  # Handle HTTP errors and RestClient errors
  raise ResourceNotFound.new if result.code.to_i == 404
  raise AccessDenied.new if result.code.to_i == 403

  # Handle content expectation errors
  raise UnexpectedResponse.new if options[:expected_class] && result_content.empty?
  json = JSON.parse(result_content)
  raise APIError.new(json['error_type'], json['error']) if json.is_a?(Hash) && json['error_type']
  raise UnexpectedResponse.new(result.msg) if result.is_a?(Net::HTTPClientError)
  raise UnexpectedResponse.new if options[:expected_class] && !json.is_a?(options[:expected_class])
  json

rescue JSON::ParserError => e
  # Handle parsing errors
  raise UnexpectedResponse.new(e.message)
end
new(api_key, api_server = 'https://api.populr.me') click to toggle source
# File lib/populr.rb, line 50
def initialize(api_key, api_server = 'https://api.populr.me')
  raise "When overriding the Populr API server address, you must include https://" unless api_server.include?('://')
  @api_server = api_server
  @api_version = 'v0'
  @api_key = api_key

  RestClient.add_before_execution_proc do |req, params|
    req.add_field('X-Populr-API-Wrapper', 'ruby')
  end
end

Public Instance Methods

background_images() click to toggle source
# File lib/populr.rb, line 86
def background_images
  @background_images ||= RestfulModelCollection.new(BackgroundImageAsset, self)
  @background_images
end
documents() click to toggle source
# File lib/populr.rb, line 76
def documents
  @documents ||= RestfulModelCollection.new(DocumentAsset, self)
  @documents
end
domains() click to toggle source
# File lib/populr.rb, line 71
def domains
  @domains ||= RestfulModelCollection.new(Domain, self)
  @domains
end
embeds() click to toggle source
# File lib/populr.rb, line 91
def embeds
  @embeds ||= RestfulModelCollection.new(EmbedAsset, self)
  @embeds
end
images() click to toggle source
# File lib/populr.rb, line 81
def images
  @images ||= RestfulModelCollection.new(ImageAsset, self)
  @images
end
pops() click to toggle source
# File lib/populr.rb, line 66
def pops
  @pops ||= RestfulModelCollection.new(Pop, self)
  @pops
end
templates() click to toggle source
# File lib/populr.rb, line 61
def templates
  @templates ||= RestfulModelCollection.new(Template, self)
  @templates
end
url_for_path(path) click to toggle source
# File lib/populr.rb, line 96
def url_for_path(path)
  protocol, domain = @api_server.split('//')
  "#{protocol}//#{@api_key}:@#{domain}/#{@api_version}#{path}"
end