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

Sign up to get free protection for your applications and to get access to all the features.
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