rally_rest_api 0.7.4 → 0.7.5

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -11,6 +11,7 @@ lib/rally_rest_api/rest_object.rb
11
11
  lib/rally_rest_api/typedef.rb
12
12
  lib/rally_rest_api/ruport.rb
13
13
  lib/rally_rest_api/version.rb
14
+ lib/rally_rest_api/custom_http_header.rb
14
15
  Manifest.txt
15
16
  Rakefile
16
17
  README.txt
data/Rakefile CHANGED
@@ -22,7 +22,7 @@ RELEASE_TYPES = %w( gem ) # can use: gem, tar, zip
22
22
 
23
23
  NAME = "rally_rest_api"
24
24
  REV = nil # UNCOMMENT IF REQUIRED: File.read(".svn/entries")[/committed-rev="(d+)"/, 1] rescue nil
25
- VERS = ENV['VERSION'] || (RallyRestVersion::VERSION::STRING + (REV ? ".#{REV}" : ""))
25
+ VERS = ENV['VERSION'] || (RallyRestVersion::LIBRARY_VERSION::STRING + (REV ? ".#{REV}" : ""))
26
26
  CLEAN.include ['**/.*.sw?', '*.gem', '.config']
27
27
  RDOC_OPTS = ['--quiet', '--title', "rally_rest_api documentation",
28
28
  "--opname", "index.html",
@@ -0,0 +1,22 @@
1
+ class CustomHttpHeader
2
+ attr_accessor :name, :version, :vendor
3
+ attr_reader :library, :os, :platform
4
+
5
+ HTTP_HEADER_FIELDS = [:name, :vendor, :version, :library, :platform, :os]
6
+ HTTP_HEADER_PREFIX = 'X-RallyIntegration'
7
+
8
+ def initialize
9
+ @os = RUBY_PLATFORM
10
+ @platform = "Ruby #{RUBY_VERSION}"
11
+ @library = "RallyRestAPI version #{RallyRestVersion::LIBRARY_VERSION::STRING}"
12
+ end
13
+
14
+ def add_headers(req)
15
+ headers = {}
16
+ HTTP_HEADER_FIELDS.each do |field|
17
+ value = self.send(field)
18
+ next if value.nil?
19
+ req.add_field("#{HTTP_HEADER_PREFIX}#{field.to_s.capitalize}", value)
20
+ end
21
+ end
22
+ end
@@ -18,15 +18,16 @@ class RallyRestAPI
18
18
  # new - Create an instance of RallyRestAPI. Each instance corresponds to one named user.
19
19
  #
20
20
  # options (as a Hash):
21
- # * username - The Rally username
22
- # * password - The password for the named user
23
- # * base_url - The base url of the system. Defaults to https://rally1.rallydev.com/slm
24
- # * version - The RallyWebservices Version. Defaults to 'current', which will always be the most
21
+ # * username - The Rally username
22
+ # * password - The password for the named user
23
+ # * base_url - The base url of the system. Defaults to https://rally1.rallydev.com/slm
24
+ # * version - The RallyWebservices Version. Defaults to 'current', which will always be the most
25
25
  # recent version of the api. Pass the value as a String, "1.0", "1.01" for example.
26
- # * logger - a Logger to log to.
26
+ # * logger - a Logger to log to.
27
+ # * http_headers - an instace of CustomHttpHeader that will send application information with the request
27
28
  #
28
29
  def initialize(options = {})
29
- parse_options options
30
+ parse_options(options)
30
31
  end
31
32
 
32
33
  def parse_options(options)
@@ -35,12 +36,13 @@ class RallyRestAPI
35
36
  @base_url = options[:base_url] || "https://rally1.rallydev.com/slm"
36
37
  @version = options[:version] || "current"
37
38
  @logger = options[:logger]
39
+ @http_headers = options[:http_headers] || CustomHttpHeader.new
38
40
  @parse_collections_as_hash = options[:parse_collections_as_hash] || false
39
41
 
40
42
  if options[:builder]
41
43
  builder = options[:builder]
42
44
  else
43
- builder = RestBuilder.new(@base_url, @username, @password, @version)
45
+ builder = RestBuilder.new(@base_url, @username, @password, @version, @http_headers)
44
46
  end
45
47
  builder.logger = @logger if @logger
46
48
  @builder = builder
@@ -6,11 +6,11 @@ require 'builder'
6
6
 
7
7
  class RestBuilder # :nodoc:
8
8
 
9
- attr_reader :base_url, :username, :password
9
+ attr_reader :base_url, :username, :password, :http_headers
10
10
  attr_accessor :logger
11
11
 
12
- def initialize(base_url, username, password, version = "current")
13
- @base_url, @username, @password, @version = base_url, username, password, version
12
+ def initialize(base_url, username, password, version = "current", http_headers = CustomHttpHeader.new)
13
+ @base_url, @username, @password, @version, @http_headers = base_url, username, password, version, http_headers
14
14
  end
15
15
 
16
16
  def marshal_dump
@@ -79,6 +79,7 @@ class RestBuilder # :nodoc:
79
79
  end
80
80
 
81
81
  def send_request(url, req, username, password)
82
+ @http_headers.add_headers(req)
82
83
  req.basic_auth username, password
83
84
  req.content_type = 'text/xml'
84
85
  proxy = ENV['http_proxy'] ? URI.parse(ENV['http_proxy']) : OpenStruct.new
@@ -1,8 +1,8 @@
1
1
  module RallyRestVersion #:nodoc:
2
- module VERSION #:nodoc:
2
+ module LIBRARY_VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 7
5
- TINY = 4
5
+ TINY = 5
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ describe "A CustomHttpHeader" do
4
+
5
+ before(:each) do
6
+ @custom_http_header = CustomHttpHeader.new
7
+ @sample_values = {
8
+ :library => RallyRestVersion::LIBRARY_VERSION::STRING,
9
+ :platform => RUBY_VERSION,
10
+ :os => RUBY_PLATFORM,
11
+ :name => 'Guacamole',
12
+ :vendor => "The Big Enchilda's Burrito Company",
13
+ :version => '0.3.2'
14
+ }
15
+ end
16
+
17
+ it "should set library, platform, and os automatically" do
18
+ @custom_http_header.library.should == @sample_values[:library]
19
+ @custom_http_header.platform.should == @sample_values[:platform]
20
+ @custom_http_header.os.should == @sample_values[:os]
21
+ end
22
+
23
+ it 'should allow name, version, and vendor to be set' do
24
+ [:name, :vendor, :version].each do |field, value|
25
+ @custom_http_header.send("#{field}=".to_sym, value)
26
+ @custom_http_header.send(field).should == value
27
+ end
28
+ end
29
+
30
+ it 'should set the HTTP headers appropriately' do
31
+ req = mock("HTTP Request")
32
+ [:name, :vendor, :version].each do |field|
33
+ @custom_http_header.send("#{field}=", @sample_values[field])
34
+ end
35
+
36
+ @sample_values.each do |header, value|
37
+ hdr = "#{CustomHttpHeader::HTTP_HEADER_PREFIX}#{header.to_s.capitalize}"
38
+ req.should_receive(:add_field).with(hdr, value)
39
+ end
40
+ @custom_http_header.add_headers(req)
41
+ end
42
+
43
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: rally_rest_api
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.7.4
7
- date: 2007-10-17 00:00:00 -06:00
6
+ version: 0.7.5
7
+ date: 2007-10-29 00:00:00 -06:00
8
8
  summary: A ruby-ized interface to Rally's REST webservices API
9
9
  require_paths:
10
10
  - lib
@@ -42,6 +42,7 @@ files:
42
42
  - lib/rally_rest_api/typedef.rb
43
43
  - lib/rally_rest_api/ruport.rb
44
44
  - lib/rally_rest_api/version.rb
45
+ - lib/rally_rest_api/custom_http_header.rb
45
46
  - Manifest.txt
46
47
  - Rakefile
47
48
  - README.txt
@@ -57,6 +58,7 @@ files:
57
58
  - test/rest_builder_spec.rb
58
59
  test_files:
59
60
  - test/attribute_definition_spec.rb
61
+ - test/custom_http_header_spec.rb
60
62
  - test/query_result_spec.rb
61
63
  - test/rest_builder_spec.rb
62
64
  - test/rest_object_spec.rb