lib/jekyll-admin/server.rb in jekyll-admin-0.10.2 vs lib/jekyll-admin/server.rb in jekyll-admin-0.11.0

- old
+ new

@@ -1,108 +1,108 @@ -# frozen_string_literal: true - -module JekyllAdmin - class Server < Sinatra::Base - ROUTES = %w(collections configuration data drafts pages static_files).freeze - include JekyllAdmin::PathHelper - include JekyllAdmin::FileHelper - - register Sinatra::Namespace - - configure :development do - register Sinatra::Reloader - enable :logging - end - - configure :development, :test do - require "sinatra/cross_origin" - register Sinatra::CrossOrigin - enable :cross_origin - disable :allow_credentials - set :allow_methods, [:delete, :get, :options, :post, :put] - end - - get "/" do - json ROUTES.map { |r| ["#{r}_api", URI.join(base_url, "/_api/", r)] }.to_h - end - - # CORS preflight - options "*" do - render_404 unless settings.development? || settings.test? - status 204 - end - - private - - def json(object, options = {}) - content_type :json - JSON.pretty_generate(object, options) - end - - def site - JekyllAdmin.site - end - - def render_404 - status 404 - content_type :json - halt - end - - def request_payload - @request_payload ||= if request_body.to_s.empty? - {} - else - JSON.parse(request_body) - end - end - - def base_url - "#{request.scheme}://#{request.host_with_port}" - end - - def front_matter - request_payload["front_matter"] - end - - def document_body - body = +"" - body << if front_matter && !front_matter.empty? - YAML.dump(restored_front_matter).strip - .gsub(": 'null'", ": null") # restore null values - else - "---" - end - body << "\n---\n\n" - body << request_payload["raw_content"].to_s - body << "\n" unless body.end_with?("\n") - body - end - alias_method :page_body, :document_body - - def request_body - @request_body ||= begin - request.body.rewind - request.body.read - end - end - - def namespace - namespace = request.path_info.split("/")[1].to_s.downcase - namespace if ROUTES.include?(namespace) - end - - # verbose 'null' values in front matter - def restored_front_matter - front_matter.map do |key, value| - value = "null" if value.nil? - [key, value] - end.to_h - end - end -end - -# load individual route configurations -JekyllAdmin::Server::ROUTES.each { |name| require_relative File.join("server", name) } - -# load namespaces outside route configurations -require_relative "server/site_meta" +# frozen_string_literal: true + +module JekyllAdmin + class Server < Sinatra::Base + ROUTES = %w(collections configuration data drafts pages static_files).freeze + include JekyllAdmin::PathHelper + include JekyllAdmin::FileHelper + + register Sinatra::Namespace + + configure :development do + register Sinatra::Reloader + enable :logging + end + + configure :development, :test do + require "sinatra/cross_origin" + register Sinatra::CrossOrigin + enable :cross_origin + disable :allow_credentials + set :allow_methods, [:delete, :get, :options, :post, :put] + end + + get "/" do + json ROUTES.map { |r| ["#{r}_api", URI.join(base_url, "/_api/", r)] }.to_h + end + + # CORS preflight + options "*" do + render_404 unless settings.development? || settings.test? + status 204 + end + + private + + def json(object, options = {}) + content_type :json + JSON.pretty_generate(object, options) + end + + def site + JekyllAdmin.site + end + + def render_404 + status 404 + content_type :json + halt + end + + def request_payload + @request_payload ||= if request_body.to_s.empty? + {} + else + JSON.parse(request_body) + end + end + + def base_url + "#{request.scheme}://#{request.host_with_port}" + end + + def front_matter + request_payload["front_matter"] + end + + def document_body + body = +"" + body << if front_matter && !front_matter.empty? + YAML.dump(restored_front_matter).strip + .gsub(": 'null'", ": null") # restore null values + else + "---" + end + body << "\n---\n\n" + body << request_payload["raw_content"].to_s + body << "\n" unless body.end_with?("\n") + body + end + alias_method :page_body, :document_body + + def request_body + @request_body ||= begin + request.body.rewind + request.body.read + end + end + + def namespace + namespace = request.path_info.split("/")[1].to_s.downcase + namespace if ROUTES.include?(namespace) + end + + # verbose 'null' values in front matter + def restored_front_matter + front_matter.map do |key, value| + value = "null" if value.nil? + [key, value] + end.to_h + end + end +end + +# load individual route configurations +JekyllAdmin::Server::ROUTES.each { |name| require_relative File.join("server", name) } + +# load namespaces outside route configurations +require_relative "server/site_meta"