Module: DomoscioRails
- Defined in:
- lib/domoscio_rails.rb,
lib/domoscio_rails/json.rb,
lib/domoscio_rails/errors.rb,
lib/domoscio_rails/version.rb,
lib/domoscio_rails/resource.rb,
lib/domoscio_rails/admin/user.rb,
lib/domoscio_rails/http_calls.rb,
lib/domoscio_rails/data/result.rb,
lib/domoscio_rails/admin/company.rb,
lib/domoscio_rails/student/student.rb,
lib/domoscio_rails/utils/review_util.rb,
lib/domoscio_rails/authorization_token.rb,
lib/domoscio_rails/knowledge/knowledge_edge.rb,
lib/domoscio_rails/knowledge/knowledge_node.rb,
lib/domoscio_rails/knowledge/knowledge_graph.rb,
lib/domoscio_rails/data/knowledge_node_student.rb
Defined Under Namespace
Modules: AuthorizationToken, HTTPCalls, JSON Classes: Company, Configuration, Error, KnowledgeEdge, KnowledgeGraph, KnowledgeNode, KnowledgeNodeStudent, Resource, ResponseError, Result, ReviewUtil, Student, User
Constant Summary collapse
- VERSION =
"0.0.7"
Class Attribute Summary collapse
-
.configuration ⇒ Object
Returns the value of attribute configuration.
Class Method Summary collapse
- .api_uri(url = '') ⇒ Object
- .configure {|configuration| ... } ⇒ Object
-
.request(method, url, params = {}, filters = {}, headers = request_headers, before_request_proc = nil) ⇒ Object
-
method: HTTP method; lowercase symbol, e.g.
-
Class Attribute Details
.configuration ⇒ Object
Returns the value of attribute configuration.
46 47 48 |
# File 'lib/domoscio_rails.rb', line 46 def configuration @configuration end |
Class Method Details
.api_uri(url = '') ⇒ Object
54 55 56 |
# File 'lib/domoscio_rails.rb', line 54 def self.api_uri(url='') URI(configuration.root_url + url) end |
.configure {|configuration| ... } ⇒ Object
49 50 51 52 |
# File 'lib/domoscio_rails.rb', line 49 def self.configure self.configuration ||= Configuration.new yield configuration end |
.request(method, url, params = {}, filters = {}, headers = request_headers, before_request_proc = nil) ⇒ Object
-
method: HTTP method; lowercase symbol, e.g. :get, :post etc. -
url: the part after Configuration#root_url -
params: hash; entity data for creation, update etc.; will dump it by JSON and assign to Net::HTTPRequest#body -
filters: hash; pagination params etc.; will encode it by URI and assign to URI#query -
headers: hash; request_headers by default -
before_request_proc: optional proc; will call it passing the Net::HTTPRequest instance just before Net::HTTPRequest#request
Raises DomoscioRails::ResponseError if response code != 200.
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/domoscio_rails.rb', line 68 def self.request(method, url, params={}, filters={}, headers = request_headers, before_request_proc = nil) return false if @disabled uri = api_uri(url) uri.query = URI.encode_www_form(filters) unless filters.empty? res = Net::HTTP.start(uri.host, uri.port) do |http| # , use_ssl: uri.scheme == 'https') do |http| req = Net::HTTP::const_get(method.capitalize).new(uri.request_uri, headers) req.body = DomoscioRails::JSON.dump(params) before_request_proc.call(req) if before_request_proc http.request req end # decode json data begin data = DomoscioRails::JSON.load(res.body.nil? ? '' : res.body) rescue MultiJson::LoadError data = {} end ############### TEMP!!!! ####################################################### #pp method, uri.request_uri, params #, filters, headers #pp res, data #puts # if (!(res.is_a? Net::HTTPOK)) # ex = DomoscioRails::ResponseError.new(uri, res.code, data) # ############## TEMP!!!! ######################################################## # #pp ex, data # raise ex # end # copy pagination info if any # ['x-number-of-pages', 'x-number-of-items'].each { |k| # filters[k.gsub('x-number-of-', 'total_')] = res[k].to_i if res[k] # } data end |