module TheBigDb

Heavily inspired by “core_ext/module/attribute_accessors” from activesupport (4.0.0.beta)

Constants

DEFAULT_CONFIGURATION

Public Class Methods

Statement(action, params) click to toggle source

Generic request to statements executor

# File lib/thebigdb/resources/statement.rb, line 3
def self.Statement(action, params)
  method = ["get", "show", "search"].include?(action.to_s) ? "GET" : "POST"
  path = "/statements/#{action}"

  request = TheBigDB::Request.new
  request.prepare(method, path, params)
  request.execute
end
User(action, params) click to toggle source
# File lib/thebigdb/resources/user.rb, line 2
def self.User(action, params)
  method = "GET"
  path = "/users/#{action}"

  request = TheBigDB::Request.new
  request.prepare(method, path, params)
  request.execute
end
after_request_execution=(object) click to toggle source
# File lib/thebigdb.rb, line 62
def self.after_request_execution=(object)
  unless object.is_a?(Proc)
    raise ArgumentError, "You must pass a proc or lambda"
  end
  @@after_request_execution = object
end
before_request_execution=(object) click to toggle source
# File lib/thebigdb.rb, line 55
def self.before_request_execution=(object)
  unless object.is_a?(Proc)
    raise ArgumentError, "You must pass a proc or lambda"
  end
  @@before_request_execution = object
end
create(nodes = {}) click to toggle source
# File lib/thebigdb/resources/statement.rb, line 55
def self.create(nodes = {})
  StatementRequest.new("create").with("nodes" => nodes)
end
downvote(id = "") click to toggle source
# File lib/thebigdb/resources/statement.rb, line 67
def self.downvote(id = "")
  StatementRequest.new("downvote").with("id" => id)
end
mattr_accessor(*syms) click to toggle source
# File lib/thebigdb/module_attribute_accessors.rb, line 39
def self.mattr_accessor(*syms)
  mattr_reader(*syms)
  mattr_writer(*syms)
end
mattr_reader(*syms) click to toggle source
# File lib/thebigdb/module_attribute_accessors.rb, line 3
  def self.mattr_reader(*syms)
    syms.each do |sym|
      raise NameError.new('invalid attribute name') unless sym =~ /^[_A-Za-z]\w*$/
      class_eval(<<-EOS, __FILE__, __LINE__ + 1)
        @@#{sym} = nil unless defined? @@#{sym}

        def self.#{sym}
          @@#{sym}
        end
      EOS

      class_eval(<<-EOS, __FILE__, __LINE__ + 1)
        def #{sym}
          @@#{sym}
        end
      EOS
    end
  end
mattr_writer(*syms) click to toggle source
# File lib/thebigdb/module_attribute_accessors.rb, line 22
  def self.mattr_writer(*syms)
    syms.each do |sym|
      raise NameError.new('invalid attribute name') unless sym =~ /^[_A-Za-z]\w*$/
      class_eval(<<-EOS, __FILE__, __LINE__ + 1)
        def self.#{sym}=(obj)
          @@#{sym} = obj
        end
      EOS

      class_eval(<<-EOS, __FILE__, __LINE__ + 1)
        def #{sym}=(obj)
          @@#{sym} = obj
        end
      EOS
    end
  end
reset_default_configuration() click to toggle source
# File lib/thebigdb.rb, line 36
def self.reset_default_configuration
  DEFAULT_CONFIGURATION.each_pair do |key, value|
    send(key + "=", value)
  end
end
send_request(*args) click to toggle source

Shortcut: prepares, executes and returns Hash containing the server's response

# File lib/thebigdb.rb, line 81
def self.send_request(*args)
  request = Request.new
  request.prepare(*args)
  request.execute
  request.response
end
show(id = "") click to toggle source
# File lib/thebigdb/resources/statement.rb, line 59
def self.show(id = "")
  StatementRequest.new("show").with("id" => id)
end
upvote(id = "") click to toggle source
# File lib/thebigdb/resources/statement.rb, line 63
def self.upvote(id = "")
  StatementRequest.new("upvote").with("id" => id)
end
use_ssl=(bool) click to toggle source
# File lib/thebigdb.rb, line 43
def self.use_ssl=(bool)
  @@api_port = bool ? 443 : 80
  @@use_ssl = bool
end
verify_ssl_certificates=(bool) click to toggle source
# File lib/thebigdb.rb, line 48
def self.verify_ssl_certificates=(bool)
  if bool
    raise NotImplementedError, "The certificates are never checked"
  end
  @@verify_ssl_certificates = bool
end
with_configuration(new_configuration) { || ... } click to toggle source
# File lib/thebigdb.rb, line 69
def self.with_configuration(new_configuration, &block)
  current_configuration = Hash[DEFAULT_CONFIGURATION.keys.map{|k| [k, send(k)] }]
  new_configuration.each_pair{|k,v| send(k.to_s + "=", v) }
  begin
    yield
  ensure
    current_configuration.each_pair{|k,v| send(k.to_s + "=", v) }
  end
end