Class: Oak::Request

Inherits:
Object show all
Defined in:
lib/oak_api.rb

Defined Under Namespace

Classes: HTTP, Options

Constant Summary collapse

DEFAULT_HEADERS =
{'authorization' => ENV['OAK_API_KEY']}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args) ⇒ Request

Returns a new instance of Request.



44
45
46
47
48
49
50
51
52
# File 'lib/oak_api.rb', line 44

def initialize(args)
  @options = Options.parse(args)
  @args = args
  @base_url = development? ? 'http://localhost:3000' : 'https://oak.software'
  @options[:headers] = @options[:headers].to_h.merge({'authorization' => ENV['OAK_API_KEY_DEVEL']}) if development?
  @headers = DEFAULT_HEADERS.merge(@options[:headers].to_h)
  @debug = @options[:debug]
  info self if @debug
end

Instance Attribute Details

#argsObject (readonly)

Returns the value of attribute args.



42
43
44
# File 'lib/oak_api.rb', line 42

def args
  @args
end

#base_urlObject (readonly)

Returns the value of attribute base_url.



42
43
44
# File 'lib/oak_api.rb', line 42

def base_url
  @base_url
end

#debugObject (readonly)

Returns the value of attribute debug.



42
43
44
# File 'lib/oak_api.rb', line 42

def debug
  @debug
end

#headersObject (readonly)

Returns the value of attribute headers.



42
43
44
# File 'lib/oak_api.rb', line 42

def headers
  @headers
end

#optionsObject (readonly)

Returns the value of attribute options.



42
43
44
# File 'lib/oak_api.rb', line 42

def options
  @options
end

Instance Method Details

#development?Boolean

Returns:

  • (Boolean)


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

def development?
  @options[:environment] == 'development'
end

#goObject



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/oak_api.rb', line 58

def go
  if @options[:list]
    args.unshift(?g, "endpoints")
  end

  req = HTTP.new(args, base_url, options[:api], headers, debug).set_request

  info [req, req.uri, req.uri.host, req.uri.port, req.body] if debug
  info req.to_hash if debug

  http = Net::HTTP.new(req.uri.host, req.uri.port)
  http.use_ssl = true unless development?
  res = http.request(req)

  puts res.body
end