Class: Qravan::Rest

Inherits:
Object
  • Object
show all
Defined in:
lib/qravan/source/rest.rb

Overview

Database class

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(source) ⇒ Rest

Returns a new instance of Rest.



11
12
13
# File 'lib/qravan/source/rest.rb', line 11

def initialize(source)
  @connection = source
end

Instance Attribute Details

#connectionObject

Returns the value of attribute connection.



9
10
11
# File 'lib/qravan/source/rest.rb', line 9

def connection
  @connection
end

#resultObject

Returns the value of attribute result.



9
10
11
# File 'lib/qravan/source/rest.rb', line 9

def result
  @result
end

Instance Method Details

#extract(sql = "select * from smevql1.driverlicenseql3;") ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/qravan/source/rest.rb', line 15

def extract(sql = "select * from smevql1.driverlicenseql3;")
  Console.logger.info "REST EXTRACT: #{sql}"
  internet = Async::HTTP::Internet.new
  barrier = Async::Barrier.new
  time = Time.now
  @result = []
  url = "#{@connection["protocol"]}://#{@connection["host"]}:#{@connection["port"]}/#{@connection["path"]}"
  headers = [%w[accept application/json], %w[content-type application/json]]
  body = [@connection["template"] % { request: sql }]
  barrier.async do
    response = internet.post(url, headers, body)
    response_body = JSON.parse(response.read)
    @result << response_body[@connection["payload-path"]]
  ensure
    response.finish
  end
  barrier.wait
  @result << { time: "REST Duration: #{Time.now - time}s " }
  @result
end