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
search(nodes = {})
click to toggle source
Shortcuts to actions
# File lib/thebigdb/resources/statement.rb, line 51 def self.search(nodes = {}) StatementRequest.new("search").with("nodes" => nodes) 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