Class: Travis::Client::Session
- Inherits:
-
Object
- Object
- Travis::Client::Session
show all
- Includes:
- Methods
- Defined in:
- lib/travis/client/session.rb
Constant Summary
collapse
- SSL_OPTIONS =
{ :ca_file => File.expand_path("../../cacert.pem", __FILE__) }
Instance Attribute Summary collapse
Instance Method Summary
collapse
Methods included from Methods
#api_endpoint, #api_endpoint=, #artifact, #build, #explicit_api_endpoint?, #github_auth, #job, #repo, #repos, #restart, #user, #worker, #workers
Constructor Details
#initialize(options = Travis::Client::ORG_URI) ⇒ Session
Returns a new instance of Session.
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/travis/client/session.rb', line 14
def initialize(options = Travis::Client::ORG_URI)
@headers = {}
@cache = {}
@instruments = []
@config = nil
@faraday_adapter = :net_http_persistent
options = { :uri => options } unless options.respond_to? :each_pair
options.each_pair { |key, value| public_send("#{key}=", value) }
raise ArgumentError, "neither :uri nor :connection specified" unless connection
['Accept'] ||= 'application/vnd.travis-ci.2+json, */*; q=0.01'
end
|
Instance Attribute Details
#access_token ⇒ Object
Returns the value of attribute access_token.
12
13
14
|
# File 'lib/travis/client/session.rb', line 12
def access_token
@access_token
end
|
#connection ⇒ Object
Returns the value of attribute connection.
12
13
14
|
# File 'lib/travis/client/session.rb', line 12
def connection
@connection
end
|
#faraday_adapter ⇒ Object
Returns the value of attribute faraday_adapter.
12
13
14
|
# File 'lib/travis/client/session.rb', line 12
def faraday_adapter
@faraday_adapter
end
|
Returns the value of attribute headers.
12
13
14
|
# File 'lib/travis/client/session.rb', line 12
def
@headers
end
|
#instruments ⇒ Object
Returns the value of attribute instruments.
12
13
14
|
# File 'lib/travis/client/session.rb', line 12
def instruments
@instruments
end
|
Instance Method Details
#clear_cache ⇒ Object
151
152
153
154
155
|
# File 'lib/travis/client/session.rb', line 151
def clear_cache
reset_entities
clear_find_cache
self
end
|
#clear_cache! ⇒ Object
157
158
159
160
161
|
# File 'lib/travis/client/session.rb', line 157
def clear_cache!
reset_entities
@cache.clear
self
end
|
#config ⇒ Object
108
109
110
|
# File 'lib/travis/client/session.rb', line 108
def config
@config ||= get_raw('/config')['config']
end
|
#find_many(entity, args = {}) ⇒ Object
75
76
77
78
|
# File 'lib/travis/client/session.rb', line 75
def find_many(entity, args = {})
raise Travis::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
cached(entity, :many, args) { fetch_many(entity, args) }
end
|
#find_one(entity, id = nil) ⇒ Object
69
70
71
72
73
|
# File 'lib/travis/client/session.rb', line 69
def find_one(entity, id = nil)
raise Travis::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
return create_entity(entity, "id" => id) if id.is_a? Integer
cached(entity, :by, id) { fetch_one(entity, id) }
end
|
#find_one_or_many(entity, args = nil) ⇒ Object
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
# File 'lib/travis/client/session.rb', line 80
def find_one_or_many(entity, args = nil)
raise Travis::Error, "cannot fetch #{entity}" unless entity.respond_to?(:many) and entity.many
cached(entity, :one_or_many, args) do
path = "/#{entity.many}"
path, args = "#{path}/#{args}", {} unless args.is_a? Hash
result = get(path, args)
one = result[entity.one]
if result.include? entity.many
Array(one) + Array(result[entity.many])
else
one
end
end
end
|
#get(*args) ⇒ Object
125
126
127
|
# File 'lib/travis/client/session.rb', line 125
def get(*args)
load get_raw(*args)
end
|
#get_raw(*args) ⇒ Object
129
130
131
|
# File 'lib/travis/client/session.rb', line 129
def get_raw(*args)
raw(:get, *args)
end
|
#inspect ⇒ Object
147
148
149
|
# File 'lib/travis/client/session.rb', line 147
def inspect
"#<#{self.class}: #{uri}>"
end
|
#instrument(&block) ⇒ Object
167
168
169
|
# File 'lib/travis/client/session.rb', line 167
def instrument(&block)
instruments << block
end
|
#load(data) ⇒ Object
112
113
114
115
116
117
118
119
120
121
122
123
|
# File 'lib/travis/client/session.rb', line 112
def load(data)
result = {}
(data || {}).each_pair do |key, value|
type = Entity.subclass_for(key)
if value.respond_to? :to_ary
result[key] = value.to_ary.map { |e| create_entity(type, e) }
else
result[key] = create_entity(type, value)
end
end
result
end
|
#post_raw(*args) ⇒ Object
133
134
135
|
# File 'lib/travis/client/session.rb', line 133
def post_raw(*args)
raw(:post, *args)
end
|
#put_raw(*args) ⇒ Object
137
138
139
|
# File 'lib/travis/client/session.rb', line 137
def put_raw(*args)
raw(:put, *args)
end
|
#raw(verb, *args) ⇒ Object
141
142
143
144
145
|
# File 'lib/travis/client/session.rb', line 141
def raw(verb, *args)
instrumented(verb.to_s.upcase, *args) { connection.public_send(verb, *args).body }
rescue Faraday::Error::ClientError => e
handle_error(e)
end
|
#reload(entity) ⇒ Object
101
102
103
104
105
106
|
# File 'lib/travis/client/session.rb', line 101
def reload(entity)
reset(entity)
result = fetch_one(entity.class, entity.id)
entity.update_attributes(result.attributes) if result.attributes != entity.attributes
result
end
|
#reset(entity) ⇒ Object
96
97
98
99
|
# File 'lib/travis/client/session.rb', line 96
def reset(entity)
entity.attributes.clear
entity
end
|
#session ⇒ Object
163
164
165
|
# File 'lib/travis/client/session.rb', line 163
def session
self
end
|
#uri ⇒ Object
28
29
30
|
# File 'lib/travis/client/session.rb', line 28
def uri
connection.url_prefix.to_s if connection
end
|
#uri=(uri) ⇒ Object
32
33
34
35
36
37
38
39
40
41
|
# File 'lib/travis/client/session.rb', line 32
def uri=(uri)
clear_cache!
self.connection = Faraday.new(:url => uri, :ssl => SSL_OPTIONS) do |faraday|
faraday.request :url_encoded
faraday.response :json
faraday.response :follow_redirects
faraday.response :raise_error
faraday.adapter(*faraday_adapter)
end
end
|