go_api_client 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,8 @@
1
+ #!/bin/bash
2
+ set -x
3
+ BUNDLE_PATH=/tmp/.bundle-$(basename $(pwd))
4
+ if [ -z "$BUNDLE_PATH" ]
5
+ then
6
+ BUNDLE_PATH=".bundle"
7
+ fi
8
+ bundle install --local --path $BUNDLE_PATH --binstubs --clean
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- go_api_client (0.4.0)
4
+ go_api_client (0.5.0)
5
5
  nokogiri
6
6
 
7
7
  GEM
@@ -10,6 +10,7 @@ Gem::Specification.new do |s|
10
10
  s.homepage = "https://github.com/ThoughtWorksInc/go-api-client"
11
11
  s.summary = %q{Client to parse Go CI atom feed}
12
12
  s.description = %q{This gem parses atom feed generated by the Go Continuous Integration server and provides an OO representation of the pipelines and stages.}
13
+ s.license = 'MIT'
13
14
 
14
15
  s.rubyforge_project = "go_api_client"
15
16
 
@@ -13,6 +13,7 @@ require 'go_api_client/job'
13
13
  require 'go_api_client/artifact'
14
14
  require 'go_api_client/commit'
15
15
  require 'go_api_client/user'
16
+ require 'go_api_client/logger'
16
17
 
17
18
  module GoApiClient
18
19
 
@@ -45,30 +46,30 @@ module GoApiClient
45
46
  # @option options [Boolean] :ssl (false) If connection should be made over ssl.
46
47
  # @option options [String] :username (nil) The username to be used if server or the pipeline requires authorization.
47
48
  # @option options [String] :password (nil) The password to be used if server or the pipeline requires authorization.
48
- # @option options [String] :pipeline_name ("defaultPipeline") The name of the pipeline that should be fetched.
49
+ # @option options [String] :pipeline_name The name of the pipeline that should be fetched.
49
50
  # @option options [String] :latest_atom_entry_id (nil) The id of the last atom feed entry
50
51
  def runs(options={})
51
- options = ({:ssl => false, :host => 'localhost', :port => 8153, :username => nil, :password => nil, :latest_atom_entry_id => nil, :pipeline_name => 'defaultPipeline'}).merge(options)
52
+ options = ({:ssl => false, :host => 'localhost', :port => 8153, :username => nil, :password => nil, :latest_atom_entry_id => nil}).merge(options)
52
53
 
53
54
  http_fetcher = GoApiClient::HttpFetcher.new(:username => options[:username], :password => options[:password])
54
55
 
55
- feed_url = "#{options[:ssl] ? 'https' : 'http'}://#{options[:host]}:#{options[:port]}/go/api/pipelines/#{options[:pipeline_name]}/stages.xml"
56
-
56
+ pipeline_name = options[:pipeline_name] || "defaultPipeline"
57
+ feed_url = "#{options[:ssl] ? 'https' : 'http'}://#{options[:host]}:#{options[:port]}/go/api/pipelines/#{pipeline_name}/stages.xml"
57
58
  feed = GoApiClient::Atom::Feed.new(feed_url, options[:latest_atom_entry_id])
58
59
  feed.fetch!(http_fetcher)
60
+ return construct_last_run(feed, http_fetcher, options[:latest_atom_entry_id])
61
+ end
59
62
 
60
- pipelines = {}
61
- stages = feed.entries.collect do |entry|
62
- Stage.from(entry.stage_href, :authors => entry.authors, :pipeline_cache => pipelines, :http_fetcher => http_fetcher)
63
- end
64
-
65
- pipelines.values.each do |p|
66
- p.stages = p.stages.sort_by {|s| s.completed_at }
63
+ def all_runs(options={})
64
+ options = ({:ssl => false, :host => 'localhost', :port => 8153, :username => nil, :password => nil}).merge(options)
65
+ http_fetcher = GoApiClient::HttpFetcher.new(:username => options[:username], :password => options[:password])
66
+ feed_url = "#{options[:ssl] ? 'https' : 'http'}://#{options[:host]}:#{options[:port]}/go/api/pipelines.xml"
67
+ feed = GoApiClient::Atom::Feed.new(feed_url, nil)
68
+ feed = feed.fetch_all!(http_fetcher)
69
+ feed.inject({}) do |memo, (href, entries)|
70
+ memo[href] = construct_last_run(entries, http_fetcher, nil)
71
+ memo
67
72
  end
68
-
69
- pipelines = pipelines.values.sort_by {|p| p.counter}
70
- latest_atom_entry_id = stages.empty? ? options[:latest_atom_entry_id] : feed.entries.first.id
71
- return LastRun.new(pipelines, latest_atom_entry_id)
72
73
  end
73
74
 
74
75
  # Answers if a build is in progress. For the list of supported connection options see {GoApiClient.runs #runs}
@@ -78,7 +79,7 @@ module GoApiClient
78
79
  options = ({:ssl => false, :port => 8153, :username => nil, :password => nil, :pipeline_name => 'defaultPipeline'}).merge(options)
79
80
  http_fetcher = GoApiClient::HttpFetcher.new(:username => options[:username], :password => options[:password])
80
81
  url = "#{options[:ssl] ? 'https' : 'http'}://#{options[:host]}:#{options[:port]}/go/cctray.xml"
81
- doc = Nokogiri::XML(http_fetcher.get_response_body(url))
82
+ doc = Nokogiri::XML(http_fetcher.get!(url))
82
83
  doc.css("Project[activity='Building'][name^='#{options[:pipeline_name]} ::']").count > 0
83
84
  end
84
85
 
@@ -94,7 +95,24 @@ module GoApiClient
94
95
  options = ({:ssl => false, :port => 8153, :username => nil, :password => nil, :pipeline_name => 'defaultPipeline'}).merge(options)
95
96
 
96
97
  uri = "#{options[:ssl] ? 'https' : 'http'}://#{options[:host]}:#{options[:port]}/go/api/pipelines/#{options[:pipeline_name]}/schedule"
97
- GoApiClient::HttpFetcher.new.post(uri)
98
+ GoApiClient::HttpFetcher.new.post!(uri)
99
+ end
100
+
101
+ private
102
+
103
+ def construct_last_run(feed, http_fetcher, last_atom_entry_id)
104
+ pipelines = {}
105
+ stages = feed.entries.collect do |entry|
106
+ Stage.from(entry.stage_href, :authors => entry.authors, :pipeline_cache => pipelines, :http_fetcher => http_fetcher)
107
+ end
108
+
109
+ pipelines.values.each do |p|
110
+ p.stages = p.stages.sort_by {|s| s.completed_at }
111
+ end
112
+
113
+ pipelines = pipelines.values.sort_by {|p| p.counter}
114
+ latest_atom_entry_id = stages.empty? ? last_atom_entry_id : feed.entries.first.id
115
+ return LastRun.new(pipelines, latest_atom_entry_id)
98
116
  end
99
117
  end
100
118
  end
@@ -13,7 +13,7 @@ module GoApiClient
13
13
  feed_url = @atom_feed_url
14
14
 
15
15
  begin
16
- doc = Nokogiri::XML(http_fetcher.get_response_body(feed_url))
16
+ doc = Nokogiri::XML(http_fetcher.get!(feed_url))
17
17
  feed_page = GoApiClient::Atom::FeedPage.new(doc.root).parse!
18
18
 
19
19
  self.entries += if feed_page.contains_entry?(@last_entry_id)
@@ -25,6 +25,16 @@ module GoApiClient
25
25
  end while feed_page.next_page && !feed_page.contains_entry?(@last_entry_id)
26
26
  self
27
27
  end
28
+
29
+ def fetch_all!(http_fetcher = HttpFetcher.new)
30
+ begin
31
+ doc = Nokogiri::XML(http_fetcher.get!(@atom_feed_url))
32
+ doc.css("pipeline").inject({}) do |hash, feed|
33
+ hash[feed.attr("href")] = GoApiClient::Atom::Feed.new(feed.attr("href")).fetch!
34
+ hash
35
+ end
36
+ end
37
+ end
28
38
  end
29
39
  end
30
40
  end
@@ -4,67 +4,122 @@ require 'net/https'
4
4
  module GoApiClient
5
5
  class HttpFetcher
6
6
 
7
+ class HttpError < StandardError
8
+ attr_reader :http_code
9
+ def initialize(msg, http_code)
10
+ super(msg)
11
+ @http_code = http_code
12
+ end
13
+ end
14
+
15
+ class ConnectionError <StandardError
16
+ end
17
+
18
+ NET_HTTP_EXCEPTIONS = [
19
+ EOFError,
20
+ Errno::ECONNABORTED,
21
+ Errno::ECONNREFUSED,
22
+ Errno::ECONNRESET,
23
+ Errno::ECONNRESET, EOFError,
24
+ Errno::EINVAL,
25
+ Errno::ETIMEDOUT,
26
+ Net::HTTPBadResponse,
27
+ Net::HTTPClientError,
28
+ Net::HTTPError,
29
+ Net::HTTPFatalError,
30
+ Net::HTTPHeaderSyntaxError,
31
+ Net::HTTPRetriableError,
32
+ Net::HTTPServerException,
33
+ Net::ProtocolError,
34
+ SocketError,
35
+ Timeout::Error,
36
+ ]
37
+
38
+ NET_HTTP_EXCEPTIONS << OpenSSL::SSL::SSLError if defined?(OpenSSL)
39
+
40
+ attr_accessor :response
41
+
7
42
  def initialize(options={})
8
43
  @username = options[:username]
9
44
  @password = options[:password]
10
45
  end
11
46
 
12
- def get(url, options={})
13
- uri = URI.parse(url)
47
+ %w(get post).each do |meth|
48
+ class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
49
+ def #{meth}!(url, options={})
50
+ response_body = #{meth}(url, options)
51
+ return response_body
52
+ if failure?
53
+ message = "Could not fetch url \#{url}."
54
+ GoApiClient.logger.error("\#{message} The response returned status \#{status} with body `\#{response_body}'")
55
+ raise HttpError.new(message, status)
56
+ end
57
+ rescue *NET_HTTP_EXCEPTIONS => e
58
+ message = "Could not connect to url \#{url}."
59
+ GoApiClient.logger.error("\#{message}. The error was \#{e.message}")
60
+ GoApiClient.logger.error(e.backtrace.collect {|l| " \#{l}"}.join("\n"))
61
+ raise ConnectionError.new(e)
62
+ end
63
+ RUBY_EVAL
64
+ end
14
65
 
15
- password = options[:password] || uri.password || @password
16
- username = options[:username] || uri.user || @username
17
- params = options[:params] || {}
66
+ def status
67
+ @response.code.to_i
68
+ end
18
69
 
19
- uri.query = URI.encode_www_form(params) if params.any?
70
+ def success?
71
+ (200..299).include?(status)
72
+ end
20
73
 
21
- http = Net::HTTP.new(uri.host, uri.port)
22
- http.use_ssl = uri.scheme == 'https'
74
+ def failure?
75
+ !success?
76
+ end
23
77
 
24
- res = http.start do |http|
25
- req = Net::HTTP::Get.new(uri.request_uri)
26
- req.basic_auth(username, password) if username || password
27
- http.request(req)
28
- end
78
+ private
29
79
 
30
- case res
31
- when Net::HTTPSuccess
32
- return res
33
- end
34
- res.error!
35
- end
36
80
 
37
- def post(url, options={})
38
- uri = URI.parse(url)
81
+ def get(url, options={})
82
+ uri = URI.parse(url)
39
83
 
40
- password = options[:password] || uri.password || @password
41
- username = options[:username] || uri.user || @username
42
- params = options[:params] || {}
43
- headers = options[:headers] || {}
84
+ password = options[:password] || uri.password || @password
85
+ username = options[:username] || uri.user || @username
86
+ params = options[:params] || {}
44
87
 
45
- http = Net::HTTP.new(uri.host, uri.port)
46
- http.use_ssl = uri.scheme == 'https'
88
+ uri.query = URI.encode_www_form(params) if params.any?
47
89
 
48
- req = Net::HTTP::Post.new(uri.request_uri)
90
+ http = Net::HTTP.new(uri.host, uri.port)
91
+ http.use_ssl = uri.scheme == 'https'
49
92
 
50
- headers.each do |header_name, value|
51
- req[header_name] = value
93
+ @response = http.start do |http|
94
+ req = Net::HTTP::Get.new(uri.request_uri)
95
+ req.basic_auth(username, password) if username || password
96
+ http.request(req)
97
+ end
98
+ return @response.body
52
99
  end
53
100
 
54
- req.basic_auth(username, password) if username || password
101
+ def post(url, options={})
102
+ uri = URI.parse(url)
55
103
 
56
- req.set_form_data(params)
57
- res = http.request(req)
104
+ password = options[:password] || uri.password || @password
105
+ username = options[:username] || uri.user || @username
106
+ params = options[:params] || {}
107
+ headers = options[:headers] || {}
58
108
 
59
- case res
60
- when Net::HTTPSuccess
61
- return res
62
- end
63
- res.error!
64
- end
109
+ http = Net::HTTP.new(uri.host, uri.port)
110
+ http.use_ssl = uri.scheme == 'https'
65
111
 
66
- def get_response_body(url, options={})
67
- get(url, options).body
68
- end
112
+ req = Net::HTTP::Post.new(uri.request_uri)
113
+
114
+ headers.each do |header_name, value|
115
+ req[header_name] = value
116
+ end
117
+
118
+ req.basic_auth(username, password) if username || password
119
+
120
+ req.set_form_data(params)
121
+ @response = http.request(req)
122
+ return @response.body
123
+ end
69
124
  end
70
125
  end
@@ -25,7 +25,7 @@ module GoApiClient
25
25
  class << self
26
26
  def from(url, attributes = {})
27
27
  attributes[:http_fetcher] ||= GoApiClient::HttpFetcher.new
28
- doc = Nokogiri::XML(attributes[:http_fetcher].get_response_body(url))
28
+ doc = Nokogiri::XML(attributes[:http_fetcher].get!(url))
29
29
  self.new(doc.root, attributes).parse!
30
30
  end
31
31
  end
@@ -0,0 +1,8 @@
1
+ require 'logger'
2
+
3
+ module GoApiClient
4
+ class <<self
5
+ attr_accessor :logger
6
+ end
7
+ self.logger ||= ::Logger.new(STDERR)
8
+ end
@@ -12,7 +12,7 @@ module GoApiClient
12
12
  class << self
13
13
  def from(url, attributes = {})
14
14
  attributes[:http_fetcher] ||= GoApiClient::HttpFetcher.new
15
- doc = Nokogiri::XML(attributes[:http_fetcher].get_response_body(url))
15
+ doc = Nokogiri::XML(attributes[:http_fetcher].get!(url))
16
16
  self.new(doc.root, attributes).parse!
17
17
  end
18
18
  end
@@ -13,7 +13,7 @@ module GoApiClient
13
13
  class << self
14
14
  def from(url, attributes = {})
15
15
  attributes[:http_fetcher] ||= GoApiClient::HttpFetcher.new
16
- doc = Nokogiri::XML(attributes[:http_fetcher].get_response_body(url))
16
+ doc = Nokogiri::XML(attributes[:http_fetcher].get!(url))
17
17
  self.new(doc.root, attributes).parse!
18
18
  end
19
19
  end
@@ -1,7 +1,7 @@
1
1
  module GoApiClient
2
2
  module Version
3
3
  MAJOR = 0
4
- MINOR = 4
4
+ MINOR = 5
5
5
  PATCH = 0
6
6
  RELEASE = ENV['GO_PIPELINE_COUNTER']
7
7
  VERSION = [MAJOR, MINOR, PATCH, RELEASE].compact.join('.')
@@ -0,0 +1,24 @@
1
+ <feed xmlns="http://www.w3.org/2005/Atom" xmlns:go="http://www.thoughtworks-studios.com/ns/go">
2
+ <title><![CDATA[defaultPipeline]]></title>
3
+ <id>http://localhost:8153/go/api/pipelines/defaultPipeline/stages.xml</id>
4
+ <author>
5
+ <name>Go</name>
6
+ </author>
7
+ <updated>2013-05-23T05:55:18Z</updated>
8
+ <link rel="self" href="http://localhost:8153/go/api/pipelines/defaultPipeline/stages.xml"/>
9
+ <entry>
10
+ <title><![CDATA[defaultPipeline(7) stage FastFeedback(1) Passed]]></title>
11
+ <updated>2013-05-23T05:55:18Z</updated>
12
+ <id>http://localhost:8153/go/pipelines/defaultPipeline/7/FastFeedback/1</id>
13
+ <author>
14
+ <name><![CDATA[Shishir <shishir.das@gmail.com>]]></name>
15
+ </author>
16
+ <link title="FastFeedback Stage Detail" href="http://localhost:8153/go/api/stages/1.xml" rel="alternate" type="application/vnd.go+xml"/>
17
+ <link title="FastFeedback Stage Detail" href="http://localhost:8153/go/pipelines/defaultPipeline/1/FastFeedback/1" rel="alternate" type="text/html"/>
18
+ <link title="defaultPipeline Pipeline Detail" href="http://localhost:8153/go/api/pipelines/defaultPipeline/1.xml" rel="http://www.thoughtworks-studios.com/ns/relations/go/pipeline" type="application/vnd.go+xml"/>
19
+ <link title="defaultPipeline Pipeline Detail" href="http://localhost:8153/go/pipelines/defaultPipeline/1/FastFeedback/1/pipeline" rel="http://www.thoughtworks-studios.com/ns/relations/go/pipeline" type="text/html"/>
20
+ <category scheme="http://www.thoughtworks-studios.com/ns/categories/go" term="stage" label="Stage"/>
21
+ <category scheme="http://www.thoughtworks-studios.com/ns/categories/go" term="completed" label="Completed"/>
22
+ <category scheme="http://www.thoughtworks-studios.com/ns/categories/go" term="passed" label="Passed"/>
23
+ </entry>
24
+ </feed>
@@ -0,0 +1,24 @@
1
+ <feed xmlns="http://www.w3.org/2005/Atom" xmlns:go="http://www.thoughtworks-studios.com/ns/go">
2
+ <title><![CDATA[integrationPipeline]]></title>
3
+ <id>http://localhost:8153/go/api/pipelines/integrationPipeline/stages.xml</id>
4
+ <author>
5
+ <name>Go</name>
6
+ </author>
7
+ <updated>2013-05-23T05:56:17Z</updated>
8
+ <link rel="self" href="http://localhost:8153/go/api/pipelines/integrationPipeline/stages.xml"/>
9
+ <entry>
10
+ <title><![CDATA[integrationPipeline(7) stage FastFeedback(1) Passed]]></title>
11
+ <updated>2013-05-23T05:56:17Z</updated>
12
+ <id>http://localhost:8153/go/pipelines/integrationPipeline/7/FastFeedback/1</id>
13
+ <author>
14
+ <name><![CDATA[Shishir <shishir.das@gmail.com>]]></name>
15
+ </author>
16
+ <link title="FastFeedback Stage Detail" href="http://localhost:8153/go/api/stages/1.xml" rel="alternate" type="application/vnd.go+xml"/>
17
+ <link title="FastFeedback Stage Detail" href="http://localhost:8153/go/pipelines/integrationPipeline/1/FastFeedback/1" rel="alternate" type="text/html"/>
18
+ <link title="integrationPipeline Pipeline Detail" href="http://localhost:8153/go/api/pipelines/integrationPipeline/1.xml" rel="http://www.thoughtworks-studios.com/ns/relations/go/pipeline" type="application/vnd.go+xml"/>
19
+ <link title="integrationPipeline Pipeline Detail" href="http://localhost:8153/go/pipelines/integrationPipeline/1/FastFeedback/1/pipeline" rel="http://www.thoughtworks-studios.com/ns/relations/go/pipeline" type="text/html"/>
20
+ <category scheme="http://www.thoughtworks-studios.com/ns/categories/go" term="stage" label="Stage"/>
21
+ <category scheme="http://www.thoughtworks-studios.com/ns/categories/go" term="completed" label="Completed"/>
22
+ <category scheme="http://www.thoughtworks-studios.com/ns/categories/go" term="passed" label="Passed"/>
23
+ </entry>
24
+ </feed>
@@ -0,0 +1,5 @@
1
+ <pipelines>
2
+ <link rel="self" href="http://localhost:8153/go/api/pipelines.xml"/>
3
+ <pipeline href="http://localhost:8153/go/api/pipelines/defaultPipeline/stages.xml"/>
4
+ <pipeline href="http://localhost:8153/go/api/pipelines/integrationPipeline/stages.xml"/>
5
+ </pipelines>
@@ -20,6 +20,20 @@ module GoApiClient
20
20
  assert_equal 25*3, feed.entries.count
21
21
  end
22
22
 
23
+ test "should fetch all the pipelines" do
24
+ stub_request(:get,"https://localhost:8153/go/api/pipelines.xml" ).to_return(:body => file_contents("pipelines.xml"))
25
+ stub_request(:get,"http://localhost:8153/go/api/pipelines/defaultPipeline/stages.xml" ).to_return(:body => file_contents("default_pipeline.xml"))
26
+ stub_request(:get,"http://localhost:8153/go/api/pipelines/integrationPipeline/stages.xml" ).to_return(:body => file_contents("integration_pipeline.xml"))
27
+
28
+ feeds = GoApiClient::Atom::Feed.new("https://localhost:8153/go/api/pipelines.xml", nil).fetch_all!
29
+ assert_equal 2, feeds.count
30
+ assert_equal "http://localhost:8153/go/api/pipelines/defaultPipeline/stages.xml", feeds.keys[0]
31
+ assert_equal "http://localhost:8153/go/api/pipelines/integrationPipeline/stages.xml", feeds.keys[1]
32
+
33
+ assert_equal 1, feeds.values[0].entries.count
34
+ assert_equal 1, feeds.values[1].entries.count
35
+ end
23
36
  end
37
+
24
38
  end
25
39
  end
@@ -70,6 +70,27 @@ module GoApiClient
70
70
  runs = GoApiClient.runs(:host => "localhost", :port => 8153)
71
71
 
72
72
  assert runs.pipelines.empty?
73
+
74
+ end
75
+
76
+ test "should returns feed data for all pipelines available on the server" do
77
+ stub_request(:get,"http://localhost:8153/go/api/pipelines.xml" ).to_return(:body => file_contents("pipelines.xml"))
78
+
79
+ stub_request(:get,"http://localhost:8153/go/api/pipelines/defaultPipeline/stages.xml" ).to_return(:body => file_contents("default_pipeline.xml"))
80
+ stub_request(:get, "http://localhost:8153/go/api/pipelines/defaultPipeline/1.xml").to_return(:body => file_contents("pipelines_1.xml"))
81
+ stub_request(:get, "http://localhost:8153/go/api/stages/1.xml").to_return(:body => file_contents("stages_1.xml"))
82
+ stub_request(:get, "http://localhost:8153/go/api/jobs/1.xml").to_return(:body => file_contents("jobs_1.xml"))
83
+
84
+
85
+ stub_request(:get,"http://localhost:8153/go/api/pipelines/integrationPipeline/stages.xml" ).to_return(:body => file_contents("integration_pipeline.xml"))
86
+ stub_request(:get, "http://localhost:8153/go/api/pipelines/integrationPipeline/1.xml").to_return(:body => file_contents("pipelines_1.xml"))
87
+ stub_request(:get, "http://localhost:8153/go/api/stages/1.xml").to_return(:body => file_contents("stages_1.xml"))
88
+ stub_request(:get, "http://localhost:8153/go/api/jobs/1.xml").to_return(:body => file_contents("jobs_1.xml"))
89
+
90
+
91
+
92
+ all_runs = GoApiClient::all_runs({:host => "localhost"})
93
+ assert_equal all_runs.keys, %w(http://localhost:8153/go/api/pipelines/defaultPipeline/stages.xml http://localhost:8153/go/api/pipelines/integrationPipeline/stages.xml)
73
94
  end
74
95
  end
75
96
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: go_api_client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-03-18 00:00:00.000000000 Z
14
+ date: 2013-05-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: webmock
@@ -104,6 +104,7 @@ extensions: []
104
104
  extra_rdoc_files: []
105
105
  files:
106
106
  - .gitignore
107
+ - .init.sh
107
108
  - .rvmrc
108
109
  - .yardopts
109
110
  - Gemfile
@@ -123,6 +124,7 @@ files:
123
124
  - lib/go_api_client/helpers/simple_attribute_support.rb
124
125
  - lib/go_api_client/http_fetcher.rb
125
126
  - lib/go_api_client/job.rb
127
+ - lib/go_api_client/logger.rb
126
128
  - lib/go_api_client/pipeline.rb
127
129
  - lib/go_api_client/stage.rb
128
130
  - lib/go_api_client/user.rb
@@ -139,6 +141,8 @@ files:
139
141
  - test/fixtures/building/stages_2.xml
140
142
  - test/fixtures/building/stages_3.xml
141
143
  - test/fixtures/building/stages_4.xml
144
+ - test/fixtures/default_pipeline.xml
145
+ - test/fixtures/integration_pipeline.xml
142
146
  - test/fixtures/job_1_console.log.txt
143
147
  - test/fixtures/job_2_console.log.txt
144
148
  - test/fixtures/jobs_1.xml
@@ -174,6 +178,7 @@ files:
174
178
  - test/fixtures/pagination/stages.xml
175
179
  - test/fixtures/pagination/stages_before_7916973.xml
176
180
  - test/fixtures/pagination/stages_before_7959831.xml
181
+ - test/fixtures/pipelines.xml
177
182
  - test/fixtures/pipelines_1.xml
178
183
  - test/fixtures/stages.xml
179
184
  - test/fixtures/stages_1.xml
@@ -193,7 +198,8 @@ files:
193
198
  - test/schedule_test.rb
194
199
  - test/test_helper.rb
195
200
  homepage: https://github.com/ThoughtWorksInc/go-api-client
196
- licenses: []
201
+ licenses:
202
+ - MIT
197
203
  post_install_message:
198
204
  rdoc_options: []
199
205
  require_paths:
@@ -204,21 +210,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
204
210
  - - ! '>='
205
211
  - !ruby/object:Gem::Version
206
212
  version: '0'
207
- segments:
208
- - 0
209
- hash: 4219299069108051820
210
213
  required_rubygems_version: !ruby/object:Gem::Requirement
211
214
  none: false
212
215
  requirements:
213
216
  - - ! '>='
214
217
  - !ruby/object:Gem::Version
215
218
  version: '0'
216
- segments:
217
- - 0
218
- hash: 4219299069108051820
219
219
  requirements: []
220
220
  rubyforge_project: go_api_client
221
- rubygems_version: 1.8.25
221
+ rubygems_version: 1.8.23
222
222
  signing_key:
223
223
  specification_version: 3
224
224
  summary: Client to parse Go CI atom feed
@@ -235,6 +235,8 @@ test_files:
235
235
  - test/fixtures/building/stages_2.xml
236
236
  - test/fixtures/building/stages_3.xml
237
237
  - test/fixtures/building/stages_4.xml
238
+ - test/fixtures/default_pipeline.xml
239
+ - test/fixtures/integration_pipeline.xml
238
240
  - test/fixtures/job_1_console.log.txt
239
241
  - test/fixtures/job_2_console.log.txt
240
242
  - test/fixtures/jobs_1.xml
@@ -270,6 +272,7 @@ test_files:
270
272
  - test/fixtures/pagination/stages.xml
271
273
  - test/fixtures/pagination/stages_before_7916973.xml
272
274
  - test/fixtures/pagination/stages_before_7959831.xml
275
+ - test/fixtures/pipelines.xml
273
276
  - test/fixtures/pipelines_1.xml
274
277
  - test/fixtures/stages.xml
275
278
  - test/fixtures/stages_1.xml