class Staticdctl::StaticdClient

Class to interact with the Staticd API.

Example:

staticd_client = Staticdctl::StaticdClient.new(
  url: "http://staticd.domain.tld/api",
  access_id: ENV["STATICD_ACCESS_ID"],
  secret_key: ENV["STATICD_SECRET_KEY"]
)

Public Class Methods

new(url, hmac={}) click to toggle source
# File lib/staticdctl/staticd_client.rb, line 15
def initialize(url, hmac={})
  url = url
  access_id = hmac[:access_id] || ""
  secret_key = hmac[:secret_key] || ""
  @staticd_api = Staticdctl::RESTClient.new(
    url,
    access_id: access_id,
    secret_key: secret_key
  )
end

Public Instance Methods

attach_domain(site_name, domain_params) { |build_response(data)| ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 50
def attach_domain(site_name, domain_params)
  @staticd_api.call(
    :post,
    "/sites/#{site_name}/domain_names",
    domain_params
  ) do |data|
    yield build_response(data)
  end
end
cached_resources(digests) { |build_response(data)| ... } click to toggle source

Parse a sitemap of resources digest and return of sitemap purged of already know resources.

Submit a list of resources sha1 digests with HTTP path (in the sitemap format) and get a list purged of already known resources (resources already stored in database).

# File lib/staticdctl/staticd_client.rb, line 90
def cached_resources(digests)
  @staticd_api.call(:post, "/resources/get_cached", digests) do |data|
    yield build_response(data)
  end
end
create_release(site_name, archive_file, sitemap_file) { |build_response(data)| ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 75
def create_release(site_name, archive_file, sitemap_file)
  @staticd_api.send_files(
    "/sites/#{site_name}/releases",
    {file: archive_file, sitemap: sitemap_file}
  ) do |data|
    yield build_response(data)
  end
end
create_site(site_params) { |build_response(data)| ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 32
def create_site(site_params)
  @staticd_api.call(:post, "/sites", site_params) do |data|
    yield build_response(data)
  end
end
destroy_site(site_name) { || ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 38
def destroy_site(site_name)
  @staticd_api.call(:delete, "/sites/#{site_name}") do
    yield
  end
end
detach_domain(site_name, domain_name) { || ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 60
def detach_domain(site_name, domain_name)
  @staticd_api.call(
    :delete,
    "/sites/#{site_name}/domain_names/#{domain_name}"
  ) do
    yield
  end
end
domains(site_name) { |build_response(data)| ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 44
def domains(site_name)
  @staticd_api.call(:get, "/sites/#{site_name}/domain_names") do |data|
    yield build_response(data)
  end
end
releases(site_name) { |build_response(data)| ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 69
def releases(site_name)
  @staticd_api.call :get, "/sites/#{site_name}/releases" do |data|
    yield build_response(data)
  end
end
sites() { |build_response(data)| ... } click to toggle source
# File lib/staticdctl/staticd_client.rb, line 26
def sites
  @staticd_api.call(:get, "/sites") do |data|
    yield build_response(data)
  end
end

Private Instance Methods

build_collection(data) click to toggle source
# File lib/staticdctl/staticd_client.rb, line 102
def build_collection(data)
  data.map { |element| build_object(element) }
end
build_object(data) click to toggle source
# File lib/staticdctl/staticd_client.rb, line 106
def build_object(data)
  struct = OpenStruct.new
  data.each do |key, value|
    struct[key] =
      case
      when value.kind_of?(Array) then build_collection(value)
      when value.kind_of?(Hash) then build_object(value)
      else value
      end
  end
  struct
end
build_response(data) click to toggle source
# File lib/staticdctl/staticd_client.rb, line 98
def build_response(data)
  data.kind_of?(Array) ? build_collection(data) : build_object(data)
end