Sha256: 81be2ce6f33f9e38d279f720e957e0193216ec3ac2bf058d9ce03c978029823c

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

require 'octokit'
require 'sinatra'
require 'sinatra_auth_github'
require 'dotenv'
require 'json'
require 'active_support'
require 'active_support/core_ext/string'
require "problem_child/version"
require "problem_child/helpers"

module ProblemChild

  def self.root
    File.expand_path "./problem_child", File.dirname(__FILE__)
  end

  def self.views_dir
    @views_dir ||= File.expand_path "views", ProblemChild.root
  end

  def self.views_dir=(dir)
    @views_dir = dir
  end

  class App < Sinatra::Base

    include ProblemChild::Helpers

    set :github_options, {
      :scopes    => "repo"
    }

    register Sinatra::Auth::Github

    enable :sessions
    use Rack::Session::Cookie, {
      :http_only => true,
      :secret    => SecureRandom.hex
    }

    configure :production do
      require 'rack-ssl-enforcer'
      use Rack::SslEnforcer
    end

    set :views, Proc.new { ProblemChild.views_dir }
    set :root,  Proc.new { ProblemChild.root }
    set :public_folder, Proc.new { File.expand_path "public", ProblemChild.root }

    get "/" do
      if session[:form_data]
        flash = :success if create_issue
        session[:form_data] = nil
      else
        flash = nil
        auth!
      end
      halt erb :form, :layout => :layout, :locals => { :repo => repo, :anonymous => anonymous_submissions?, :flash => flash }
    end

    post "/" do
      session[:form_data] = params.to_json
      auth! unless anonymous_submissions?      
      halt redirect "/"
    end
  end
end

Dotenv.load unless ProblemChild::App.production?

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
problem_child-0.0.3 lib/problem_child.rb