rollbar-api 0.2.1 → 0.4.1
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 +5 -5
- data/.github/CODEOWNERS +1 -0
- data/.github/workflows/main.yml +31 -0
- data/.gitignore +0 -1
- data/.rubocop.yml +7 -0
- data/.ruby-version +1 -0
- data/Gemfile +3 -1
- data/Gemfile.lock +119 -0
- data/README.md +24 -12
- data/Rakefile +5 -3
- data/bin/console +4 -3
- data/catalog-info.yaml +12 -0
- data/examples/list_account_users.rb +15 -9
- data/examples/list_items.rb +13 -9
- data/examples/rql_query.rb +15 -11
- data/examples/top_active_items.rb +16 -12
- data/lib/rollbar-api.rb +2 -14
- data/lib/rollbar_api.rb +17 -0
- data/lib/{rollbar-api → rollbar_api}/account.rb +9 -6
- data/lib/rollbar_api/logger.rb +12 -0
- data/lib/{rollbar-api → rollbar_api}/project.rb +9 -6
- data/lib/{rollbar-api → rollbar_api}/request.rb +14 -13
- data/lib/rollbar_api/resource.rb +36 -0
- data/lib/rollbar_api/version.rb +5 -0
- data/rollbar-api.gemspec +28 -23
- metadata +56 -21
- data/lib/rollbar-api/resource.rb +0 -23
- data/lib/rollbar-api/version.rb +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: cb40f1378bac899e1145acb3ac7f53306441009a9a7755eb695216d4eee2789b
|
|
4
|
+
data.tar.gz: 5126b037b0cec8efd7d427489ab9ccbf40fc0c04f26c95e969ac552ce13050b5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 52369017d084475f588ed01a980227d34a9180d93f6169e76d96f9293724f55aba2a7ad9b645d85c0543bee80f72efc4945610da0aa6c01fcc94991030101ebe
|
|
7
|
+
data.tar.gz: d8cb7dbd5c01d5900ec49db6bb25b107b44b15af598f88ae7811d3379cb79bd8451e614df224982d39d314bab1cf1cb39ca2d01e9997cb45c643e963d7f18c9f
|
data/.github/CODEOWNERS
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
* @wealthsimple/developer-tools
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: Pipeline
|
|
3
|
+
on: push
|
|
4
|
+
jobs:
|
|
5
|
+
build:
|
|
6
|
+
name: Build
|
|
7
|
+
runs-on: ubuntu-20.04
|
|
8
|
+
steps:
|
|
9
|
+
- uses: actions/checkout@v2
|
|
10
|
+
- uses: ruby/setup-ruby@v1
|
|
11
|
+
with:
|
|
12
|
+
bundler-cache: true
|
|
13
|
+
- name: Lint
|
|
14
|
+
run: bundle exec rubocop
|
|
15
|
+
- name: Test
|
|
16
|
+
run: bundle exec rspec
|
|
17
|
+
- name: Release the gem
|
|
18
|
+
if: ${{ github.ref == 'refs/heads/main' }}
|
|
19
|
+
run: |
|
|
20
|
+
mkdir -p ~/.gem
|
|
21
|
+
cat << EOF > ~/.gem/credentials
|
|
22
|
+
---
|
|
23
|
+
:github: Bearer ${GITHUB_TOKEN}
|
|
24
|
+
:rubygems_api_key: ${RUBYGEMS_API_KEY}
|
|
25
|
+
EOF
|
|
26
|
+
chmod 0600 ~/.gem/credentials
|
|
27
|
+
git config user.email "noreply@wealthsimple.com"
|
|
28
|
+
git config user.name "Wolfbot"
|
|
29
|
+
bundle exec rake release
|
|
30
|
+
env:
|
|
31
|
+
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
2.7.3
|
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
rollbar-api (0.4.1)
|
|
5
|
+
activesupport (>= 4)
|
|
6
|
+
faraday (< 1.0)
|
|
7
|
+
recursive-open-struct
|
|
8
|
+
|
|
9
|
+
GEM
|
|
10
|
+
remote: https://rubygems.org/
|
|
11
|
+
specs:
|
|
12
|
+
activesupport (6.1.3.1)
|
|
13
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
14
|
+
i18n (>= 1.6, < 2)
|
|
15
|
+
minitest (>= 5.1)
|
|
16
|
+
tzinfo (~> 2.0)
|
|
17
|
+
zeitwerk (~> 2.3)
|
|
18
|
+
addressable (2.7.0)
|
|
19
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
20
|
+
ast (2.4.2)
|
|
21
|
+
concurrent-ruby (1.1.8)
|
|
22
|
+
crack (0.4.5)
|
|
23
|
+
rexml
|
|
24
|
+
diff-lcs (1.4.4)
|
|
25
|
+
dotenv (2.7.6)
|
|
26
|
+
faraday (0.17.4)
|
|
27
|
+
multipart-post (>= 1.2, < 3)
|
|
28
|
+
hashdiff (1.0.1)
|
|
29
|
+
i18n (1.8.10)
|
|
30
|
+
concurrent-ruby (~> 1.0)
|
|
31
|
+
minitest (5.14.4)
|
|
32
|
+
multipart-post (2.1.1)
|
|
33
|
+
parallel (1.20.1)
|
|
34
|
+
parser (3.0.1.1)
|
|
35
|
+
ast (~> 2.4.1)
|
|
36
|
+
public_suffix (4.0.6)
|
|
37
|
+
rack (2.2.3)
|
|
38
|
+
rainbow (3.0.0)
|
|
39
|
+
rake (10.5.0)
|
|
40
|
+
recursive-open-struct (1.1.3)
|
|
41
|
+
regexp_parser (2.1.1)
|
|
42
|
+
rexml (3.2.5)
|
|
43
|
+
rspec (3.10.0)
|
|
44
|
+
rspec-core (~> 3.10.0)
|
|
45
|
+
rspec-expectations (~> 3.10.0)
|
|
46
|
+
rspec-mocks (~> 3.10.0)
|
|
47
|
+
rspec-collection_matchers (1.2.0)
|
|
48
|
+
rspec-expectations (>= 2.99.0.beta1)
|
|
49
|
+
rspec-core (3.10.1)
|
|
50
|
+
rspec-support (~> 3.10.0)
|
|
51
|
+
rspec-expectations (3.10.1)
|
|
52
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
53
|
+
rspec-support (~> 3.10.0)
|
|
54
|
+
rspec-its (1.3.0)
|
|
55
|
+
rspec-core (>= 3.0.0)
|
|
56
|
+
rspec-expectations (>= 3.0.0)
|
|
57
|
+
rspec-mocks (3.10.2)
|
|
58
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
59
|
+
rspec-support (~> 3.10.0)
|
|
60
|
+
rspec-support (3.10.2)
|
|
61
|
+
rspec_junit_formatter (0.4.1)
|
|
62
|
+
rspec-core (>= 2, < 4, != 2.12.0)
|
|
63
|
+
rubocop (1.13.0)
|
|
64
|
+
parallel (~> 1.10)
|
|
65
|
+
parser (>= 3.0.0.0)
|
|
66
|
+
rainbow (>= 2.2.2, < 4.0)
|
|
67
|
+
regexp_parser (>= 1.8, < 3.0)
|
|
68
|
+
rexml
|
|
69
|
+
rubocop-ast (>= 1.2.0, < 2.0)
|
|
70
|
+
ruby-progressbar (~> 1.7)
|
|
71
|
+
unicode-display_width (>= 1.4.0, < 3.0)
|
|
72
|
+
rubocop-ast (1.5.0)
|
|
73
|
+
parser (>= 3.0.1.1)
|
|
74
|
+
rubocop-performance (1.11.1)
|
|
75
|
+
rubocop (>= 1.7.0, < 2.0)
|
|
76
|
+
rubocop-ast (>= 0.4.0)
|
|
77
|
+
rubocop-rails (2.9.1)
|
|
78
|
+
activesupport (>= 4.2.0)
|
|
79
|
+
rack (>= 1.1)
|
|
80
|
+
rubocop (>= 0.90.0, < 2.0)
|
|
81
|
+
rubocop-rspec (2.3.0)
|
|
82
|
+
rubocop (~> 1.0)
|
|
83
|
+
rubocop-ast (>= 1.1.0)
|
|
84
|
+
rubocop-vendor (0.6.0)
|
|
85
|
+
rubocop (>= 0.53.0)
|
|
86
|
+
ruby-progressbar (1.11.0)
|
|
87
|
+
tzinfo (2.0.4)
|
|
88
|
+
concurrent-ruby (~> 1.0)
|
|
89
|
+
unicode-display_width (2.0.0)
|
|
90
|
+
webmock (3.12.2)
|
|
91
|
+
addressable (>= 2.3.6)
|
|
92
|
+
crack (>= 0.3.2)
|
|
93
|
+
hashdiff (>= 0.4.0, < 2.0.0)
|
|
94
|
+
ws-style (6.9.0)
|
|
95
|
+
rubocop (>= 1.12.1)
|
|
96
|
+
rubocop-performance (>= 1.10.2)
|
|
97
|
+
rubocop-rails (>= 2.9.1)
|
|
98
|
+
rubocop-rspec (>= 2.2.0)
|
|
99
|
+
rubocop-vendor (>= 0.6.0)
|
|
100
|
+
zeitwerk (2.4.2)
|
|
101
|
+
|
|
102
|
+
PLATFORMS
|
|
103
|
+
ruby
|
|
104
|
+
|
|
105
|
+
DEPENDENCIES
|
|
106
|
+
bundler
|
|
107
|
+
dotenv
|
|
108
|
+
rake (~> 10.0)
|
|
109
|
+
rollbar-api!
|
|
110
|
+
rspec (~> 3.0)
|
|
111
|
+
rspec-collection_matchers
|
|
112
|
+
rspec-its
|
|
113
|
+
rspec_junit_formatter (~> 0.2)
|
|
114
|
+
rubocop
|
|
115
|
+
webmock (~> 3.0)
|
|
116
|
+
ws-style
|
|
117
|
+
|
|
118
|
+
BUNDLED WITH
|
|
119
|
+
2.2.16
|
data/README.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
# rollbar-api
|
|
1
|
+
# rollbar-api
|
|
2
|
+
[](https://github.com/wealthsimple/rollbar-api/actions)
|
|
2
3
|
|
|
3
4
|
Rubygem for accessing Rollbar's full REST and RQL APIs.
|
|
4
5
|
|
|
@@ -22,7 +23,7 @@ Next, configure each project:
|
|
|
22
23
|
|
|
23
24
|
```ruby
|
|
24
25
|
# config/initializers/rollbar-api.rb in a Rails project
|
|
25
|
-
require '
|
|
26
|
+
require 'rollbar_api'
|
|
26
27
|
|
|
27
28
|
# Add as many projects as you need. Each should have a unique access token.
|
|
28
29
|
RollbarApi::Project.configure("my-project", ENV["MY_PROJECT_ACCESS_TOKEN"])
|
|
@@ -35,13 +36,11 @@ You can make HTTP `GET` calls to fetch items, deploys, occurrences, and so on by
|
|
|
35
36
|
|
|
36
37
|
```ruby
|
|
37
38
|
project = RollbarApi::Project.find("my-project")
|
|
38
|
-
items = project.get("/api/1/items/")
|
|
39
|
-
```
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
# List recent items:
|
|
41
|
+
items = project.get("/api/1/items/")
|
|
42
42
|
|
|
43
|
-
|
|
44
|
-
project = RollbarApi::Project.find("my-project")
|
|
43
|
+
# Specify query parameters by passing them in as a hash:
|
|
45
44
|
top_items = project.get("/api/1/reports/top_active_items", {
|
|
46
45
|
hours: "24",
|
|
47
46
|
environments: "production,staging",
|
|
@@ -55,16 +54,17 @@ If you need to make an HTTP `POST`, `DELETE`, and so on, just replace `.get` wit
|
|
|
55
54
|
You can also run RQL queries:
|
|
56
55
|
|
|
57
56
|
```ruby
|
|
58
|
-
# Create a job
|
|
59
57
|
project = RollbarApi::Project.find("my-project")
|
|
58
|
+
|
|
59
|
+
# Create a job
|
|
60
60
|
rql_job = project.post("/api/1/rql/jobs", {
|
|
61
61
|
query_string: "select * from item_occurrence where item.counter=1",
|
|
62
62
|
})
|
|
63
63
|
|
|
64
|
-
# Check
|
|
64
|
+
# Check job status
|
|
65
65
|
rql_job = project.get("/api/1/rql/job/#{rql_job.result.id}")
|
|
66
66
|
|
|
67
|
-
# If
|
|
67
|
+
# If job succeeded, get the RQL result
|
|
68
68
|
if rql_job.result.status == "success"
|
|
69
69
|
rql_result = project.get("/api/1/rql/job/#{rql_job.result.id}/result")
|
|
70
70
|
p rql_result
|
|
@@ -78,8 +78,8 @@ First, generate access tokens for each account you need access to by navigating
|
|
|
78
78
|
Next, configure each account:
|
|
79
79
|
|
|
80
80
|
```ruby
|
|
81
|
-
# config/initializers/
|
|
82
|
-
require '
|
|
81
|
+
# config/initializers/rollbar_api.rb in a Rails project
|
|
82
|
+
require 'rollbar_api'
|
|
83
83
|
|
|
84
84
|
# Add as many accounts as you need (normally just one). Each should have a unique access token.
|
|
85
85
|
RollbarApi::Account.configure("my-organization", ENV["ROLLBAR_ACCOUNT_ACCESS_TOKEN"])
|
|
@@ -94,6 +94,18 @@ account = RollbarApi::Account.find("my-organization")
|
|
|
94
94
|
users = account.get("/api/1/users")
|
|
95
95
|
```
|
|
96
96
|
|
|
97
|
+
## Logging
|
|
98
|
+
|
|
99
|
+
You can optionally override the logger with:
|
|
100
|
+
|
|
101
|
+
```ruby
|
|
102
|
+
# Set it to your own custom logger
|
|
103
|
+
RollbarApi.logger = Rails.logger
|
|
104
|
+
|
|
105
|
+
# Disable logging altogether
|
|
106
|
+
RollbarApi.logger = Logger.new(nil)
|
|
107
|
+
```
|
|
108
|
+
|
|
97
109
|
## Development
|
|
98
110
|
|
|
99
111
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
2
3
|
|
|
3
|
-
require
|
|
4
|
-
require
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
require 'rollbar_api'
|
|
5
6
|
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
|
@@ -10,5 +11,5 @@ require "rollbar-api"
|
|
|
10
11
|
# require "pry"
|
|
11
12
|
# Pry.start
|
|
12
13
|
|
|
13
|
-
require
|
|
14
|
+
require 'irb'
|
|
14
15
|
IRB.start(__FILE__)
|
data/catalog-info.yaml
ADDED
|
@@ -1,14 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
require "pp"
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "rollbar-api"
|
|
1
|
+
# frozen_string_literal: true
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
require 'dotenv/load'
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
require 'rollbar_api'
|
|
6
|
+
|
|
7
|
+
account_name = ENV['ROLLBAR_ACCOUNT_NAME']
|
|
8
|
+
raise 'must specify ROLLBAR_ACCOUNT_NAME in .env' if account_name.blank?
|
|
9
|
+
|
|
10
|
+
account_access_token = ENV['ROLLBAR_ACCOUNT_ACCESS_TOKEN']
|
|
11
|
+
raise 'Must specify ROLLBAR_ACCOUNT_ACCESS_TOKEN in .env' if account_access_token.blank?
|
|
12
|
+
|
|
13
|
+
RollbarApi.logger = Logger.new(nil)
|
|
8
14
|
|
|
9
15
|
account = RollbarApi::Account.configure(account_name, account_access_token)
|
|
10
16
|
|
|
11
|
-
users = account.get(
|
|
12
|
-
users.result.users.each do |user|
|
|
13
|
-
p
|
|
17
|
+
users = account.get('/api/1/users')
|
|
18
|
+
users.result.users.first(5).each do |user|
|
|
19
|
+
p user
|
|
14
20
|
end
|
data/examples/list_items.rb
CHANGED
|
@@ -1,18 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
require "pp"
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "rollbar-api"
|
|
1
|
+
# frozen_string_literal: true
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
require 'dotenv/load'
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
require 'rollbar_api'
|
|
6
|
+
|
|
7
|
+
project_name = ENV['ROLLBAR_PROJECT_NAME']
|
|
8
|
+
project_access_token = ENV['ROLLBAR_PROJECT_ACCESS_TOKEN']
|
|
9
|
+
|
|
10
|
+
raise 'Must specify ROLLBAR_PROJECT_NAME in .env' if project_name.blank?
|
|
11
|
+
raise 'Must specify ROLLBAR_ACCOUNT_ACCESS_TOKEN in .env' if project_access_token.blank?
|
|
8
12
|
|
|
9
13
|
project = RollbarApi::Project.configure(project_name, project_access_token)
|
|
10
14
|
|
|
11
15
|
# Fetch all items
|
|
12
|
-
items = project.get(
|
|
16
|
+
items = project.get('/api/1/items')
|
|
13
17
|
|
|
14
18
|
# Print out the first 5 items
|
|
15
19
|
items.result.items.first(5).each do |item|
|
|
16
|
-
|
|
17
|
-
puts
|
|
20
|
+
p item
|
|
21
|
+
puts '=' * 80
|
|
18
22
|
end
|
data/examples/rql_query.rb
CHANGED
|
@@ -1,23 +1,27 @@
|
|
|
1
|
-
|
|
2
|
-
require "pp"
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "rollbar-api"
|
|
1
|
+
# frozen_string_literal: true
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
require 'dotenv/load'
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
require 'rollbar_api'
|
|
6
|
+
|
|
7
|
+
project_name = ENV['ROLLBAR_PROJECT_NAME']
|
|
8
|
+
project_access_token = ENV['ROLLBAR_PROJECT_ACCESS_TOKEN']
|
|
9
|
+
|
|
10
|
+
raise 'Must specify ROLLBAR_PROJECT_NAME in .env' if project_name.blank?
|
|
11
|
+
raise 'Must specify ROLLBAR_ACCOUNT_ACCESS_TOKEN in .env' if project_access_token.blank?
|
|
8
12
|
|
|
9
13
|
project = RollbarApi::Project.configure(project_name, project_access_token)
|
|
10
14
|
|
|
11
15
|
# Create the job
|
|
12
|
-
rql_job = project.post(
|
|
13
|
-
query_string:
|
|
16
|
+
rql_job = project.post('/api/1/rql/jobs', {
|
|
17
|
+
query_string: 'select * from item_occurrence where item.counter=1',
|
|
14
18
|
})
|
|
15
19
|
|
|
16
20
|
# Fetch job status
|
|
17
21
|
rql_job = project.get("/api/1/rql/job/#{rql_job.result.id}")
|
|
18
|
-
|
|
22
|
+
p rql_job
|
|
19
23
|
|
|
20
|
-
if rql_job.result.status ==
|
|
24
|
+
if rql_job.result.status == 'success'
|
|
21
25
|
# Print out succeeded job result
|
|
22
|
-
|
|
26
|
+
p project.get("/api/1/rql/job/#{rql_job.result.id}/result")
|
|
23
27
|
end
|
|
@@ -1,19 +1,23 @@
|
|
|
1
|
-
|
|
2
|
-
require "pp"
|
|
3
|
-
require "bundler/setup"
|
|
4
|
-
require "rollbar-api"
|
|
1
|
+
# frozen_string_literal: true
|
|
5
2
|
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
require 'dotenv/load'
|
|
4
|
+
require 'bundler/setup'
|
|
5
|
+
require 'rollbar_api'
|
|
6
|
+
|
|
7
|
+
project_name = ENV['ROLLBAR_PROJECT_NAME']
|
|
8
|
+
project_access_token = ENV['ROLLBAR_PROJECT_ACCESS_TOKEN']
|
|
9
|
+
|
|
10
|
+
raise 'Must specify ROLLBAR_PROJECT_NAME in .env' if project_PROJECT_NAME.blank?
|
|
11
|
+
raise 'Must specify ROLLBAR_ACCOUNT_ACCESS_TOKEN in .env' if project_access_token.blank?
|
|
8
12
|
|
|
9
13
|
project = RollbarApi::Project.configure(project_name, project_access_token)
|
|
10
14
|
|
|
11
|
-
top_active_items = project.get(
|
|
12
|
-
hours:
|
|
13
|
-
environments:
|
|
15
|
+
top_active_items = project.get('/api/1/reports/top_active_items', {
|
|
16
|
+
hours: '24',
|
|
17
|
+
environments: 'production,staging',
|
|
14
18
|
})
|
|
15
19
|
|
|
16
|
-
top_active_items.result.each_with_index do |item, i|
|
|
17
|
-
|
|
18
|
-
puts
|
|
20
|
+
top_active_items.result.first(5).each_with_index do |item, i|
|
|
21
|
+
p i, item
|
|
22
|
+
puts '=' * 80
|
|
19
23
|
end
|
data/lib/rollbar-api.rb
CHANGED
|
@@ -1,14 +1,2 @@
|
|
|
1
|
-
require
|
|
2
|
-
require
|
|
3
|
-
require "faraday"
|
|
4
|
-
require "json"
|
|
5
|
-
require "recursive-open-struct"
|
|
6
|
-
|
|
7
|
-
require "rollbar-api/account"
|
|
8
|
-
require "rollbar-api/project"
|
|
9
|
-
require "rollbar-api/request"
|
|
10
|
-
require "rollbar-api/resource"
|
|
11
|
-
require "rollbar-api/version"
|
|
12
|
-
|
|
13
|
-
module RollbarApi
|
|
14
|
-
end
|
|
1
|
+
# backwards-compatble way to migrate from `require 'rollbar-api'`
|
|
2
|
+
require 'rollbar_api'
|
data/lib/rollbar_api.rb
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'active_support'
|
|
4
|
+
require 'active_support/core_ext'
|
|
5
|
+
require 'faraday'
|
|
6
|
+
require 'json'
|
|
7
|
+
require 'recursive-open-struct'
|
|
8
|
+
|
|
9
|
+
require 'rollbar_api/account'
|
|
10
|
+
require 'rollbar_api/logger'
|
|
11
|
+
require 'rollbar_api/project'
|
|
12
|
+
require 'rollbar_api/request'
|
|
13
|
+
require 'rollbar_api/resource'
|
|
14
|
+
require 'rollbar_api/version'
|
|
15
|
+
|
|
16
|
+
module RollbarApi
|
|
17
|
+
end
|
|
@@ -1,32 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module RollbarApi
|
|
2
4
|
class Account
|
|
3
|
-
|
|
5
|
+
@accounts = {}
|
|
4
6
|
|
|
5
7
|
def self.configure(account_name, account_access_token)
|
|
6
|
-
|
|
8
|
+
@accounts[account_name] = account_access_token
|
|
7
9
|
find(account_name)
|
|
8
10
|
end
|
|
9
11
|
|
|
10
12
|
def self.find(account_name)
|
|
11
|
-
account_access_token =
|
|
13
|
+
account_access_token = @accounts[account_name]
|
|
12
14
|
new(account_name, account_access_token) if account_access_token.present?
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
def self.all
|
|
16
|
-
|
|
18
|
+
@accounts.map { |account_name, _| find(account_name) }
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def self.delete_all
|
|
20
|
-
|
|
22
|
+
@accounts = {}
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
attr_reader :name, :access_token
|
|
26
|
+
|
|
24
27
|
def initialize(name, access_token)
|
|
25
28
|
@name = name
|
|
26
29
|
@access_token = access_token
|
|
27
30
|
end
|
|
28
31
|
|
|
29
|
-
%i
|
|
32
|
+
%i[get post put delete head patch].each do |http_method|
|
|
30
33
|
define_method(http_method) do |path, params = {}|
|
|
31
34
|
params[:access_token] = access_token
|
|
32
35
|
response = Request.new(method: http_method, path: path, params: params).execute
|
|
@@ -1,32 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module RollbarApi
|
|
2
4
|
class Project
|
|
3
|
-
|
|
5
|
+
@projects = {}
|
|
4
6
|
|
|
5
7
|
def self.configure(project_name, project_access_token)
|
|
6
|
-
|
|
8
|
+
@projects[project_name] = project_access_token
|
|
7
9
|
find(project_name)
|
|
8
10
|
end
|
|
9
11
|
|
|
10
12
|
def self.find(project_name)
|
|
11
|
-
project_access_token =
|
|
13
|
+
project_access_token = @projects[project_name]
|
|
12
14
|
new(project_name, project_access_token) if project_access_token.present?
|
|
13
15
|
end
|
|
14
16
|
|
|
15
17
|
def self.all
|
|
16
|
-
|
|
18
|
+
@projects.map { |project_name, _| find(project_name) }
|
|
17
19
|
end
|
|
18
20
|
|
|
19
21
|
def self.delete_all
|
|
20
|
-
|
|
22
|
+
@projects = {}
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
attr_reader :name, :access_token
|
|
26
|
+
|
|
24
27
|
def initialize(name, access_token)
|
|
25
28
|
@name = name
|
|
26
29
|
@access_token = access_token
|
|
27
30
|
end
|
|
28
31
|
|
|
29
|
-
%i
|
|
32
|
+
%i[get post put delete head patch].each do |http_method|
|
|
30
33
|
define_method(http_method) do |path, params = {}|
|
|
31
34
|
params[:access_token] = access_token
|
|
32
35
|
response = Request.new(method: http_method, path: path, params: params).execute
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module RollbarApi
|
|
2
4
|
class Request
|
|
3
5
|
attr_reader :method, :path, :params
|
|
6
|
+
|
|
4
7
|
def initialize(method:, path:, params:)
|
|
5
8
|
@method = method
|
|
6
|
-
path = "/#{path}" unless path.start_with?(
|
|
9
|
+
path = "/#{path}" unless path.start_with?('/')
|
|
7
10
|
@path = path
|
|
8
11
|
@params = params
|
|
9
12
|
end
|
|
@@ -16,31 +19,29 @@ module RollbarApi
|
|
|
16
19
|
request.url(path)
|
|
17
20
|
request.body = body_to_json(params) if params.present?
|
|
18
21
|
end
|
|
19
|
-
|
|
22
|
+
|
|
20
23
|
request.headers.merge!({
|
|
21
|
-
|
|
22
|
-
|
|
24
|
+
'Accept' => 'application/json',
|
|
25
|
+
'Content-Type' => 'application/json',
|
|
23
26
|
})
|
|
24
27
|
request
|
|
25
28
|
end
|
|
26
29
|
end
|
|
27
30
|
|
|
28
|
-
|
|
31
|
+
private
|
|
29
32
|
|
|
30
33
|
def connection
|
|
31
|
-
Faraday.new(url:
|
|
32
|
-
faraday.response :logger, ::Logger.new(STDOUT), bodies: false
|
|
33
|
-
faraday.adapter Faraday.default_adapter
|
|
34
|
+
Faraday.new(url: 'https://api.rollbar.com') do |faraday|
|
|
34
35
|
faraday.use Faraday::Response::RaiseError
|
|
36
|
+
faraday.response :logger, RollbarApi.logger, bodies: false
|
|
37
|
+
faraday.adapter Faraday.default_adapter
|
|
35
38
|
end
|
|
36
39
|
end
|
|
37
40
|
|
|
38
41
|
def body_to_json(body)
|
|
39
|
-
if body
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
nil
|
|
43
|
-
end
|
|
42
|
+
return if body.blank?
|
|
43
|
+
|
|
44
|
+
body.is_a?(Array) || body.is_a?(Hash) ? body.to_json : body
|
|
44
45
|
end
|
|
45
46
|
end
|
|
46
47
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module RollbarApi
|
|
4
|
+
class Resource
|
|
5
|
+
attr_reader :response_json
|
|
6
|
+
|
|
7
|
+
def initialize(response)
|
|
8
|
+
response = response.body if response.is_a?(Faraday::Response)
|
|
9
|
+
@response_json = if response.is_a?(String)
|
|
10
|
+
JSON.parse(response)
|
|
11
|
+
else
|
|
12
|
+
response
|
|
13
|
+
end
|
|
14
|
+
@struct = ResourceStruct.new(@response_json, { recurse_over_arrays: true })
|
|
15
|
+
end
|
|
16
|
+
delegate :inspect, to: :@struct
|
|
17
|
+
|
|
18
|
+
def as_json(_options = {})
|
|
19
|
+
@response_json
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def method_missing(name, *args)
|
|
23
|
+
@struct.send(name, *args)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def respond_to_missing?(method_name, _include_private = false)
|
|
27
|
+
@struct.respond_to?(method_name)
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
class ResourceStruct < RecursiveOpenStruct
|
|
32
|
+
def inspect
|
|
33
|
+
%(#<RollbarApi::Resource: #{JSON.pretty_generate(@table)}>)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
data/rollbar-api.gemspec
CHANGED
|
@@ -1,36 +1,41 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
-
require
|
|
5
|
+
require 'rollbar_api/version'
|
|
5
6
|
|
|
6
7
|
Gem::Specification.new do |spec|
|
|
7
|
-
spec.name =
|
|
8
|
+
spec.name = 'rollbar-api'
|
|
8
9
|
spec.version = RollbarApi::VERSION
|
|
9
|
-
spec.authors = [
|
|
10
|
-
spec.email = [
|
|
10
|
+
spec.authors = ['Peter Graham']
|
|
11
|
+
spec.email = ['peter@wealthsimple.com']
|
|
11
12
|
|
|
12
|
-
spec.summary =
|
|
13
|
-
spec.description =
|
|
14
|
-
spec.homepage =
|
|
13
|
+
spec.summary = 'Rubygem for Rollbar REST and RQL APIs'
|
|
14
|
+
spec.description = "Rubygem for accessing Rollbar's full REST and RQL APIs."
|
|
15
|
+
spec.homepage = 'https://github.com/wealthsimple/rollbar-api'
|
|
15
16
|
|
|
16
17
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
|
17
18
|
f.match(%r{^(test|spec|features)/})
|
|
18
19
|
end
|
|
19
|
-
spec.bindir =
|
|
20
|
+
spec.bindir = 'exe'
|
|
20
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
|
-
spec.require_paths = [
|
|
22
|
-
spec.license =
|
|
22
|
+
spec.require_paths = ['lib']
|
|
23
|
+
spec.license = 'MIT'
|
|
24
|
+
|
|
25
|
+
spec.required_ruby_version = '>= 2.7.3'
|
|
23
26
|
|
|
24
|
-
spec.add_dependency
|
|
25
|
-
spec.add_dependency
|
|
26
|
-
spec.add_dependency
|
|
27
|
+
spec.add_dependency 'activesupport', '>= 4'
|
|
28
|
+
spec.add_dependency 'faraday', '< 1.0'
|
|
29
|
+
spec.add_dependency 'recursive-open-struct'
|
|
27
30
|
|
|
28
|
-
spec.add_development_dependency
|
|
29
|
-
spec.add_development_dependency
|
|
30
|
-
spec.add_development_dependency
|
|
31
|
-
spec.add_development_dependency
|
|
32
|
-
spec.add_development_dependency
|
|
33
|
-
spec.add_development_dependency
|
|
34
|
-
spec.add_development_dependency
|
|
35
|
-
spec.add_development_dependency
|
|
31
|
+
spec.add_development_dependency 'bundler'
|
|
32
|
+
spec.add_development_dependency 'dotenv'
|
|
33
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
|
34
|
+
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
35
|
+
spec.add_development_dependency 'rspec-collection_matchers'
|
|
36
|
+
spec.add_development_dependency 'rspec-its'
|
|
37
|
+
spec.add_development_dependency 'rspec_junit_formatter', '~> 0.2'
|
|
38
|
+
spec.add_development_dependency 'rubocop'
|
|
39
|
+
spec.add_development_dependency 'webmock', '~> 3.0'
|
|
40
|
+
spec.add_development_dependency 'ws-style'
|
|
36
41
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rollbar-api
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Peter Graham
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-05-05 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -28,16 +28,16 @@ dependencies:
|
|
|
28
28
|
name: faraday
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - "<"
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
|
-
version: 0
|
|
33
|
+
version: '1.0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - "<"
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
|
-
version: 0
|
|
40
|
+
version: '1.0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: recursive-open-struct
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -56,16 +56,30 @@ dependencies:
|
|
|
56
56
|
name: bundler
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- - "
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: '
|
|
61
|
+
version: '0'
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- - "
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: dotenv
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: '
|
|
82
|
+
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: rake
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -95,7 +109,7 @@ dependencies:
|
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
110
|
version: '3.0'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: rspec-
|
|
112
|
+
name: rspec-collection_matchers
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
115
|
- - ">="
|
|
@@ -109,7 +123,7 @@ dependencies:
|
|
|
109
123
|
- !ruby/object:Gem::Version
|
|
110
124
|
version: '0'
|
|
111
125
|
- !ruby/object:Gem::Dependency
|
|
112
|
-
name: rspec-
|
|
126
|
+
name: rspec-its
|
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
|
114
128
|
requirements:
|
|
115
129
|
- - ">="
|
|
@@ -136,6 +150,20 @@ dependencies:
|
|
|
136
150
|
- - "~>"
|
|
137
151
|
- !ruby/object:Gem::Version
|
|
138
152
|
version: '0.2'
|
|
153
|
+
- !ruby/object:Gem::Dependency
|
|
154
|
+
name: rubocop
|
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
|
156
|
+
requirements:
|
|
157
|
+
- - ">="
|
|
158
|
+
- !ruby/object:Gem::Version
|
|
159
|
+
version: '0'
|
|
160
|
+
type: :development
|
|
161
|
+
prerelease: false
|
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
+
requirements:
|
|
164
|
+
- - ">="
|
|
165
|
+
- !ruby/object:Gem::Version
|
|
166
|
+
version: '0'
|
|
139
167
|
- !ruby/object:Gem::Dependency
|
|
140
168
|
name: webmock
|
|
141
169
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -151,7 +179,7 @@ dependencies:
|
|
|
151
179
|
- !ruby/object:Gem::Version
|
|
152
180
|
version: '3.0'
|
|
153
181
|
- !ruby/object:Gem::Dependency
|
|
154
|
-
name:
|
|
182
|
+
name: ws-style
|
|
155
183
|
requirement: !ruby/object:Gem::Requirement
|
|
156
184
|
requirements:
|
|
157
185
|
- - ">="
|
|
@@ -171,23 +199,31 @@ executables: []
|
|
|
171
199
|
extensions: []
|
|
172
200
|
extra_rdoc_files: []
|
|
173
201
|
files:
|
|
202
|
+
- ".github/CODEOWNERS"
|
|
203
|
+
- ".github/workflows/main.yml"
|
|
174
204
|
- ".gitignore"
|
|
175
205
|
- ".rspec"
|
|
206
|
+
- ".rubocop.yml"
|
|
207
|
+
- ".ruby-version"
|
|
176
208
|
- Gemfile
|
|
209
|
+
- Gemfile.lock
|
|
177
210
|
- README.md
|
|
178
211
|
- Rakefile
|
|
179
212
|
- bin/console
|
|
180
213
|
- bin/setup
|
|
214
|
+
- catalog-info.yaml
|
|
181
215
|
- examples/list_account_users.rb
|
|
182
216
|
- examples/list_items.rb
|
|
183
217
|
- examples/rql_query.rb
|
|
184
218
|
- examples/top_active_items.rb
|
|
185
219
|
- lib/rollbar-api.rb
|
|
186
|
-
- lib/
|
|
187
|
-
- lib/
|
|
188
|
-
- lib/
|
|
189
|
-
- lib/
|
|
190
|
-
- lib/
|
|
220
|
+
- lib/rollbar_api.rb
|
|
221
|
+
- lib/rollbar_api/account.rb
|
|
222
|
+
- lib/rollbar_api/logger.rb
|
|
223
|
+
- lib/rollbar_api/project.rb
|
|
224
|
+
- lib/rollbar_api/request.rb
|
|
225
|
+
- lib/rollbar_api/resource.rb
|
|
226
|
+
- lib/rollbar_api/version.rb
|
|
191
227
|
- rollbar-api.gemspec
|
|
192
228
|
homepage: https://github.com/wealthsimple/rollbar-api
|
|
193
229
|
licenses:
|
|
@@ -201,15 +237,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
201
237
|
requirements:
|
|
202
238
|
- - ">="
|
|
203
239
|
- !ruby/object:Gem::Version
|
|
204
|
-
version:
|
|
240
|
+
version: 2.7.3
|
|
205
241
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
206
242
|
requirements:
|
|
207
243
|
- - ">="
|
|
208
244
|
- !ruby/object:Gem::Version
|
|
209
245
|
version: '0'
|
|
210
246
|
requirements: []
|
|
211
|
-
|
|
212
|
-
rubygems_version: 2.5.1
|
|
247
|
+
rubygems_version: 3.1.6
|
|
213
248
|
signing_key:
|
|
214
249
|
specification_version: 4
|
|
215
250
|
summary: Rubygem for Rollbar REST and RQL APIs
|
data/lib/rollbar-api/resource.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
module RollbarApi
|
|
2
|
-
class Resource
|
|
3
|
-
attr_reader :response_json
|
|
4
|
-
|
|
5
|
-
def initialize(response)
|
|
6
|
-
response = response.body if response.is_a?(Faraday::Response)
|
|
7
|
-
@response_json = if response.is_a?(String)
|
|
8
|
-
JSON.parse(response)
|
|
9
|
-
else
|
|
10
|
-
response
|
|
11
|
-
end
|
|
12
|
-
@struct = RecursiveOpenStruct.new(@response_json, {recurse_over_arrays: true})
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def as_json(options = {})
|
|
16
|
-
@response_json
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def method_missing(name, *args)
|
|
20
|
-
@struct.send(name, *args)
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
end
|
data/lib/rollbar-api/version.rb
DELETED