The public Travis API
Go to file
Piotr Sarnacki 5714fcf36d Allow turning off Home::Endpoint
Home::Endpoint by default redirects GET / request to /docs. This may be
desireable when Travis::Api::App is the only app running, but if it's
running in front of other app, you may want to keep root for other
things.
2012-08-09 23:45:39 +02:00
config add database.yml 2012-08-05 14:48:19 +02:00
lib/travis/api Allow turning off Home::Endpoint 2012-08-09 23:45:39 +02:00
script rewrite all the things 2012-07-27 15:55:57 +02:00
spec rewrite all the things 2012-07-27 15:55:57 +02:00
.travis.yml no jruby for now 2012-08-05 15:20:09 +02:00
config.ru rewrite all the things 2012-07-27 15:55:57 +02:00
Gemfile actually use gemspec 2012-08-05 14:42:05 +02:00
Gemfile.lock actually use gemspec 2012-08-05 14:42:05 +02:00
Procfile rewrite all the things 2012-07-27 15:55:57 +02:00
Rakefile actually use gemspec 2012-08-05 14:42:05 +02:00
README.md rewrite all the things 2012-07-27 15:55:57 +02:00
travis-api.gemspec actually use gemspec 2012-08-05 14:42:05 +02:00

The public Travis API

This is the app (eventually) running on https://api.travis-ci.org/

Installation

Setup:

$ bundle install

Run tests:

$ RAILS_ENV=test rake db:create db:schema:load
$ rake spec

Run the server:

$ rake db:create db:schema:load
$ foreman start

Contributing

  1. Fork it
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

API documentation

We use source code comments to add documentation. If the server is running, you can browse an HTML documenation at /docs.

Project architecture

lib
`-- travis
    `-- api
        `-- app
            |-- endpoint    # API endpoints
            |-- extensions  # Sinatra extensions
            |-- helpers     # Sinatra helpers
            `-- middleware  # Rack middleware

Classes inheriting from Endpoint or Middleware, they will automatically be set up properly.

Each endpoint class gets mapped to a prefix, which defaults to the snake-case class name (i.e. Travis::Api::App::Profile will map to /profile). It can be overridden by setting :prefix:

require 'travis/api/app'

class Travis::Api::App
  class MyRouts < Endpoint
    set :prefix, '/awesome'
  end
end