Class: Bugsink::Client
- Inherits:
-
Object
show all
- Includes:
- HTTParty
- Defined in:
- lib/bugsink/client.rb
Overview
HTTP client for BugSink API
Defined Under Namespace
Classes: ClientError, Response
Instance Attribute Summary collapse
Instance Method Summary
collapse
-
#event_get(uuid) ⇒ Object
-
#event_stacktrace(uuid) ⇒ Object
-
#events_list(issue_uuid:, order: 'desc', limit: 250, cursor: nil) ⇒ Object
-
#initialize(config = nil) ⇒ Client
constructor
A new instance of Client.
-
#issue_get(uuid) ⇒ Object
-
#issue_resolve(uuid) ⇒ Object
-
#issues_list(project_id:, sort: 'last_seen', order: 'desc', limit: 250, cursor: nil) ⇒ Object
-
#project_create(team_uuid:, name:, visibility: nil, alert_on_new_issue: nil, alert_on_regression: nil, alert_on_unmute: nil) ⇒ Object
-
#project_get(id) ⇒ Object
-
#project_update(id, name: nil, visibility: nil, alert_on_new_issue: nil, alert_on_regression: nil, alert_on_unmute: nil) ⇒ Object
-
#projects_list(team_uuid: nil) ⇒ Object
-
#release_create(project_id:, version:, timestamp: nil) ⇒ Object
-
#release_get(uuid) ⇒ Object
-
#releases_list(project_id:) ⇒ Object
-
#team_create(name:, visibility: nil) ⇒ Object
-
#team_get(uuid) ⇒ Object
-
#team_update(uuid, name: nil, visibility: nil) ⇒ Object
-
#teams_list ⇒ Object
-
#test_connection ⇒ Object
Constructor Details
#initialize(config = nil) ⇒ Client
Returns a new instance of Client.
58
59
60
61
62
63
64
65
66
|
# File 'lib/bugsink/client.rb', line 58
def initialize(config = nil)
@config = config || Config.new
@config.validate!
self.class.base_uri @config.host
self.class. @config.
self.class. 'Content-Type' => 'application/json'
self.class. 'Accept' => 'application/json'
end
|
Instance Attribute Details
#config ⇒ Object
Returns the value of attribute config.
56
57
58
|
# File 'lib/bugsink/client.rb', line 56
def config
@config
end
|
Instance Method Details
#event_get(uuid) ⇒ Object
189
190
191
192
193
|
# File 'lib/bugsink/client.rb', line 189
def event_get(uuid)
response = self.class.get("/api/canonical/0/events/#{uuid}/")
check_response(response)
response.parsed_response
end
|
#event_stacktrace(uuid) ⇒ Object
195
196
197
198
199
|
# File 'lib/bugsink/client.rb', line 195
def event_stacktrace(uuid)
response = self.class.get("/api/canonical/0/events/#{uuid}/stacktrace/")
check_response(response)
response.body
end
|
#events_list(issue_uuid:, order: 'desc', limit: 250, cursor: nil) ⇒ Object
176
177
178
179
180
181
182
183
184
185
186
187
|
# File 'lib/bugsink/client.rb', line 176
def events_list(issue_uuid:, order: 'desc', limit: 250, cursor: nil)
query = {
issue: issue_uuid,
order: order,
limit: limit
}
query[:cursor] = cursor if cursor
response = self.class.get('/api/canonical/0/events/', query: query)
check_response(response)
parse_list_response(response)
end
|
#issue_get(uuid) ⇒ Object
163
164
165
166
167
|
# File 'lib/bugsink/client.rb', line 163
def issue_get(uuid)
response = self.class.get("/api/canonical/0/issues/#{uuid}/")
check_response(response)
response.parsed_response
end
|
#issue_resolve(uuid) ⇒ Object
169
170
171
172
173
|
# File 'lib/bugsink/client.rb', line 169
def issue_resolve(uuid)
response = self.class.post("/api/canonical/0/issues/#{uuid}/resolve/")
check_response(response)
response.parsed_response
end
|
#issues_list(project_id:, sort: 'last_seen', order: 'desc', limit: 250, cursor: nil) ⇒ Object
149
150
151
152
153
154
155
156
157
158
159
160
161
|
# File 'lib/bugsink/client.rb', line 149
def issues_list(project_id:, sort: 'last_seen', order: 'desc', limit: 250, cursor: nil)
query = {
project: project_id,
sort: sort,
order: order,
limit: limit
}
query[:cursor] = cursor if cursor
response = self.class.get('/api/canonical/0/issues/', query: query)
check_response(response)
parse_list_response(response)
end
|
#project_create(team_uuid:, name:, visibility: nil, alert_on_new_issue: nil, alert_on_regression: nil, alert_on_unmute: nil) ⇒ Object
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
# File 'lib/bugsink/client.rb', line 118
def project_create(team_uuid:, name:, visibility: nil, alert_on_new_issue: nil, alert_on_regression: nil, alert_on_unmute: nil)
body = {
team: team_uuid,
name: name
}
body[:visibility] = visibility if visibility
body[:alert_on_new_issue] = alert_on_new_issue unless alert_on_new_issue.nil?
body[:alert_on_regression] = alert_on_regression unless alert_on_regression.nil?
body[:alert_on_unmute] = alert_on_unmute unless alert_on_unmute.nil?
response = self.class.post('/api/canonical/0/projects/', body: body.to_json)
check_response(response)
response.parsed_response
end
|
#project_get(id) ⇒ Object
112
113
114
115
116
|
# File 'lib/bugsink/client.rb', line 112
def project_get(id)
response = self.class.get("/api/canonical/0/projects/#{id}/")
check_response(response)
response.parsed_response
end
|
#project_update(id, name: nil, visibility: nil, alert_on_new_issue: nil, alert_on_regression: nil, alert_on_unmute: nil) ⇒ Object
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# File 'lib/bugsink/client.rb', line 133
def project_update(id, name: nil, visibility: nil, alert_on_new_issue: nil, alert_on_regression: nil, alert_on_unmute: nil)
body = {}
body[:name] = name if name
body[:visibility] = visibility if visibility
body[:alert_on_new_issue] = alert_on_new_issue unless alert_on_new_issue.nil?
body[:alert_on_regression] = alert_on_regression unless alert_on_regression.nil?
body[:alert_on_unmute] = alert_on_unmute unless alert_on_unmute.nil?
raise ArgumentError, 'At least one field must be provided for update' if body.empty?
response = self.class.patch("/api/canonical/0/projects/#{id}/", body: body.to_json)
check_response(response)
response.parsed_response
end
|
#projects_list(team_uuid: nil) ⇒ Object
103
104
105
106
107
108
109
110
|
# File 'lib/bugsink/client.rb', line 103
def projects_list(team_uuid: nil)
query = {}
query[:team] = team_uuid if team_uuid
response = self.class.get('/api/canonical/0/projects/', query: query)
check_response(response)
parse_list_response(response)
end
|
#release_create(project_id:, version:, timestamp: nil) ⇒ Object
216
217
218
219
220
221
222
223
224
225
226
|
# File 'lib/bugsink/client.rb', line 216
def release_create(project_id:, version:, timestamp: nil)
body = {
project: project_id,
version: version
}
body[:timestamp] = timestamp if timestamp
response = self.class.post('/api/canonical/0/releases/', body: body.to_json)
check_response(response)
response.parsed_response
end
|
#release_get(uuid) ⇒ Object
210
211
212
213
214
|
# File 'lib/bugsink/client.rb', line 210
def release_get(uuid)
response = self.class.get("/api/canonical/0/releases/#{uuid}/")
check_response(response)
response.parsed_response
end
|
#releases_list(project_id:) ⇒ Object
202
203
204
205
206
207
208
|
# File 'lib/bugsink/client.rb', line 202
def releases_list(project_id:)
query = { project: project_id }
response = self.class.get('/api/canonical/0/releases/', query: query)
check_response(response)
parse_list_response(response)
end
|
#team_create(name:, visibility: nil) ⇒ Object
81
82
83
84
85
86
87
88
|
# File 'lib/bugsink/client.rb', line 81
def team_create(name:, visibility: nil)
body = { name: name }
body[:visibility] = visibility if visibility
response = self.class.post('/api/canonical/0/teams/', body: body.to_json)
check_response(response)
response.parsed_response
end
|
#team_get(uuid) ⇒ Object
75
76
77
78
79
|
# File 'lib/bugsink/client.rb', line 75
def team_get(uuid)
response = self.class.get("/api/canonical/0/teams/#{uuid}/")
check_response(response)
response.parsed_response
end
|
#team_update(uuid, name: nil, visibility: nil) ⇒ Object
90
91
92
93
94
95
96
97
98
99
100
|
# File 'lib/bugsink/client.rb', line 90
def team_update(uuid, name: nil, visibility: nil)
body = {}
body[:name] = name if name
body[:visibility] = visibility if visibility
raise ArgumentError, 'At least one field must be provided for update' if body.empty?
response = self.class.patch("/api/canonical/0/teams/#{uuid}/", body: body.to_json)
check_response(response)
response.parsed_response
end
|
#teams_list ⇒ Object
69
70
71
72
73
|
# File 'lib/bugsink/client.rb', line 69
def teams_list
response = self.class.get('/api/canonical/0/teams/')
check_response(response)
parse_list_response(response)
end
|
#test_connection ⇒ Object
229
230
231
232
233
234
235
|
# File 'lib/bugsink/client.rb', line 229
def test_connection
response = self.class.get('/api/canonical/0/teams/')
check_response(response)
true
rescue ClientError => e
raise ClientError.new("Connection test failed: #{e.message}", code: e.code, response: e.response)
end
|