Sha256: 58be762f812d70f0ab3763b9dfd01e8bd1c43bb13a5493d815437cdec1d1c232
Contents?: true
Size: 1.3 KB
Versions: 22
Compression:
Stored size: 1.3 KB
Contents
require 'rack/request' class RollbarAPI UNAUTHORIZED_ACCESS_TOKEN = 'unauthorized'.freeze def call(env) request = Rack::Request.new(env) json = JSON.parse(request.body.read) return unauthorized unless authorized?(json, request) return bad_request(json) unless valid_data?(json, request) success(json, request) end protected def authorized?(_json, request) request.env['HTTP_X_ROLLBAR_ACCESS_TOKEN'] != UNAUTHORIZED_ACCESS_TOKEN end def response_headers { 'Content-Type' => 'application/json' } end def valid_data?(_json, request) !!request.env['HTTP_X_ROLLBAR_ACCESS_TOKEN'] end def unauthorized [401, response_headers, [unauthorized_body]] end def bad_request(_json) [400, response_headers, [bad_request_body]] end def success(json, request) [200, response_headers, [success_body(json, request)]] end def unauthorized_body result(1, nil, 'invalid access token') end def bad_request_body result(1, nil, 'bad request') end def success_body(json, _request) result(0, { :id => rand(1_000_000), :uuid => json['data']['uuid'] }, nil) end def result(err, body, message) { :err => err, :result => body, :message => message }.to_json end end
Version data entries
22 entries across 22 versions & 1 rubygems