1
|
require 'csv'
|
2
|
|
3
|
module HammerCLICsv
|
4
|
class HeadpinApi
|
5
|
def initialize(config)
|
6
|
@server = config[:server]
|
7
|
@username = config[:username]
|
8
|
@password = config[:password]
|
9
|
end
|
10
|
|
11
|
def get(name)
|
12
|
url = "#{@server}/api/#{name}"
|
13
|
uri = URI(url)
|
14
|
nethttp = Net::HTTP.new(uri.host, uri.port)
|
15
|
nethttp.use_ssl = uri.scheme == 'https'
|
16
|
nethttp.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
17
|
results = nethttp.start do |http|
|
18
|
request = Net::HTTP::Get.new uri.request_uri
|
19
|
request.basic_auth(@username, @password)
|
20
|
response = http.request(request)
|
21
|
JSON.parse(response.body)
|
22
|
end
|
23
|
results
|
24
|
end
|
25
|
|
26
|
def environment(id)
|
27
|
@environments ||= {}
|
28
|
environment = @environments[id]
|
29
|
if environment.nil?
|
30
|
environment = get("environments/#{id}")
|
31
|
raise environment['displayMessage'] if environment['displayMessage']
|
32
|
@environments[id] = environment
|
33
|
end
|
34
|
|
35
|
return environment
|
36
|
end
|
37
|
|
38
|
def content_view(id)
|
39
|
@content_views ||= {}
|
40
|
content_view = @content_views[id]
|
41
|
if content_view.nil?
|
42
|
content_view = get("content_views/#{id}")
|
43
|
raise content_view['displayMessage'] if content_view['displayMessage']
|
44
|
@content_views[id] = content_view
|
45
|
end
|
46
|
|
47
|
return content_view
|
48
|
end
|
49
|
end
|
50
|
end
|