class Locomotive::Coal::Client

Attributes

credentials[R]
options[R]
uri[R]

Public Class Methods

new(uri, credentials, options = {}) click to toggle source
# File lib/locomotive/coal/client.rb, line 7
def initialize(uri, credentials, options = {})
  if uri.blank? || credentials.blank?
    raise MissingURIOrCredentialsError.new('URI and/or credentials are missing')
  else
    @options = { path_prefix: 'locomotive' }.merge(options).with_indifferent_access
    @uri, @credentials = prepare_uri(uri), credentials.with_indifferent_access
  end
end

Public Instance Methods

accounts() click to toggle source
# File lib/locomotive/coal/client.rb, line 24
def accounts
  @accounts ||= Resources::Accounts.new(uri, connection)
end
content_assets() click to toggle source
# File lib/locomotive/coal/client.rb, line 55
def content_assets
  @content_assets ||= Resources::ContentAssets.new(uri, connection)
end
content_entries(content_type) click to toggle source
# File lib/locomotive/coal/client.rb, line 50
def content_entries(content_type)
  @content_entries ||= {}
  @content_entries[content_type.slug] ||= Resources::ContentEntries.new(uri, connection, content_type)
end
content_types() click to toggle source
# File lib/locomotive/coal/client.rb, line 44
def content_types
  @content_types ||= Resources::ContentTypes.new(uri, connection)
end
Also aliased as: contents
contents()
Alias for: content_types
current_site() click to toggle source
# File lib/locomotive/coal/client.rb, line 36
def current_site
  @current_site ||= Resources::CurrentSite.new(uri, connection)
end
engine_version() click to toggle source
# File lib/locomotive/coal/client.rb, line 75
def engine_version
  @engine_version ||= Resources::EngineVersion.new(uri, connection).version
end
Also aliased as: version
memberships() click to toggle source
# File lib/locomotive/coal/client.rb, line 32
def memberships
  @memberships ||= Resources::Memberships.new(uri, connection)
end
my_account() click to toggle source
# File lib/locomotive/coal/client.rb, line 20
def my_account
  @my_account ||= Resources::MyAccount.new(uri, connection)
end
pages() click to toggle source
# File lib/locomotive/coal/client.rb, line 40
def pages
  @pages ||= Resources::Pages.new(uri, connection)
end
reset() click to toggle source
# File lib/locomotive/coal/client.rb, line 89
def reset
  @token = @my_account = @sites = @current_site = @pages = @content_types = @theme_assets = @content_assets = @translations = nil
end
scope_by(site_or_handle) click to toggle source
# File lib/locomotive/coal/client.rb, line 81
def scope_by(site_or_handle)
  if site_or_handle.respond_to?(:handle)
    @current_site, site_or_handle = site_or_handle, site_or_handle.handle
  end
  options[:handle] = site_or_handle
  self
end
sections() click to toggle source
# File lib/locomotive/coal/client.rb, line 67
def sections
  @sections ||= Resources::Sections.new(uri, connection)
end
sites() click to toggle source
# File lib/locomotive/coal/client.rb, line 28
def sites
  @sites ||= Resources::Sites.new(uri, connection)
end
snippets() click to toggle source
# File lib/locomotive/coal/client.rb, line 63
def snippets
  @snippets ||= Resources::Snippets.new(uri, connection)
end
ssl?() click to toggle source
# File lib/locomotive/coal/client.rb, line 93
def ssl?
  !!self.options[:ssl]
end
theme_assets() click to toggle source
# File lib/locomotive/coal/client.rb, line 59
def theme_assets
  @theme_assets ||= Resources::ThemeAssets.new(uri, connection)
end
token() click to toggle source
# File lib/locomotive/coal/client.rb, line 16
def token
  @token ||= Resources::Token.new(uri, credentials).get
end
translations() click to toggle source
# File lib/locomotive/coal/client.rb, line 71
def translations
  @translations ||= Resources::Translations.new(uri, connection)
end
version()
Alias for: engine_version

Private Instance Methods

connection() click to toggle source
# File lib/locomotive/coal/client.rb, line 99
def connection
  _token = credentials[:token] || -> { token }
  credentials.merge(token: _token, handle: options[:handle])
end
prepare_uri(str) click to toggle source
# File lib/locomotive/coal/client.rb, line 108
def prepare_uri(str)
  str = "http://#{str.to_s}" unless str.to_s =~ /^https?:\/\//

  URI(str).tap do |uri|
    if ssl?
      uri.scheme  = 'https'
      uri.port    = 443 if uri.port = 80
    end

    if uri.path == '/' || uri.path.blank?
      uri.merge!(uri_path)
    end
  end
end
uri_path() click to toggle source
# File lib/locomotive/coal/client.rb, line 104
def uri_path
  [self.options[:path_prefix], 'api', 'v3'].join('/')
end