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

Class Method Summary collapse

Class Attribute Details

.configurationObject

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

Yields:



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