bugsnag-api 1.0.1 → 1.0.2

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