Sha256: d718faff7bb90d4c8d857a99c1af521c078978ae4943bffd98be5d4dc3f18666

Contents?: true

Size: 1.04 KB

Versions: 1

Compression:

Stored size: 1.04 KB

Contents

require 'json'
require "rack/csrf"

class Cuba

  def root; "" end
  def options; req.options? end

  def params; req.params end

  # Sugar to do some common response tasks
  #
  # @example
  # on post, "users" do
  #   as 201 do
  #     "User successfully created!"
  #   end
  # end
  def as(http_code = 200, extra_headers = {})
    res.status = http_code
    res.headers.merge! extra_headers
    res.write yield if block_given?
  end

  def as_json(http_code = 200, extra_headers = {})
    extra_headers["Content-Type"] ||= "application/json"
    as(http_code, extra_headers) do
      (yield).to_json if block_given?
    end
  end

  def subdomain(sub)
    sub == req.host.split(".").first
  end

  def session
    env["rack.session"]
  end

  def redirect(*args)
    res.redirect(*args)
    @matched = true
  end

  # From sinatra/base
  def helpers(*extensions, &block)
    instance_eval(&block) if block_given?
    extend(*extensions)   if extensions.any?
  end

  def csrf_tag
    Rack::Csrf.tag(env)
  end

  def csrf_token
    Rack::Csrf.token(env)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cuba-sugar-0.2.1 lib/cuba/sugar.rb