Module: Wewoo::Adapter

Included in:
Edge, Graph, Vertex
Defined in:
lib/wewoo/adapter.rb

Defined Under Namespace

Classes: InvalidRequestError, NoDataError

Class Method Summary collapse

Class Method Details

.delete(url, opts = {}) ⇒ Object



24
25
26
# File 'lib/wewoo/adapter.rb', line 24

def delete( url, opts={} )
  handle_response( Typhoeus.delete( url, opts ) )
end

.get(url, opts = {}) ⇒ Object



12
13
14
# File 'lib/wewoo/adapter.rb', line 12

def get( url, opts={} )
  handle_response( Typhoeus.get( url, opts ) )
end

.handle_response(resp) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/wewoo/adapter.rb', line 35

def handle_response( resp )
  log "URL", resp.effective_url

  unless resp.success?
    error = "-- " + JSON.parse( resp.response_body )['message'] rescue ""
    raise InvalidRequestError, "<#{resp.response_code}> " +
          "Failed request:#{resp.effective_url} #{error}"
  end

  if resp.body.empty? or resp.body == "null"
    raise NoDataError, "No data found at location #{url}"
  end

  body = JSON.parse( resp.body )
  log "RESP", body
  results = body['results'] || body
  results.is_a?(Hash) ? Map[results] : results
end

.log(title, message) ⇒ Object



28
29
30
31
32
33
# File 'lib/wewoo/adapter.rb', line 28

def log( title, message )
  return unless Configuration.debug

  msg = "[Wewoo] #{title} -- #{message}"
  logger.debug msg
end

.loggerObject



54
55
56
# File 'lib/wewoo/adapter.rb', line 54

def logger
  @logger ||= Logger.new( Configuration.log_file )
end

.post(url, opts = {}) ⇒ Object



16
17
18
# File 'lib/wewoo/adapter.rb', line 16

def post( url, opts={} )
  handle_response( Typhoeus.post( url, opts ) )
end

.put(url, opts = {}) ⇒ Object



20
21
22
# File 'lib/wewoo/adapter.rb', line 20

def put( url, opts={} )
  handle_response( Typhoeus.put( url, opts ) )
end