require 'sinatra'
require 'sinatra/activerecord'
require './config'
require './helpers'
require 'json'
require 'sinatra/cookies'
require 'elasticsearch'
require 'xxhash'
require 'trello'
require 'sendgrid-ruby'




Trello.configure do |config|
  # API key generated by visiting https://trello.com/1/appKey/generate
  config.developer_public_key = "f13dd6c2dcc65f48b9a56c6d420e32e7"

  # Member token
  # larry-price.com/blog/2014/03/18/connecting-to-the-trello-api/
  config.member_token = "e8e1885d794dbc4d9d8d1ae586a84e580be224b2737254de6064d7d7219f3064"
end

Dir[File.dirname(__FILE__) + '/models/*.rb'].each {|file| require file }

set :bind, '0.0.0.0'


before do
  content_type :json
  # TODO: before running to production change this so that only specific
  #       domain is allowed

  headers 'Access-Control-Allow-Origin' => 'http://localhost:3001',
    'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST','PUT'].join(','),
    'Access-Control-Allow-Headers' => 'Origin, X-Requested-With, Content-Type, Accept',
    'Access-Control-Expose-Headers' => 'X-Total-Count',
    'Access-Control-Allow-Credentials' => 'true'

  request.body.rewind
  json_string = request.body.read
  @json_params = JSON.parse json_string if json_string.length > 1

  if request.request_method == 'OPTIONS'
    halt 200
  end
end


helpers Sinatra::Cookies

def xxhash(text)
  seed = 31337
  XXhash.xxh32(text, seed)
end




Dir[File.dirname(__FILE__) + '/controllers/*.rb'].each {|file| require file }
