class Podium::Resource
Constants
- HTTP_OPTS
Attributes
name[R]
uri[R]
Public Class Methods
new(uri, name)
click to toggle source
# File lib/podium/resource.rb, line 21 def initialize(uri, name) @uri = uri @name = name end
Public Instance Methods
fetch(context = {})
click to toggle source
# File lib/podium/resource.rb, line 30 def fetch(context = {}) response = make_request(content_uri, context) check_podlet_version!(response["podlet-version"]) response.body.force_encoding("UTF-8") end
manifest()
click to toggle source
# File lib/podium/resource.rb, line 26 def manifest @manifest ||= fetch_manifest end
Private Instance Methods
check_podlet_version!(version)
click to toggle source
# File lib/podium/resource.rb, line 38 def check_podlet_version!(version) return if version == manifest.version raise VersionMismatchError.new(version, manifest.version) end
content_uri()
click to toggle source
# File lib/podium/resource.rb, line 66 def content_uri URI("#{uri}#{manifest.content}") end
fetch_manifest()
click to toggle source
# File lib/podium/resource.rb, line 44 def fetch_manifest Manifest.new(JSON.parse(make_request(manifest_uri, {}).body)) end
make_request(uri, context)
click to toggle source
# File lib/podium/resource.rb, line 48 def make_request(uri, context) response = Net::HTTP.start(uri.host, uri.port, HTTP_OPTS) do |http| request = Net::HTTP::Get.new uri context.compact.each do |k, v| header = "podium-#{k.to_s.gsub("_", "-")}" request[header] = v end http.request(request) end raise StandardError, "Non 200 response from podlet" if response.code != "200" response end
manifest_uri()
click to toggle source
# File lib/podium/resource.rb, line 62 def manifest_uri URI("#{uri}/manifest.json") end