class Assemble::Client::Real

Attributes

connection[R]
url[R]

Public Class Methods

new(options={}) click to toggle source
# File lib/assemble/client.rb, line 22
def initialize(options={})
  base_url = options[:url] || ENV['RALLY_URL'] || "https://rally1.rallydev.com/slm/webservice/"
  version  = options[:version] || "v3.0"

  @url   = URI.parse(File.join(base_url, version))
  logger = options[:logger] || Logger.new(nil)
  @token = options[:token]

  adapter            = options[:adapter] || Faraday.default_adapter
  connection_options = options[:connection_options] || {}

  @connection = Faraday.new({url: @url}.merge(connection_options)) do |builder|
    # response
    builder.response :json

    # request
    builder.request :retry,
      :max                 => 5,
      :interval            => 1,
      :interval_randomness => 0.05,
      :backoff_factor      => 2
    builder.request :multipart
    builder.request :json

    builder.use Assemble::Logger, logger

    builder.adapter(*adapter)
  end
end

Public Instance Methods

create_tag(attributes) click to toggle source
# File lib/assemble/requests/create_tag.rb, line 3
def create_tag(attributes)
  request(
    :body   => {"Tag" => attributes},
    :path   => "/tag/create",
    :method => :post,
  )
end
destroy_tag(id) click to toggle source
# File lib/assemble/requests/destroy_tag.rb, line 3
def destroy_tag(id)
  request(
    :body   => {"Tag" => attributes},
    :path   => "/tag/create",
    :method => :post,
  )
end
get_tag(id) click to toggle source
# File lib/assemble/requests/get_tag.rb, line 3
def get_tag(id)
  request(
    :body => nil,
    :path => "/tags/#{id}",
  )
end
get_tags(params={}) click to toggle source
# File lib/assemble/requests/get_tags.rb, line 3
def get_tags(params={})
  request(
    :path => "/tags",
  )
end
request(options={}) click to toggle source
# File lib/assemble/client.rb, line 52
def request(options={})
  method  = (options[:method] || "get").to_s.downcase.to_sym
  url     = Addressable::URI.parse(options[:url] || File.join(@url.to_s, options[:path] || "/"))
  url.query_values = (url.query_values || {}).merge(options[:query] || {})
  params  = options[:params] || {}
  body    = options[:body]
  headers = options[:headers] || {}

  if body.nil? && !params.empty?
    headers["Content-Type"] ||=  "application/x-www-form-urlencoded"
  end
  headers.merge!("ZSESSIONID" => @token) if @token

  # Authentication
  params.merge!(key: @token)

  response = self.connection.send(method) do |req|
    req.url(url.to_s)
    req.headers.merge!(headers)
    req.params.merge!(params)
    req.body = body
  end

  Assemble::Response.new(
    :status  => response.status,
    :headers => response.headers,
    :body    => response.body,
    :request => {
      :method => method,
      :url    => url,
    }
  ).raise!
end
update_tag(id, attributes) click to toggle source
# File lib/assemble/requests/update_tag.rb, line 3
def update_tag(id, attributes)
  request(
    :body   => {"Tag" => attributes},
    :path   => "/tag/#{id}",
    :method => :post,
  )
end