Class: Latestver::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/latestver/client.rb

Constant Summary collapse

REGEX_NAME_TAG =
/\A([a-z0-9][a-z0-9_\.-]+[a-z0-9]):([a-z0-9][a-z0-9_\.-]+[a-z0-9])\z/i

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(server_url) ⇒ Client



10
11
12
# File 'lib/latestver/client.rb', line 10

def initialize(server_url)
  @server_url = server_url.to_s.sub(/\/\z/, '')
end

Instance Attribute Details

#server_urlObject (readonly)

Returns the value of attribute server_url.



8
9
10
# File 'lib/latestver/client.rb', line 8

def server_url
  @server_url
end

Instance Method Details

#catalog_get(name_tag) ⇒ Object

Raises:

  • (ArgumentError)


14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/latestver/client.rb', line 14

def catalog_get(name_tag)
  if name_tag.index(':').nil?
    name_tag = name_tag + ':latest'
  end

  raise ArgumentError, "Invalid NAME:TAG, #{name_tag}" unless name_tag.match(REGEX_NAME_TAG)

  name, tag = name_tag.split(':')
  response = ::Faraday.get "#{server_url}/catalog-api/#{name}/#{tag}.json"

  if response.status == 200
    JSON.parse(response.body)
  else
    raise ClientError, "Failed to get entry from catalog. #{response.reason_phrase}"
  end
end