travis 1.5.6.travis.297.4 → 1.5.6.travis.299.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NmI2MGJjYjg5ZDA0OTVhNWUwMWQ2OTY3YWU1NDM1Mzg4MDI2ZjRhOA==
4
+ NjA0ZDQ3MjhlOGUzMzY3NmEzY2MxNTI3ZTZhNzg0YTkwM2Q3MjQ3YQ==
5
5
  data.tar.gz: !binary |-
6
- ZWQ5NmNmYzk2ZDBmMzhiZWM3MjJhNmM0MTFkOTgwM2FhODliYjI3Mg==
6
+ NTUxNjZiNTcxMjg1Y2VkZWQ3OGRmOWIwM2I2NjdlMTllM2FkZDY3Nw==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- NWRiN2VjNzkyOTI5Y2RhOTY2ODRhNDQ1NjI1YjRlMjlhY2IwZjBhODUxNjVk
10
- MWVlNTI1ZTdlMjcxNTAwYWE3YTg2NzFkZWQyMTZkMjMzZWRmYTU4ZTBlYzgy
11
- MmY1NDQzMGIzYzU3MmViMWRjY2ZmOTgzZTU0NzU1ZTViNmMyMmQ=
9
+ ZjNjZTI4MWM4ZGJhNzY0MjFjZDc2ZDA4NmQ1NzliYzFjYjI2OTU0NmQ2OTVj
10
+ NTIxNTIzNjY2OTIzZmJjZWU1Zjg0MDdiMDcwNTVlMWQ1NjBlYzgxN2Q2ZTYy
11
+ NTY4ZGM2MWZiNTU3Zjg5ZjZhZGQzZDU3Y2FkZDg2NmQyYTBkNGY=
12
12
  data.tar.gz: !binary |-
13
- MTNhZGNlNzU5YzE5MjcyMzVhYTNiZDNmYmRhNTZmZWRmOTBmZDQ2NmNhYWQz
14
- YTU0NTdhZGE0ZGM2NGVkMzZlOTIwZjJjOGU2NDkxYzYxMmVkYTczYjkyN2I2
15
- Mjg2OWFlNDYyNmQ1MzU1Y2JmYmZmMmRmODU3NzgzNTJlZTI4ZTg=
13
+ ODk1YTBmZWRjMTg2NjI1NGM2ZTI5MzY0Yzg2ZTI4Mjk3ODYzMjRkZjEzYzRi
14
+ Y2MzNmUzODU5ZDNjN2M5M2Q5MGE0OGExNWUwNzhhMWIzMTcxZjI5NzNiYTEy
15
+ OTk2YTBmYWEzYjViOGRjMDVkOTIwMmJjODNlMjRhMzY1NTdlMWI=
data/README.md CHANGED
@@ -897,6 +897,9 @@ Travis::Repository.find('rails/rails') # find by slug
897
897
  Travis::Repository.find(891) # find by id
898
898
  Travis::Repository.find_all(owner_name: 'rails') # all repos in the rails organization
899
899
  Travis::Repository.current # repos that see some action right now
900
+
901
+ # all repos with the same owner as the repo with id 891
902
+ Travis::Repository.find(891).owner.repositories
900
903
  ```
901
904
 
902
905
  Once you have a repository, you can for instance encrypt some strings with its private key:
@@ -1250,6 +1253,11 @@ If you have the old `travis-cli` gem installed, you should `gem uninstall travis
1250
1253
 
1251
1254
  * Use new API for fetching a single branch for Repository#branch. This also circumvents the 25 branches limit.
1252
1255
  * Start publishing gem prereleases after successful builds.
1256
+ * Add `account` method for fetching a single account to `Travis::Client::Methods`.
1257
+ * Allow creating account objects for any account, not just these the user is part of. Add `Account#member?` to check for membership.
1258
+ * Add `Account#repositories` to load all repos for a given account.
1259
+ * Add `Repository#owner_name` and `Repository#owner` to load the account owning a repository.
1260
+ * Add `Repository#member?` to check if the current user is a member of a repository.
1253
1261
 
1254
1262
  **1.5.5** (October 2, 2013)
1255
1263
 
@@ -9,10 +9,38 @@ module Travis
9
9
  many :accounts
10
10
 
11
11
  inspect_info :login
12
+ id_field :login
13
+
14
+ def self.cast_id(id)
15
+ String(id)
16
+ end
17
+
18
+ def self.id?(object)
19
+ object.is_a? String
20
+ end
12
21
 
13
22
  def subscribed
14
- attributes.fetch('subscribed') { true }
23
+ load_attribute('subscribed') { true } if member?
24
+ end
25
+
26
+ def repos_count
27
+ load_attribute("repos_count") { repositories.count }
15
28
  end
29
+
30
+ def repositories
31
+ attributes['repositories'] ||= session.repos(:owner_name => login)
32
+ end
33
+
34
+ def member?
35
+ session.accounts.include? self
36
+ end
37
+
38
+ private
39
+
40
+ def load_attribute(name, &block)
41
+ session.accounts if missing? name
42
+ block ? attributes.fetch(name.to_s, &block) : attributes[name.to_s]
43
+ end
16
44
  end
17
45
  end
18
46
  end
@@ -18,7 +18,7 @@ module Travis
18
18
  end
19
19
 
20
20
  def self.subclass_for(key)
21
- MAP.fetch(key)
21
+ MAP.fetch(key.to_s)
22
22
  end
23
23
 
24
24
  def self.aka(*names)
@@ -73,6 +73,17 @@ module Travis
73
73
  Integer(id)
74
74
  end
75
75
 
76
+ def self.id?(object)
77
+ object.is_a? Integer
78
+ end
79
+
80
+ def self.id_field(key = nil)
81
+ @id_field = key.to_s if key
82
+ @id_field || superclass.id_field
83
+ end
84
+
85
+ id_field :id
86
+
76
87
  def initialize(session, id)
77
88
  @attributes = {}
78
89
  @session = session
@@ -7,5 +7,8 @@ module Travis
7
7
 
8
8
  class NotFound < Error
9
9
  end
10
+
11
+ class NotLoggedIn < NotFound
12
+ end
10
13
  end
11
14
  end
@@ -61,6 +61,12 @@ module Travis
61
61
 
62
62
  def user
63
63
  session.find_one(User)
64
+ rescue NotFound
65
+ raise NotLoggedIn, 'currently not logged in'
66
+ end
67
+
68
+ def account(name)
69
+ session.find_one(Account, name)
64
70
  end
65
71
 
66
72
  def accounts
@@ -166,6 +166,18 @@ module Travis
166
166
  end
167
167
  end
168
168
 
169
+ def member?
170
+ session.user.repositories.include? self
171
+ end
172
+
173
+ def owner_name
174
+ slug[/^[^\/]+/]
175
+ end
176
+
177
+ def owner
178
+ session.account(owner_name)
179
+ end
180
+
169
181
  private
170
182
 
171
183
  def state
@@ -83,18 +83,18 @@ module Travis
83
83
  end
84
84
 
85
85
  def find_one(entity, id = nil)
86
- raise Travis::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
87
- return create_entity(entity, "id" => id) if id.is_a? Integer
86
+ raise Travis::Client::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
87
+ return create_entity(entity, entity.id_field => id) if entity.id? id
88
88
  cached(entity, :by, id) { fetch_one(entity, id) }
89
89
  end
90
90
 
91
91
  def find_many(entity, args = {})
92
- raise Travis::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
92
+ raise Travis::Client::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
93
93
  cached(entity, :many, args) { fetch_many(entity, args) }
94
94
  end
95
95
 
96
96
  def find_one_or_many(entity, args = nil)
97
- raise Travis::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
97
+ raise Travis::Client::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
98
98
  cached(entity, :one_or_many, args) do
99
99
  path = "/#{entity.many}"
100
100
  path, args = "#{path}/#{args}", {} unless args.is_a? Hash
@@ -213,8 +213,8 @@ module Travis
213
213
  end
214
214
 
215
215
  def create_entity(type, data)
216
- data = { "id" => data } if Integer === data or String === data
217
- id = type.cast_id(data.fetch('id'))
216
+ data = { type.id_field => data } if type.id? data
217
+ id = type.cast_id(data.fetch(type.id_field))
218
218
  entity = cached(type, :id, id) { type.new(self, id) }
219
219
  entity.update_attributes(data)
220
220
  entity
@@ -16,6 +16,10 @@ module Travis
16
16
  one :worker
17
17
  many :workers
18
18
 
19
+ def self.id?(object)
20
+ object.is_a? String
21
+ end
22
+
19
23
  def payload=(value)
20
24
  set_attribute(:payload, session.load(value))
21
25
  end
@@ -1,12 +1,32 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Travis::Client::Account do
4
- let(:session) { Travis::Client.new }
5
- subject { session.accounts.first }
6
- its(:id) { should be == 123 }
7
- its(:name) { should be == 'Konstantin Haase' }
8
- its(:login) { should be == 'rkh' }
9
- its(:type) { should be == 'user' }
10
- its(:repos_count) { should be == 200 }
11
- its(:inspect) { should be == "#<Travis::Client::Account: rkh>" }
4
+ context "from all accounts" do
5
+ let(:session) { Travis::Client.new }
6
+ subject { session.accounts.first }
7
+ its(:name) { should be == 'Konstantin Haase' }
8
+ its(:login) { should be == 'rkh' }
9
+ its(:type) { should be == 'user' }
10
+ its(:repos_count) { should be == 200 }
11
+ its(:inspect) { should be == "#<Travis::Client::Account: rkh>" }
12
+ end
13
+
14
+ context "known account" do
15
+ let(:session) { Travis::Client.new }
16
+ subject { session.account('rkh') }
17
+ its(:name) { should be == 'Konstantin Haase' }
18
+ its(:login) { should be == 'rkh' }
19
+ its(:type) { should be == 'user' }
20
+ its(:repos_count) { should be == 200 }
21
+ its(:inspect) { should be == "#<Travis::Client::Account: rkh>" }
22
+ end
23
+
24
+ context "known account" do
25
+ let(:session) { Travis::Client.new }
26
+ subject { session.account('foo') }
27
+ its(:name) { should be_nil }
28
+ its(:login) { should be == 'foo' }
29
+ its(:type) { should be_nil }
30
+ its(:inspect) { should be == "#<Travis::Client::Account: foo>" }
31
+ end
12
32
  end
@@ -1,7 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Travis::Client::Repository do
4
- subject { Travis::Client.new.repo('rails/rails') }
4
+ let(:session) { Travis::Client.new }
5
+ subject { session.repo('rails/rails') }
6
+
5
7
  its(:slug) { should be == 'rails/rails' }
6
8
  its(:description) { should_not be_empty }
7
9
  its(:last_build_id) { should be == 4125095 }
@@ -15,6 +17,8 @@ describe Travis::Client::Repository do
15
17
  its(:last_build) { should be_a(Travis::Client::Build) }
16
18
  its(:color) { should be == 'red' }
17
19
  its(:github_language) { should be == 'Ruby' }
20
+ its(:owner_name) { should be == 'rails' }
21
+ its(:owner) { should be == session.account("rails") }
18
22
 
19
23
  it { should_not be_pending }
20
24
  it { should be_started }
@@ -708,8 +708,7 @@ module Travis
708
708
 
709
709
  get '/accounts/' do
710
710
  {"accounts"=>
711
- [{'id' => 123,
712
- 'name' => "Konstantin Haase",
711
+ [{'name' => "Konstantin Haase",
713
712
  'login' => 'rkh',
714
713
  'type' => 'user',
715
714
  'repos_count' => 200
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: travis
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.6.travis.297.4
4
+ version: 1.5.6.travis.299.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Konstantin Haase
@@ -25,7 +25,7 @@ authors:
25
25
  autorequire:
26
26
  bindir: bin
27
27
  cert_chain: []
28
- date: 2013-10-03 00:00:00.000000000 Z
28
+ date: 2013-10-04 00:00:00.000000000 Z
29
29
  dependencies:
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: faraday