Sha256: b39de418e128fd46ea69941affa433f9cd2833ec95e2265827108cef3df76d19

Contents?: true

Size: 1.56 KB

Versions: 2

Compression:

Stored size: 1.56 KB

Contents

require 'rubygems'
require 'faraday'
require 'faraday_middleware'
require 'hashie/mash'

module Buildbox
  class API
    def initialize(config = Buildbox.config)
      @config  = config
    end

    def authenticate(api_key)
      @api_key = api_key
      get("user")
    end

    def agent(access_token, hostname)
      put("agents/#{access_token}", :hostname => hostname)
    end

    def scheduled_builds(project)
      get(project.scheduled_builds_url).map { |build| Buildbox::Build.new(build) }
    end

    def update_build(build)
      put(build.url, :started_at  => build.started_at,
                     :finished_at => build.finished_at,
                     :output      => build.output,
                     :exit_status => build.exit_status)
    end

    private

    def connection
      @connection ||= Faraday.new(:url => @config.api_endpoint) do |faraday|
        faraday.basic_auth @api_key || @config.api_key, ''

        faraday.request  :json

        faraday.response :logger, Buildbox.logger
        faraday.response :mashify

        # json needs to come after mashify as it needs to run before the mashify
        # middleware.
        faraday.response :json
        faraday.response :raise_error

        faraday.adapter Faraday.default_adapter
      end
    end

    def post(path, body = {})
      connection.post(path) do |request|
        request.body = body
      end.body
    end

    def put(path, body = {})
      connection.put(path) do |request|
        request.body = body
      end.body
    end

    def get(path)
      connection.get(path).body
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
buildbox-0.3.3 lib/buildbox/api.rb
buildbox-0.3.2 lib/buildbox/api.rb