Module: Vagrantboxes::Client

Defined in:
lib/vagrantboxes/client.rb

Class Method Summary collapse

Class Method Details

.add(id, api_url) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/vagrantboxes/client.rb', line 49

def self.add(id, api_url)
  base = api_url ? api_url : ENDPOINT
  if id =~ /^[-+]?[0-9]+$/
    url = "#{base}/boxes/#{id}.json"
    result = request(url)
    env = Vagrant::Environment.new
    env.ui = Vagrant::UI::Shell.new(env, Thor::Base.shell.new)
    env.load!
    Vagrant::Box.add(env, result['title'], result['url'])
  end
end

.request(url) ⇒ Object



61
62
63
64
65
# File 'lib/vagrantboxes/client.rb', line 61

def self.request(url)
  resp = Net::HTTP.get_response(URI.parse(url))
  data = resp.body
  resp.code == "200" ? JSON.parse(data) : nil
end

.search(term, api_url) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/vagrantboxes/client.rb', line 13

def self.search(term, api_url)
  base = api_url ? api_url : ENDPOINT
  url = "#{base}/boxes.json"
  if term
    url = "#{url}?q=#{CGI.escape(term)}"
  end
  results = request(url)
  results.sort! { |a,b| a['id'] <=> b['id'] }
  results.each { |result|
    puts "#{result['id'].to_s.ljust(4)} #{result['title'].ljust(25)} #{result['url']}"
  }
end

.show(id, api_url) ⇒ Object



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/vagrantboxes/client.rb', line 35

def self.show(id, api_url)
  base = api_url ? api_url : ENDPOINT
  if id =~ /^[-+]?[0-9]+$/
    url = "#{base}/boxes/#{id}.json"
    result = request(url)

    puts
    puts result['title']
    puts result['url']
    puts
    puts result['description']
  end
end

.url(id, api_url) ⇒ Object



26
27
28
29
30
31
32
33
# File 'lib/vagrantboxes/client.rb', line 26

def self.url(id, api_url)
  base = api_url ? api_url : ENDPOINT
  if id =~ /^[-+]?[0-9]+$/
    url = "#{base}/boxes/#{id}.json"
    result = request(url)
    puts result['url']
  end
end