72 lines
2.1 KiB
Ruby
72 lines
2.1 KiB
Ruby
require 'addressable/uri'
|
|
require 'active_record/base'
|
|
require 'travis/api/app'
|
|
require 'travis/api/app/base'
|
|
|
|
class Travis::Api::App
|
|
# Superclass for HTTP endpoints. Takes care of prefixing.
|
|
class Endpoint < Base
|
|
include Travis::Services::Helpers
|
|
|
|
set(:prefix) { "/" << name[/[^:]+$/].underscore }
|
|
set disable_root_endpoint: false
|
|
register :scoping
|
|
helpers :current_user, :flash, :db_follower
|
|
|
|
# TODO hmmm?
|
|
before { flash.clear }
|
|
after { content_type :json unless content_type }
|
|
|
|
error(ActiveRecord::RecordNotFound, Sinatra::NotFound) { not_found }
|
|
not_found {
|
|
if content_type =~ /json/
|
|
if body && !body.empty?
|
|
body
|
|
else
|
|
{ 'file' => 'not found' }
|
|
end
|
|
else
|
|
'file not found'
|
|
end
|
|
}
|
|
|
|
private
|
|
|
|
def redis
|
|
Thread.current[:redis] ||= ::Redis.connect(url: Travis.config.redis.url)
|
|
end
|
|
|
|
def endpoint(link, query_values = {})
|
|
link = url(File.join(env['travis.global_prefix'], link), true, false)
|
|
uri = Addressable::URI.parse(link)
|
|
query_values = query_values.merge(uri.query_values) if uri.query_values
|
|
uri.query_values = query_values
|
|
uri.to_s
|
|
end
|
|
|
|
def safe_redirect(url)
|
|
redirect(endpoint('/redirect', to: url), 301)
|
|
end
|
|
end
|
|
end
|
|
|
|
require 'travis/api/app/endpoint/accounts'
|
|
require 'travis/api/app/endpoint/authorization'
|
|
require 'travis/api/app/endpoint/branches'
|
|
require 'travis/api/app/endpoint/broadcasts'
|
|
require 'travis/api/app/endpoint/builds'
|
|
require 'travis/api/app/endpoint/documentation'
|
|
require 'travis/api/app/endpoint/endpoints'
|
|
require 'travis/api/app/endpoint/env_vars'
|
|
require 'travis/api/app/endpoint/home'
|
|
require 'travis/api/app/endpoint/hooks'
|
|
require 'travis/api/app/endpoint/jobs'
|
|
require 'travis/api/app/endpoint/lint'
|
|
require 'travis/api/app/endpoint/logs'
|
|
require 'travis/api/app/endpoint/repos'
|
|
require 'travis/api/app/endpoint/requests'
|
|
require 'travis/api/app/endpoint/setting_endpoint'
|
|
require 'travis/api/app/endpoint/singleton_settings_endpoint'
|
|
require 'travis/api/app/endpoint/uptime'
|
|
require 'travis/api/app/endpoint/users'
|