Sha256: 08ed1f45451a3f1de9855603ac0e4fb05a7dc9e5b4fbf457664aa6f203289171
Contents?: true
Size: 1.88 KB
Versions: 1
Compression:
Stored size: 1.88 KB
Contents
require 'bundler/setup' require 'jsonical' require 'sinatra' require 'datadog/statsd' statsd = Datadog::Statsd.new( 'localhost', 8125, namespace: 'jsonical', tag: 'production:true' ) configure { set :server, :puma } set :protection, except: :path_traversal get '/events/:orn/links' do content_type('application/json') statsd.increment('events.view') event = statsd.time('events.fetch') do JSONiCal::VEVENTModel.new(JSONiCal::VEVENTRepo.find(params[:orn])) end statsd.time('template.render') do Oj.dump( JSONiCal::LinksBuilder. new(event). call ) end end get '/events/:orn' do content_type('text/calendar') response.headers['Content-Disposition'] = 'filename="jobteaser.ics"' statsd.increment('events.view') event = statsd.time('events.fetch') do JSONiCal::VEVENTModel.new(JSONiCal::VEVENTRepo.find(params[:orn])) end statsd.time('template.render') do JSONiCal::CalendarBuilder. new(event). call(vendor: params[:vendor]) end end get '/calendars/:token' do content_type('text/calendar') response.headers['Content-Disposition'] = 'filename="jobteaser.ics"' statsd.increment('calendar.view') events = statsd.time('events.fetch') do JSONiCal::VEVENTRepo. events_with_token(params[:token]). map { |event_hash| JSONiCal::VEVENTModel.new(event_hash) } end statsd.time('template.render') do JSONiCal::CalendarBuilder. new(*events). call(calendar_name: 'JobTeaser') end end get '/api/v1/calendars/:orn' do content_type('application/json') statsd.increment('api.fetch.count') statsd.time('api.calendars.show') do calendar = JSONiCal.database[:vcalendars].where(orn: params[:orn]).first calendar or halt(404, Oj.dump('error' => '404 Not Found')) @res = { 'uri' => "webcal://jsonical.herokuapp.com/calendars/#{calendar[:token]}" } end Oj.dump(@res) end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
JSONiCal-1.0.0 | app/web.rb |