class Podium::Client

Attributes

name_to_url[R]
podlet_mapping[R]
resources[R]

Public Class Methods

new(name_to_url: nil) click to toggle source
# File lib/podium/client.rb, line 5
def initialize(name_to_url: nil)
  @name_to_url = name_to_url
  @podlet_mapping = {}
  @resources = {}
end

Public Instance Methods

load_content_for_podlets(podlet_names, context) click to toggle source
# File lib/podium/client.rb, line 16
def load_content_for_podlets(podlet_names, context)
  podlet_resources(podlet_names).reduce({}) do |acc, resource|
    acc[resource.name] = resource.fetch(context)
    acc
  end
end
podlet_resources(names) click to toggle source
# File lib/podium/client.rb, line 23
def podlet_resources(names)
  names.map { |name| resources[name] ||= Resource.new(podlet_uri(name), name) }
end
register(name, uri = nil) click to toggle source
# File lib/podium/client.rb, line 11
def register(name, uri = nil)
  uri ||= determine_uri(name)
  podlet_mapping[name] = uri
end

Private Instance Methods

determine_uri(name) click to toggle source
# File lib/podium/client.rb, line 31
def determine_uri(name)
  raise "name_to_url not specified, podlet must be registered with uri" unless name_to_url
  str = name_to_url.call(name)
  raise "name_to_url returned nil, must return a string" unless str
  URI(str)
end
podlet_uri(name) click to toggle source
# File lib/podium/client.rb, line 38
def podlet_uri(name)
  podlet_mapping.fetch(name)
end