class Drumknott::Refresh

Constants

URL

Attributes

key[R]
name[R]

Public Class Methods

call(name, key, include_pages = true) click to toggle source
# File lib/drumknott/refresh.rb, line 6
def self.call(name, key, include_pages = true)
  new(name, key, include_pages).call
end
new(name, key, include_pages) click to toggle source
# File lib/drumknott/refresh.rb, line 10
def initialize(name, key, include_pages)
  @name          = name
  @key           = key
  @include_pages = include_pages
end

Public Instance Methods

call() click to toggle source
# File lib/drumknott/refresh.rb, line 16
def call
  site.process

  clear
  update
end

Private Instance Methods

clear() click to toggle source
# File lib/drumknott/refresh.rb, line 27
def clear
  connection.post do |request|
    request.url "/api/v1/#{name}/pages/clear"
    request.headers["AUTHENTICATION"] = key
  end
end
connection() click to toggle source
# File lib/drumknott/refresh.rb, line 34
def connection
  @connection ||= Faraday.new(:url => URL) do |faraday|
    faraday.request :url_encoded
    faraday.adapter Faraday.default_adapter
  end
end
include_pages?() click to toggle source
# File lib/drumknott/refresh.rb, line 41
def include_pages?
  @include_pages
end
output() click to toggle source
# File lib/drumknott/refresh.rb, line 45
def output
  @output ||= output_class.new { |document| update_document document }
end
output_class() click to toggle source
# File lib/drumknott/refresh.rb, line 49
def output_class
  return Drumknott::Outputs::Silent if ENV["DRUMKNOTT_SILENT"]

  require "ruby-progressbar"
  Drumknott::Outputs::ProgressBar
rescue LoadError
  Drumknott::Outputs::Silent
end
page_json_for(document) click to toggle source
# File lib/drumknott/refresh.rb, line 58
def page_json_for(document)
  JSON.generate(
    :page => {
      :name    => document.data["title"],
      :path    => document.url,
      :content => document.output
    }
  )
end
site() click to toggle source
# File lib/drumknott/refresh.rb, line 68
def site
  @site ||= Jekyll::Site.new Jekyll.configuration
end
update() click to toggle source
# File lib/drumknott/refresh.rb, line 72
def update
  output.call "Posts", site.posts.docs
  return unless include_pages?

  output.call(
    "Pages",
    site.pages.select { |page| page.html? || page.url.end_with?("/") }
  )
end
update_document(document) click to toggle source
# File lib/drumknott/refresh.rb, line 82
def update_document(document)
  connection.put do |request|
    request.url "/api/v1/#{name}/pages"

    request.headers["AUTHENTICATION"] = key
    request.headers["Content-Type"]   = "application/json"

    request.body = page_json_for document
  end
end