class Fulcrum::Client

Constants

DEFAULT_URL
DEFAULT_USER_AGENT

Attributes

connection[RW]
key[RW]
response[RW]
url[RW]

Public Class Methods

authenticate(username, password, url=DEFAULT_URL) click to toggle source
# File lib/fulcrum/client.rb, line 44
def self.authenticate(username, password, url=DEFAULT_URL)
  connection = create_connection(url)

  connection.basic_auth(username, password)

  resp = connection.get('users.json')

  resp.body['user']['contexts'].map do |context|
    { id: context['id'],
      name: context['name'] }
  end
end
create_authorization(username, password, organization_id, note, timeout = nil, user_id = nil, url=DEFAULT_URL) click to toggle source
# File lib/fulcrum/client.rb, line 70
def self.create_authorization(username, password, organization_id, note, timeout = nil, user_id = nil, url=DEFAULT_URL)
  connection = create_connection(url)

  connection.basic_auth(username, password)

  body = { authorization: { organization_id: organization_id,
                            note: note, timeout: timeout, user_id: user_id } }
  resp = connection.post('authorizations.json', body)

  resp.body['authorization']
end
create_connection(url, key = nil) click to toggle source
# File lib/fulcrum/client.rb, line 82
def self.create_connection(url, key = nil)
  Faraday.new(url) do |connection|
    connection.request :multipart
    connection.request :json

    connection.response :raise_error
    connection.response :json, content_type: 'application/json'

    connection.adapter  Faraday.default_adapter

    connection.headers['X-ApiToken'] = key if key
    connection.headers['X-Require-Media'] = 'false'
    connection.headers['User-Agent'] = DEFAULT_USER_AGENT
  end
end
get_user(username, password, url=DEFAULT_URL) click to toggle source
# File lib/fulcrum/client.rb, line 57
def self.get_user(username, password, url=DEFAULT_URL)
  connection = create_connection(url)

  connection.basic_auth(username, password)

  resp = connection.get('users.json')

  user = resp.body['user']
  user['contexts'] = user['contexts'].map{|c| c.except!('api_token')}

  user
end
new(key = nil, url = nil) click to toggle source
# File lib/fulcrum/client.rb, line 15
def initialize(key = nil, url = nil)
  self.key = key
  self.url = url || DEFAULT_URL
end

Public Instance Methods

attachments() click to toggle source
# File lib/fulcrum/client.rb, line 122
def attachments
  @attachment ||= Fulcrum::Attachment.new(self)
end
audio() click to toggle source
# File lib/fulcrum/client.rb, line 118
def audio
  @audio ||= Fulcrum::Audio.new(self)
end
audit_logs() click to toggle source
# File lib/fulcrum/client.rb, line 158
def audit_logs
  @audit_logs ||= Fulcrum::AuditLog.new(self)
end
authorizations() click to toggle source
# File lib/fulcrum/client.rb, line 162
def authorizations
  @authorizations ||= Fulcrum::Authorization.new(self)
end
call(method = :get, path = '', params = {}) click to toggle source
# File lib/fulcrum/client.rb, line 35
def call(method = :get, path = '', params = {})
  @response = connection.send(method.to_sym, path, params.with_indifferent_access)
  @response.body
end
changesets() click to toggle source
# File lib/fulcrum/client.rb, line 146
def changesets
  @changesets ||= Fulcrum::Changeset.new(self)
end
choice_lists() click to toggle source
# File lib/fulcrum/client.rb, line 98
def choice_lists
  @choice_lists ||= Fulcrum::ChoiceList.new(self)
end
classification_sets() click to toggle source
# File lib/fulcrum/client.rb, line 102
def classification_sets
  @classification_sets ||= Fulcrum::ClassificationSet.new(self)
end
forms() click to toggle source
# File lib/fulcrum/client.rb, line 106
def forms
  @forms ||= Fulcrum::Form.new(self)
end
key=(key) click to toggle source
# File lib/fulcrum/client.rb, line 20
def key=(key)
  @key = key
  reset
end
layers() click to toggle source
# File lib/fulcrum/client.rb, line 142
def layers
  @layers ||= Fulcrum::Layer.new(self)
end
memberships() click to toggle source
# File lib/fulcrum/client.rb, line 138
def memberships
  @memberships ||= Fulcrum::Membership.new(self)
end
photos() click to toggle source
# File lib/fulcrum/client.rb, line 110
def photos
  @photos ||= Fulcrum::Photo.new(self)
end
projects() click to toggle source
# File lib/fulcrum/client.rb, line 130
def projects
  @projects ||= Fulcrum::Project.new(self)
end
query(sql, format = 'json') click to toggle source
# File lib/fulcrum/client.rb, line 166
def query(sql, format = 'json')
  body = { q: sql,
           format: format }
  call(:post, 'query', body)
end
records() click to toggle source
# File lib/fulcrum/client.rb, line 134
def records
  @records ||= Fulcrum::Record.new(self)
end
reset() click to toggle source
# File lib/fulcrum/client.rb, line 30
def reset
  @response = nil
  @connection = nil
end
roles() click to toggle source
# File lib/fulcrum/client.rb, line 154
def roles
  @roles ||= Fulcrum::Role.new(self)
end
signatures() click to toggle source
# File lib/fulcrum/client.rb, line 126
def signatures
  @signatures ||= Fulcrum::Signature.new(self)
end
url=(url) click to toggle source
# File lib/fulcrum/client.rb, line 25
def url=(url)
  @url = url
  reset
end
videos() click to toggle source
# File lib/fulcrum/client.rb, line 114
def videos
  @videos ||= Fulcrum::Video.new(self)
end
webhooks() click to toggle source
# File lib/fulcrum/client.rb, line 150
def webhooks
  @webhooks ||= Fulcrum::Webhook.new(self)
end