bugsnag-api 1.0.1 → 1.0.2

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,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ae6a214efafc2a17097c3ce489c079d76205c098
4
- data.tar.gz: 931212dfa15eeaedd848e7c7a4ef836690e7f777
3
+ metadata.gz: 3342f6cc4325b1835c5846f1afa9bd63fef42fb6
4
+ data.tar.gz: 28ea193213ca5423515f5347041b05cdeae9e439
5
5
  SHA512:
6
- metadata.gz: efbe6b07725c95659ac675856d9f59db7cdc851151c3606f1362aa36841d7924acf1403fb70061ea4c7fbe8a54732a574104456a736e01ca74be57d143d48ce9
7
- data.tar.gz: 3a574921af5aaef6ca79cb04d0b646cc1f1f552c68ee5844d37d5d2fb0da874138fc21fcc9c3307d0b7d4e6c485a5717da0f813f0e3c41596c4f502949bfd5a2
6
+ metadata.gz: b023d4477ac3c8353c45e0f305eda52deda433d4b7ab69df4699636c67d7e6c4472ecff76755a3a500c7920afb341eaff0df024c2fb2e157f8b2736105fbe704
7
+ data.tar.gz: c7d0bba29e231b9bed1826a7ebb6f9f37beca66c282c2e315d78f13a6e52f469be708f369f94b63301456415ee33cce18bea7319f3379586e5a4ac6e36cbb83f
@@ -6,3 +6,4 @@ rvm:
6
6
  - jruby-18mode
7
7
  - jruby-19mode
8
8
  - 1.8.7
9
+ - rbx-2
@@ -1,6 +1,10 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 1.0.2
5
+ -----
6
+ - Fix load-order bug when requiring from certain environments
7
+
4
8
  1.0.1
5
9
  -----
6
10
  - Added test suite
@@ -1,6 +1,7 @@
1
- Copyright (c) 2014 Bugsnag Inc.
1
+ Parts of this software are derived from Octokit.rb, Copyright (c) 2009-2014
2
+ Wynn Netherland, Adam Stacoviak, Erik Michaels-Ober.
2
3
 
3
- MIT License
4
+ The remaining parts are Copyright (c) 2014 Bugsnag Inc.
4
5
 
5
6
  Permission is hereby granted, free of charge, to any person obtaining
6
7
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -5,50 +5,323 @@ The library allows for quick read/write access to the [Bugsnag API](https://bugs
5
5
 
6
6
  If you are looking to automatically detect crashes in your Ruby apps, you should take a look at the [Bugsnag Ruby Detection Library](https://bugsnag.com/docs/notifiers/ruby) instead.
7
7
 
8
- This library shares code and philosophies with the fantastic [Octokit](https://github.com/octokit/octokit.rb) library.
8
+ This library borrows heavily from the code and philosophies of the fantastic [Octokit](https://github.com/octokit/octokit.rb) library. A big thanks to [@pengwynn](https://github.com/pengwynn) and the rest of the Octokit team!
9
+
10
+
11
+ ## Contents
12
+
13
+ - [Installation](#installation)
14
+ - [Usage](#usage)
15
+ - [Making Requests](#making-requests)
16
+ - [Consuming Resources](#consuming-resources)
17
+ - [Accessing Related Resources](#accessing-related-resources)
18
+ - [Authentication](#authentication)
19
+ - [Pagination](#pagination)
20
+ - [Accessing HTTP responses](#accessing-http-responses)
21
+ - [API Methods](#api-methods)
22
+ - [Accounts](#accounts)
23
+ - [Comments](#comments)
24
+ - [Errors](#errors)
25
+ - [Events](#events)
26
+ - [Projects](#projects)
27
+ - [Users](#users)
28
+ - [Advanced Configuration](#advanced-configuration)
9
29
 
10
30
 
11
31
  ## Installation
12
32
 
13
33
  Add this line to your application's Gemfile:
14
34
 
15
- gem "bugsnag-api"
35
+ ```ruby
36
+ gem "bugsnag-api"
37
+ ```
16
38
 
17
39
  And then execute:
18
40
 
19
- $ bundle
41
+ ```
42
+ $ bundle
43
+ ```
20
44
 
21
45
  Or install it yourself as:
22
46
 
23
- $ gem install bugsnag-api
47
+ ```
48
+ $ gem install bugsnag-api
49
+ ```
24
50
 
25
51
 
26
52
  ## Usage
27
53
 
54
+ ### Making Requests
55
+
56
+ API methods are available as module methods or as client instance methods.
57
+
28
58
  ```ruby
29
- # Configure a Bugsnag API client
59
+ # Provide authentication credentials
30
60
  Bugsnag::Api.configure do |config|
31
61
  config.auth_token = "your-account-api-token"
32
62
  end
33
63
 
34
- # Fetch information about the authenticated account
64
+ # Fetch the current account
65
+ account = Bugsnag::Api.account
66
+ ```
67
+
68
+ or...
69
+
70
+ ```ruby
71
+ # Create an non-static API client
72
+ client = Bugsnag::Api::Client.new(auth_token: "your-account-api-token")
73
+
74
+ # Access API methods on the client
75
+ accounts = client.accounts
76
+ ```
77
+
78
+ ### Consuming Resources
79
+
80
+ Most methods return a `Resource` object which provides dot notation and [] access for fields returned in the API response.
81
+
82
+ ```ruby
83
+ # Fetch the current account
35
84
  account = Bugsnag::Api.account
36
85
 
37
- # Get a list of users on this account
38
- users = Bugsnag::Api.users(account.id)
86
+ puts account.name
87
+ # => "Acme Co"
88
+
89
+ puts account.fields
90
+ # => #<Set: {:id, :name, :created_at, :updated_at, :url, :users_url, :projects_url, :account_creator, :billing_contact}>
91
+
92
+ puts account[:id]
93
+ # => "50baed0d9bf39c1431000003"
39
94
 
40
- # Get a list of the projects on this account
41
- projects = Bugsnag::Api.projects(account.id)
95
+ account.rels[:users].href
96
+ # => "https://api.bugsnag.com/accounts/50baed0d9bf39c1431000003/users"
97
+ ```
98
+
99
+ ### Accessing Related Resources
100
+
101
+ Resources returned by Bugsnag API methods contain not only data but hypermedia link relations:
102
+
103
+ ```ruby
104
+ account = Bugsnag::Api.account
42
105
 
43
- # Get a list of errors on a project
44
- errors = Bugsnag::Api.errors(projects.first.id)
106
+ # Get the users rel, returned from the API as users_url in the resource
107
+ account.rels[:users].href
108
+ # => "https://api.bugsnag.com/accounts/50baed0d9bf39c1431000003/users"
109
+
110
+ users = account.rels[:users].get.data
111
+ users.last.name
112
+ # => "James Smith"
45
113
  ```
46
114
 
115
+ When processing API responses, all `*_url` attributes are culled in to the link relations collection. Any `url` attribute becomes `.rels[:self]`.
116
+
47
117
 
48
- ## Documentation
118
+ ### Authentication
49
119
 
50
- Full documentation of available methods can be found here:
51
- <http://rubydoc.info/github/bugsnag/bugsnag-api-ruby>
120
+ API usage requires authentication. You can authenticate using either your
121
+ Bugsnag account's [auth token](https://bugsnag.com/docs/api#account-authentication)
122
+ or with your Bugsnag [user credentials](https://bugsnag.com/docs/api#user-authentication).
123
+
124
+ ```ruby
125
+ # Authenticate with your Bugsnag account's auth token
126
+ Bugsnag::Api.configure do |config|
127
+ config.auth_token = "your-account-api-token"
128
+ end
129
+
130
+ # Authenticate using your Bugsnag email address and password
131
+ Bugsnag::Api.configure do |config|
132
+ config.email = "example@example.com"
133
+ config.password = "password"
134
+ end
135
+ ```
136
+
137
+ ### Pagination
138
+
139
+ Many Bugsnag API resources are paginated. While you may be tempted to start adding :page parameters to your calls, the API returns links to the next and previous pages for you in the `Link` response header, which we expose in `rels`:
140
+
141
+ ```ruby
142
+ errors = Bugsnag::Api.errors("project-id", per_page: 100)
143
+ errors.concat Bugsnag::Api.last_response.rels[:next].get.data
144
+ ```
145
+
146
+
147
+ ### Accessing HTTP responses
148
+
149
+ While most methods return a `Resource` object or a `Boolean`, sometimes you may need access to the raw HTTP response headers. You can access the last HTTP response with `Client#last_response`:
150
+
151
+ ```ruby
152
+ account = Bugsnag::Api.account
153
+ response = Bugsnag::Api.last_response
154
+ status = response.headers[:status]
155
+ ```
156
+
157
+ ## API Methods
158
+
159
+ ### Account
160
+
161
+ ```ruby
162
+ # List your accounts
163
+ accounts = Bugsnag::Api.accounts
164
+
165
+ # Get a single account
166
+ account = Bugsnag::Api.account("account-id")
167
+
168
+ # Get authenticated account (requires account auth)
169
+ account = Bugsnag::Api.account
170
+ ```
171
+
172
+ ### Comments
173
+
174
+ ```ruby
175
+ # List error comments
176
+ comments = Bugsnag::Api.comments("error-id")
177
+
178
+ # Get a single comment
179
+ comment = Bugsnag::Api.comment("comment-id")
180
+
181
+ # Create a comment
182
+ comment = Bugsnag::Api.create_comment("error-id", "comment message")
183
+
184
+ # Update a comment
185
+ comment = Bugsnag::Api.update_comment("comment-id", "new comment message")
186
+
187
+ # Delete a comment
188
+ Bugsnag::Api.delete_comment("comment-id")
189
+ ```
190
+
191
+ ### Errors
192
+
193
+ ```ruby
194
+ # List project errors
195
+ errors = Bugsnag::Api.errors("project-id")
196
+
197
+ # Get a single error
198
+ error = Bugsnag::Api.error("error-id")
199
+
200
+ # Resolve an error
201
+ error = Bugsnag::Api.resolve_error("error-id")
202
+
203
+ # Re-open an error
204
+ error = Bugsnag::Api.reopen_error("error-id")
205
+
206
+ # Update an error
207
+ error = Bugsnag::Api.update_error("error-id", {
208
+ resolved: true
209
+ })
210
+
211
+ # Delete an error
212
+ error = Bugsnag::Api.delete_error("error-id")
213
+ ```
214
+
215
+ ### Events
216
+
217
+ ```ruby
218
+ # List project events
219
+ events = Bugsnag::Api.events("project-id")
220
+
221
+ # List error events
222
+ events = Bugsnag::Api.error_events("error-id")
223
+
224
+ # Get a single event
225
+ event = Bugsnag::Api.event("event-id")
226
+
227
+ # Delete an event
228
+ Bugsnag::Api.delete_event("event-id")
229
+ ```
230
+
231
+ ### Projects
232
+
233
+ ```ruby
234
+ # List account projects
235
+ projects = Bugsnag::Api.projects("account-id")
236
+
237
+ # List authenticated account's projects (requires account auth)
238
+ projects = Bugsnag::Api.projects
239
+
240
+ # List user projects
241
+ projects = Bugsnag::Api.user_projects("user-id")
242
+
243
+ # Get a single project
244
+ project = Bugsnag::Api.project("project-id")
245
+
246
+ # Create a project
247
+ project = Bugsnag::Api.create_project("account-id", {
248
+ name: "Name",
249
+ type: "rails"
250
+ })
251
+
252
+ # Update a project
253
+ project = Bugsnag::Api.update_project("project-id", {
254
+ name: "New Name"
255
+ })
256
+
257
+ # Delete a project
258
+ Bugsnag::Api.delete_project("project-id")
259
+ ```
260
+
261
+ ### Users
262
+
263
+ ```ruby
264
+ # List account users
265
+ users = Bugsnag::Api.users("account-id")
266
+
267
+ # List authenticated account's users (requires account auth)
268
+ users = Bugsnag::Api.users
269
+
270
+ # List project users
271
+ users = Bugsnag::Api.project_users("project-id")
272
+
273
+ # Get a single user
274
+ user = Bugsnag::Api.user("user-id")
275
+
276
+ # Get authenticated user (requires user auth)
277
+ user = Bugsnag::Api.user
278
+
279
+ # Invite a user to an account
280
+ user = Bugsnag::Api.invite_user("account-id", "example@example.com", {
281
+ admin: true
282
+ })
283
+
284
+ # Update a user's account permissions
285
+ user = Bugsnag::Api.update_user_permissions("account-id", "user-id", {
286
+ admin: false
287
+ })
288
+
289
+ # Remove a user from an account
290
+ Bugsnag::Api.remove_user("account-id", "user-id")
291
+ ```
292
+
293
+
294
+ ## Advanced Configuration
295
+
296
+ ### Endpoint
297
+
298
+ By default, `https://api.bugsnag.com` is used for API access, if you are using
299
+ Bugsnag Enterprise, you can configure a custom endpoint.
300
+
301
+ ```ruby
302
+ Bugsnag.Api.configure do |config|
303
+ config.endpoint = "http://api.bugsnag.example.com"
304
+ end
305
+ ```
306
+
307
+ ### Proxy
308
+
309
+ If you are using a proxy, you can configure the API client to use it.
310
+
311
+ ```ruby
312
+ Bugsnag.Api.configure do |config|
313
+ config.proxy = {
314
+ uri: "http://proxy.example.com",
315
+ user: "foo",
316
+ password: "bar"
317
+ }
318
+ end
319
+ ```
320
+
321
+
322
+ ## Build Status
323
+
324
+ ![Build status](https://travis-ci.org/bugsnag/bugsnag-api-ruby.svg?branch=master)
52
325
 
53
326
 
54
327
  ## Contributing
@@ -58,3 +331,8 @@ Full documentation of available methods can be found here:
58
331
  3. Commit your changes (`git commit -am 'Add some feature'`)
59
332
  4. Push to the branch (`git push origin my-new-feature`)
60
333
  5. Create new Pull Request
334
+
335
+
336
+ ## License
337
+
338
+ The Bugsnag API Toolkit for Ruby is free software released under the MIT License. See [LICENSE.txt](LICENSE.txt) for details.
data/Rakefile CHANGED
@@ -1,10 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
2
 
3
3
  # RSpec tasks
4
- require 'rspec/core'
5
4
  require "rspec/core/rake_task"
6
- RSpec::Core::RakeTask.new(:spec) do |spec|
7
- spec.pattern = FileList['spec/**/*_spec.rb']
8
- end
9
-
5
+ RSpec::Core::RakeTask.new(:spec)
10
6
  task :default => :spec
@@ -25,6 +25,6 @@ Gem::Specification.new do |spec|
25
25
  spec.add_development_dependency "rspec", "~> 3.0"
26
26
  spec.add_development_dependency "webmock"
27
27
  spec.add_development_dependency "faker"
28
- spec.add_development_dependency "vcr"
28
+ spec.add_development_dependency "vcr", "~> 2.9"
29
29
  spec.add_development_dependency "json"
30
30
  end
@@ -1,3 +1,4 @@
1
+ require "bugsnag/api/version"
1
2
  require "bugsnag/api/response/raise_error"
2
3
 
3
4
  module Bugsnag
@@ -1,5 +1,5 @@
1
1
  module Bugsnag
2
2
  module Api
3
- VERSION = "1.0.1"
3
+ VERSION = "1.0.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bugsnag-api
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Smith
@@ -98,16 +98,16 @@ dependencies:
98
98
  name: vcr
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - '>='
101
+ - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: '2.9'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - '>='
108
+ - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: '2.9'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: json
113
113
  requirement: !ruby/object:Gem::Requirement