class JekyllAdmin::Server
Constants
- EXTENSIONS
supported extensions, in order of preference, for now, no .csv
- ROUTES
Public Instance Methods
collection()
click to toggle source
# File lib/jekyll-admin/server/collection.rb, line 45 def collection collection = site.collections.find { |l, _c| l == params["collection_id"] } collection[1] if collection end
configuration()
click to toggle source
Computed configuration, with updates and defaults
# File lib/jekyll-admin/server/configuration.rb, line 22 def configuration @configuration ||= Jekyll.configuration(overrides) end
configuration_body()
click to toggle source
The user's uploaded configuration for updates
# File lib/jekyll-admin/server/configuration.rb, line 37 def configuration_body YAML.dump request_payload end
configuration_path()
click to toggle source
Returns the path to the first config file discovered
# File lib/jekyll-admin/server/configuration.rb, line 32 def configuration_path sanitized_path configuration.config_files(overrides).first end
data_file_body()
click to toggle source
# File lib/jekyll-admin/server/data.rb, line 36 def data_file_body if !request_payload["raw_content"].to_s.empty? request_payload["raw_content"] elsif !request_payload["content"].to_s.empty? YAML.dump(request_payload["content"]).sub(%r!\A---\n!, "") end end
directory_docs()
click to toggle source
# File lib/jekyll-admin/server/collection.rb, line 55 def directory_docs collection.docs.find_all { |d| File.dirname(d.path) == directory_path } end
directory_pages()
click to toggle source
# File lib/jekyll-admin/server/page.rb, line 58 def directory_pages pages.find_all do |p| sanitized_path(File.dirname(p.path)) == directory_path end end
directory_paths()
click to toggle source
returns relative path of root level directories that contain pages
# File lib/jekyll-admin/server/page.rb, line 65 def directory_paths pages.map { |p| File.dirname(p.path).split("/")[0] }.uniq end
document_id()
click to toggle source
# File lib/jekyll-admin/server/collection.rb, line 50 def document_id path = "#{params["splat"].first}/#{filename}" path.gsub(%r!(\d{4})/(\d{2})/(\d{2})/(.*)!, '\1-\2-\3-\4') end
ensure_collection()
click to toggle source
# File lib/jekyll-admin/server/collection.rb, line 59 def ensure_collection render_404 if collection.nil? end
ensure_directory()
click to toggle source
# File lib/jekyll-admin/server/collection.rb, line 63 def ensure_directory ensure_collection render_404 unless Dir.exist?(directory_path) end
ensure_html_content()
click to toggle source
# File lib/jekyll-admin/server/page.rb, line 37 def ensure_html_content return if html_content? content_type :json halt 422, json("error_message" => "Invalid file extension for pages") end
entries()
click to toggle source
# File lib/jekyll-admin/server/collection.rb, line 68 def entries args = { :base => site.source, :content_type => params["collection_id"], :splat => params["splat"].first, } # get the directories inside the requested directory directory = JekyllAdmin::Directory.new(directory_path, args) directories = directory.directories # merge directories with the documents at the same level directories.concat(directory_docs.sort_by(&:date).reverse) end
file_list_dir(path)
click to toggle source
# File lib/jekyll-admin/server/static_file.rb, line 50 def file_list_dir(path) end
html_content?()
click to toggle source
# File lib/jekyll-admin/server/page.rb, line 43 def html_content? page = JekyllAdmin::PageWithoutAFile.new( site, site.source, "", request_payload["path"] || filename ) page.data = request_payload["front_matter"] page.html? end
overrides()
click to toggle source
# File lib/jekyll-admin/server/configuration.rb, line 15 def overrides { "source" => sanitized_path("/"), } end
pages()
click to toggle source
# File lib/jekyll-admin/server/page.rb, line 54 def pages site.pages.select(&:html?) end
raw_configuration()
click to toggle source
Raw configuration, as it sits on disk
# File lib/jekyll-admin/server/configuration.rb, line 27 def raw_configuration configuration.read_config_file(configuration_path) end
static_file_body()
click to toggle source
# File lib/jekyll-admin/server/static_file.rb, line 38 def static_file_body if !request_payload["raw_content"].to_s.empty? request_payload["raw_content"].to_s else Base64.decode64 request_payload["encoded_content"].to_s end end
static_files()
click to toggle source
# File lib/jekyll-admin/server/static_file.rb, line 46 def static_files site.static_files end
static_files_for_path()
click to toggle source
# File lib/jekyll-admin/server/static_file.rb, line 52 def static_files_for_path # Joined with / to ensure user can't do partial paths base_path = File.join(path, "/") static_files.select do |f| f.path.start_with? base_path end end
Private Instance Methods
base_url()
click to toggle source
# File lib/jekyll-admin/server.rb, line 52 def base_url "#{request.scheme}://#{request.host_with_port}" end
document_body()
click to toggle source
# File lib/jekyll-admin/server.rb, line 60 def document_body body = if front_matter && !front_matter.empty? YAML.dump(front_matter).strip else "---" end body << "\n---\n\n" body << request_payload["raw_content"].to_s end
Also aliased as: page_body
front_matter()
click to toggle source
# File lib/jekyll-admin/server.rb, line 56 def front_matter request_payload["front_matter"] end
namespace()
click to toggle source
# File lib/jekyll-admin/server.rb, line 80 def namespace namespace = request.path_info.split("/")[1].to_s.downcase namespace if ROUTES.include?(namespace) end
render_404()
click to toggle source
# File lib/jekyll-admin/server.rb, line 38 def render_404 status 404 content_type :json halt end
request_body()
click to toggle source
# File lib/jekyll-admin/server.rb, line 73 def request_body @request_body ||= begin request.body.rewind request.body.read end end
request_payload()
click to toggle source
# File lib/jekyll-admin/server.rb, line 44 def request_payload @request_payload ||= if request_body.to_s.empty? {} else JSON.parse(request_body) end end
site()
click to toggle source
# File lib/jekyll-admin/server.rb, line 34 def site JekyllAdmin.site end