cased-ruby 0.4.4 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +0 -16
- data/Gemfile.lock +24 -6
- data/README.md +33 -0
- data/cased-ruby.gemspec +1 -0
- data/lib/cased/cli/asciinema/file.rb +5 -0
- data/lib/cased/cli/config.rb +21 -0
- data/lib/cased/cli/interactive_session.rb +10 -2
- data/lib/cased/cli/session.rb +10 -3
- data/lib/cased/config.rb +14 -1
- data/lib/cased/version.rb +1 -1
- data/vendor/cache/activesupport-6.1.3.2.gem +0 -0
- data/vendor/cache/faraday-1.4.1.gem +0 -0
- data/vendor/cache/faraday-excon-1.1.0.gem +0 -0
- data/vendor/cache/faraday-net_http_persistent-1.1.0.gem +0 -0
- data/vendor/cache/i18n-1.8.10.gem +0 -0
- data/vendor/cache/jwt-2.2.3.gem +0 -0
- data/vendor/cache/pastel-0.8.0.gem +0 -0
- data/vendor/cache/tty-color-0.6.0.gem +0 -0
- data/vendor/cache/tty-cursor-0.7.1.gem +0 -0
- data/vendor/cache/tty-prompt-0.23.1.gem +0 -0
- data/vendor/cache/tty-reader-0.9.0.gem +0 -0
- data/vendor/cache/tty-screen-0.8.1.gem +0 -0
- data/vendor/cache/wisper-2.0.1.gem +0 -0
- metadata +30 -6
- data/vendor/cache/activesupport-6.1.3.gem +0 -0
- data/vendor/cache/faraday-1.3.0.gem +0 -0
- data/vendor/cache/i18n-1.8.9.gem +0 -0
- data/vendor/cache/jwt-2.2.2.gem +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dc3d9c43168af4bfb222f063557726b6579ee497059ee14343e422b49f16c879
|
4
|
+
data.tar.gz: bfdb95c9831fd38d4ad86a25772aac3a1740c5de33ad3441c4b7edb0a6f173e9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1849cbc38766aa621046ba7db1d66e841714a3c8b6005cfc9beda6e606270f83c8429627f3797ce327415f67c55a3db8b3d799c738d446342a283cdb07d3098c
|
7
|
+
data.tar.gz: 3bccd4a530a8f5f4384c793570d7cd245fb6a339b5fa5c1df7874bdfcec28f63c21ad90dc3f109a2c9739968c02b69e899ab1f14bfcbf5624b2b6a7620aa2fac
|
data/.github/workflows/ruby.yml
CHANGED
@@ -28,19 +28,3 @@ jobs:
|
|
28
28
|
- name: Run Tests
|
29
29
|
run: |
|
30
30
|
bundle exec rake test
|
31
|
-
|
32
|
-
- name: Generate yard documentation
|
33
|
-
run: |
|
34
|
-
bundle exec yard
|
35
|
-
|
36
|
-
- name: Upload test coverage report
|
37
|
-
uses: actions/upload-artifact@v2
|
38
|
-
with:
|
39
|
-
name: coverage
|
40
|
-
path: coverage/**/*
|
41
|
-
|
42
|
-
- name: Upload generated yard documentation
|
43
|
-
uses: actions/upload-artifact@v2
|
44
|
-
with:
|
45
|
-
name: yard
|
46
|
-
path: doc/**/*
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cased-ruby (0.
|
4
|
+
cased-ruby (0.5.0)
|
5
5
|
activesupport (~> 6)
|
6
6
|
dotpath (= 0.1.0)
|
7
7
|
faraday (~> 1.0)
|
@@ -10,11 +10,12 @@ PATH
|
|
10
10
|
jwt (~> 2)
|
11
11
|
net-http-persistent (~> 3.0)
|
12
12
|
subprocess (~> 1.5.0)
|
13
|
+
tty-prompt (~> 0.23.0)
|
13
14
|
|
14
15
|
GEM
|
15
16
|
remote: https://rubygems.org/
|
16
17
|
specs:
|
17
|
-
activesupport (6.1.3)
|
18
|
+
activesupport (6.1.3.2)
|
18
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
19
20
|
i18n (>= 1.6, < 2)
|
20
21
|
minitest (>= 5.1)
|
@@ -30,19 +31,23 @@ GEM
|
|
30
31
|
safe_yaml (~> 1.0.0)
|
31
32
|
docile (1.3.2)
|
32
33
|
dotpath (0.1.0)
|
33
|
-
faraday (1.
|
34
|
+
faraday (1.4.1)
|
35
|
+
faraday-excon (~> 1.1)
|
34
36
|
faraday-net_http (~> 1.0)
|
37
|
+
faraday-net_http_persistent (~> 1.1)
|
35
38
|
multipart-post (>= 1.2, < 3)
|
36
|
-
ruby2_keywords
|
39
|
+
ruby2_keywords (>= 0.0.4)
|
40
|
+
faraday-excon (1.1.0)
|
37
41
|
faraday-net_http (1.0.1)
|
42
|
+
faraday-net_http_persistent (1.1.0)
|
38
43
|
faraday_middleware (1.0.0)
|
39
44
|
faraday (~> 1.0)
|
40
45
|
hashdiff (1.0.1)
|
41
|
-
i18n (1.8.
|
46
|
+
i18n (1.8.10)
|
42
47
|
concurrent-ruby (~> 1.0)
|
43
48
|
jaro_winkler (1.5.4)
|
44
49
|
json (2.5.1)
|
45
|
-
jwt (2.2.
|
50
|
+
jwt (2.2.3)
|
46
51
|
minitest (5.13.0)
|
47
52
|
mocha (1.11.2)
|
48
53
|
multipart-post (2.1.1)
|
@@ -51,6 +56,8 @@ GEM
|
|
51
56
|
parallel (1.19.1)
|
52
57
|
parser (2.7.1.3)
|
53
58
|
ast (~> 2.4.0)
|
59
|
+
pastel (0.8.0)
|
60
|
+
tty-color (~> 0.5)
|
54
61
|
public_suffix (4.0.5)
|
55
62
|
rack (2.2.2)
|
56
63
|
rack-protection (2.0.8.1)
|
@@ -80,6 +87,16 @@ GEM
|
|
80
87
|
simplecov-html (~> 0.11)
|
81
88
|
simplecov-html (0.12.2)
|
82
89
|
subprocess (1.5.4)
|
90
|
+
tty-color (0.6.0)
|
91
|
+
tty-cursor (0.7.1)
|
92
|
+
tty-prompt (0.23.1)
|
93
|
+
pastel (~> 0.8)
|
94
|
+
tty-reader (~> 0.8)
|
95
|
+
tty-reader (0.9.0)
|
96
|
+
tty-cursor (~> 0.7)
|
97
|
+
tty-screen (~> 0.8)
|
98
|
+
wisper (~> 2.0)
|
99
|
+
tty-screen (0.8.1)
|
83
100
|
tzinfo (2.0.4)
|
84
101
|
concurrent-ruby (~> 1.0)
|
85
102
|
unicode-display_width (1.6.1)
|
@@ -87,6 +104,7 @@ GEM
|
|
87
104
|
addressable (>= 2.3.6)
|
88
105
|
crack (>= 0.3.2)
|
89
106
|
hashdiff (>= 0.4.0, < 2.0.0)
|
107
|
+
wisper (2.0.1)
|
90
108
|
yard (0.9.24)
|
91
109
|
zeitwerk (2.4.2)
|
92
110
|
|
data/README.md
CHANGED
@@ -9,6 +9,7 @@ A Cased client for Ruby applications in your organization to control and monitor
|
|
9
9
|
- [Usage](#usage)
|
10
10
|
- [Cased CLI](#cased-cli)
|
11
11
|
- [Starting an approval workflow](#starting-an-approval-workflow)
|
12
|
+
- [Attaching metadata to all CLI requests](#attaching-metadata-to-all-cli-requests)
|
12
13
|
- [Audit trails](#audit-trails)
|
13
14
|
- [Publishing events to Cased](#publishing-events-to-cased)
|
14
15
|
- [Retrieving events from a Cased audit trail](#retrieving-events-from-a-cased-audit-trail)
|
@@ -85,6 +86,17 @@ Cased.configure do |config|
|
|
85
86
|
|
86
87
|
# CASED_HTTP_READ_TIMEOUT=10
|
87
88
|
config.http_read_timeout = 10
|
89
|
+
|
90
|
+
# Attach metadata to all CLI requests. This metadata will appear in Cased and
|
91
|
+
# any notification source such as email or Slack.
|
92
|
+
#
|
93
|
+
# You are limited to 20 properties and cannot be a nested dictionary. Metadata
|
94
|
+
# specified in the CLI request overrides any configured globally.
|
95
|
+
config.cli.metadata = {
|
96
|
+
rails_env: ENV['RAILS_ENV'],
|
97
|
+
heroku_application: ENV['HEROKU_APP_NAME'],
|
98
|
+
git_commit: ENV['GIT_COMMIT'],
|
99
|
+
}
|
88
100
|
end
|
89
101
|
```
|
90
102
|
|
@@ -181,6 +193,27 @@ You no longer need to handle obtaining the user token or asking for a reason up
|
|
181
193
|
front, `Cased::CLI::InteractiveSession` will prompt the user for any reason
|
182
194
|
being required as necessary.
|
183
195
|
|
196
|
+
#### Attaching metadata to all CLI requests
|
197
|
+
|
198
|
+
While you can customize the metadata included for each CLI request, it may prove
|
199
|
+
useful to specify metadata globally that will be included with each CLI request.
|
200
|
+
Some useful information to include may be the current Rails environment, Heroku
|
201
|
+
application, Git commit deployed, and more.
|
202
|
+
|
203
|
+
Metadata is limited to 20 properties and cannot be a nested dictionary.
|
204
|
+
|
205
|
+
```ruby
|
206
|
+
Cased.configure do |config|
|
207
|
+
config.cli.metadata = {
|
208
|
+
rails_env: ENV['RAILS_ENV'],
|
209
|
+
heroku_application: ENV['HEROKU_APP_NAME'],
|
210
|
+
git_commit: ENV['GIT_COMMIT'],
|
211
|
+
}
|
212
|
+
end
|
213
|
+
```
|
214
|
+
|
215
|
+
Note: Metadata specified in the CLI request overrides any configured globally.
|
216
|
+
|
184
217
|
### Audit trails
|
185
218
|
|
186
219
|
#### Publishing events to Cased
|
data/cased-ruby.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency 'jwt', '~> 2'
|
37
37
|
spec.add_dependency 'net-http-persistent', '~> 3.0'
|
38
38
|
spec.add_dependency 'subprocess', '~> 1.5.0'
|
39
|
+
spec.add_dependency 'tty-prompt', '~> 0.23.0'
|
39
40
|
spec.add_development_dependency 'bundler', '2.1.4'
|
40
41
|
spec.add_development_dependency 'byebug', '11.0.1'
|
41
42
|
spec.add_development_dependency 'minitest', '5.13.0'
|
@@ -15,12 +15,17 @@ module Cased
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def self.from_cast(cast)
|
18
|
+
return if cast.blank?
|
19
|
+
|
18
20
|
stream = cast.split("\n").collect do |data|
|
19
21
|
JSON.parse(data)
|
20
22
|
end
|
21
23
|
header = stream.shift
|
24
|
+
return unless header.is_a?(Hash)
|
22
25
|
|
23
26
|
new(header, stream)
|
27
|
+
rescue JSON::ParserError
|
28
|
+
nil
|
24
29
|
end
|
25
30
|
|
26
31
|
# Required
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Cased
|
4
|
+
module CLI
|
5
|
+
class Config
|
6
|
+
# @example
|
7
|
+
# Cased.configure do |config|
|
8
|
+
# config.cli.metadata = {
|
9
|
+
# rails_env: ENV['RAILS_ENV'],
|
10
|
+
# heroku_application: ENV['HEROKU_APP_NAME'],
|
11
|
+
# git_commit: ENV['GIT_COMMIT'],
|
12
|
+
# }
|
13
|
+
# end
|
14
|
+
attr_accessor :metadata
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
@metadata = {}
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'cased/cli/session'
|
4
|
+
require 'tty/prompt'
|
4
5
|
|
5
6
|
module Cased
|
6
7
|
module CLI
|
@@ -27,6 +28,8 @@ module Cased
|
|
27
28
|
command: command,
|
28
29
|
metadata: metadata,
|
29
30
|
)
|
31
|
+
|
32
|
+
@prompt = TTY::Prompt.new
|
30
33
|
end
|
31
34
|
|
32
35
|
def create
|
@@ -81,8 +84,11 @@ module Cased
|
|
81
84
|
private
|
82
85
|
|
83
86
|
def reason_prompt
|
84
|
-
|
85
|
-
session.reason =
|
87
|
+
reason = @prompt.multiline(Cased::CLI::Log.string('Please enter a reason for access:'), help: '(Press Ctrl+D or Ctrl+Z to submit)')
|
88
|
+
session.reason = reason.join("\n")
|
89
|
+
rescue TTY::Reader::InputInterrupt
|
90
|
+
Cased::CLI::Log.log 'Exiting and canceling request…'
|
91
|
+
exit 0
|
86
92
|
end
|
87
93
|
|
88
94
|
def wait_for_approval
|
@@ -112,8 +118,10 @@ module Cased
|
|
112
118
|
exit 1
|
113
119
|
when 'timed_out'
|
114
120
|
Cased::CLI::Log.log 'CLI session has timed out'
|
121
|
+
exit 1
|
115
122
|
when 'canceled'
|
116
123
|
Cased::CLI::Log.log 'CLI session has been canceled'
|
124
|
+
exit 0
|
117
125
|
end
|
118
126
|
end
|
119
127
|
end
|
data/lib/cased/cli/session.rb
CHANGED
@@ -124,11 +124,18 @@ module Cased
|
|
124
124
|
# @return [Hash, nil]
|
125
125
|
attr_reader :guard_application
|
126
126
|
|
127
|
+
# Public: Cased may filter out sensitive data in the command, we shouldn't
|
128
|
+
# execute what is returned from the server.
|
129
|
+
#
|
130
|
+
# @return [String, nil]
|
131
|
+
attr_reader :original_command
|
132
|
+
|
127
133
|
def initialize(reason: nil, command: nil, metadata: {}, authentication: nil)
|
128
134
|
@authentication = authentication || Cased::CLI::Authentication.new
|
129
135
|
@reason = reason
|
130
|
-
@
|
131
|
-
@
|
136
|
+
@original_command = command || [$PROGRAM_NAME, *ARGV].join(' ')
|
137
|
+
@command = @original_command
|
138
|
+
@metadata = Cased.config.cli.metadata.merge(metadata)
|
132
139
|
@requester = {}
|
133
140
|
@responder = {}
|
134
141
|
@guard_application = {}
|
@@ -216,7 +223,7 @@ module Cased
|
|
216
223
|
|
217
224
|
Cased::CLI::Log.log 'CLI session is now recording'
|
218
225
|
|
219
|
-
recorder = Cased::CLI::Recorder.new(
|
226
|
+
recorder = Cased::CLI::Recorder.new(original_command.split(' '), env: {
|
220
227
|
'GUARD_SESSION_ID' => id,
|
221
228
|
'GUARD_APPLICATION_ID' => guard_application.fetch('id'),
|
222
229
|
'GUARD_USER_TOKEN' => requester.fetch('id'),
|
data/lib/cased/config.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'cased/cli/config'
|
4
|
+
|
3
5
|
module Cased
|
4
6
|
class Config
|
5
7
|
# The amount of time in seconds to allow the HTTP client to open a
|
@@ -149,6 +151,16 @@ module Cased
|
|
149
151
|
# end
|
150
152
|
attr_writer :silence
|
151
153
|
|
154
|
+
# @example
|
155
|
+
# Cased.configure do |config|
|
156
|
+
# config.cli.metadata = {
|
157
|
+
# rails_env: ENV['RAILS_ENV'],
|
158
|
+
# heroku_application: ENV['HEROKU_APP_NAME'],
|
159
|
+
# git_commit: ENV['GIT_COMMIT'],
|
160
|
+
# }
|
161
|
+
# end
|
162
|
+
attr_reader :cli
|
163
|
+
|
152
164
|
def initialize
|
153
165
|
@http_read_timeout = ENV.fetch('CASED_HTTP_READ_TIMEOUT', 10).to_i
|
154
166
|
@http_open_timeout = ENV.fetch('CASED_HTTP_OPEN_TIMEOUT', 5).to_i
|
@@ -172,6 +184,7 @@ module Cased
|
|
172
184
|
hash[normalized_key] = api_key if api_key
|
173
185
|
end
|
174
186
|
end
|
187
|
+
@cli = Cased::CLI::Config.new
|
175
188
|
end
|
176
189
|
|
177
190
|
# Policy keys are used to query for events from audit trails.
|
@@ -224,7 +237,7 @@ module Cased
|
|
224
237
|
private
|
225
238
|
|
226
239
|
def parse_bool(val)
|
227
|
-
%w[1 true t].include?(val&.downcase)
|
240
|
+
%w[1 true t].include?(val.to_s&.downcase)
|
228
241
|
end
|
229
242
|
end
|
230
243
|
end
|
data/lib/cased/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cased-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Garrett Bjerkhoel
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-05-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 1.5.0
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: tty-prompt
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: 0.23.0
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: 0.23.0
|
125
139
|
- !ruby/object:Gem::Dependency
|
126
140
|
name: bundler
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
@@ -305,6 +319,7 @@ files:
|
|
305
319
|
- lib/cased/cli/asciinema/file.rb
|
306
320
|
- lib/cased/cli/asciinema/writer.rb
|
307
321
|
- lib/cased/cli/authentication.rb
|
322
|
+
- lib/cased/cli/config.rb
|
308
323
|
- lib/cased/cli/identity.rb
|
309
324
|
- lib/cased/cli/interactive_session.rb
|
310
325
|
- lib/cased/cli/log.rb
|
@@ -343,7 +358,7 @@ files:
|
|
343
358
|
- lib/cased/sensitive/string.rb
|
344
359
|
- lib/cased/test_helper.rb
|
345
360
|
- lib/cased/version.rb
|
346
|
-
- vendor/cache/activesupport-6.1.3.gem
|
361
|
+
- vendor/cache/activesupport-6.1.3.2.gem
|
347
362
|
- vendor/cache/addressable-2.7.0.gem
|
348
363
|
- vendor/cache/ast-2.4.0.gem
|
349
364
|
- vendor/cache/byebug-11.0.1.gem
|
@@ -352,20 +367,23 @@ files:
|
|
352
367
|
- vendor/cache/crack-0.4.3.gem
|
353
368
|
- vendor/cache/docile-1.3.2.gem
|
354
369
|
- vendor/cache/dotpath-0.1.0.gem
|
355
|
-
- vendor/cache/faraday-1.
|
370
|
+
- vendor/cache/faraday-1.4.1.gem
|
371
|
+
- vendor/cache/faraday-excon-1.1.0.gem
|
356
372
|
- vendor/cache/faraday-net_http-1.0.1.gem
|
373
|
+
- vendor/cache/faraday-net_http_persistent-1.1.0.gem
|
357
374
|
- vendor/cache/faraday_middleware-1.0.0.gem
|
358
375
|
- vendor/cache/hashdiff-1.0.1.gem
|
359
|
-
- vendor/cache/i18n-1.8.
|
376
|
+
- vendor/cache/i18n-1.8.10.gem
|
360
377
|
- vendor/cache/jaro_winkler-1.5.4.gem
|
361
378
|
- vendor/cache/json-2.5.1.gem
|
362
|
-
- vendor/cache/jwt-2.2.
|
379
|
+
- vendor/cache/jwt-2.2.3.gem
|
363
380
|
- vendor/cache/minitest-5.13.0.gem
|
364
381
|
- vendor/cache/mocha-1.11.2.gem
|
365
382
|
- vendor/cache/multipart-post-2.1.1.gem
|
366
383
|
- vendor/cache/net-http-persistent-3.1.0.gem
|
367
384
|
- vendor/cache/parallel-1.19.1.gem
|
368
385
|
- vendor/cache/parser-2.7.1.3.gem
|
386
|
+
- vendor/cache/pastel-0.8.0.gem
|
369
387
|
- vendor/cache/public_suffix-4.0.5.gem
|
370
388
|
- vendor/cache/rack-2.2.2.gem
|
371
389
|
- vendor/cache/rack-protection-2.0.8.1.gem
|
@@ -381,9 +399,15 @@ files:
|
|
381
399
|
- vendor/cache/simplecov-0.18.5.gem
|
382
400
|
- vendor/cache/simplecov-html-0.12.2.gem
|
383
401
|
- vendor/cache/subprocess-1.5.4.gem
|
402
|
+
- vendor/cache/tty-color-0.6.0.gem
|
403
|
+
- vendor/cache/tty-cursor-0.7.1.gem
|
404
|
+
- vendor/cache/tty-prompt-0.23.1.gem
|
405
|
+
- vendor/cache/tty-reader-0.9.0.gem
|
406
|
+
- vendor/cache/tty-screen-0.8.1.gem
|
384
407
|
- vendor/cache/tzinfo-2.0.4.gem
|
385
408
|
- vendor/cache/unicode-display_width-1.6.1.gem
|
386
409
|
- vendor/cache/webmock-3.8.3.gem
|
410
|
+
- vendor/cache/wisper-2.0.1.gem
|
387
411
|
- vendor/cache/yard-0.9.24.gem
|
388
412
|
- vendor/cache/zeitwerk-2.4.2.gem
|
389
413
|
homepage: https://github.com/cased/cased-ruby
|
Binary file
|
Binary file
|
data/vendor/cache/i18n-1.8.9.gem
DELETED
Binary file
|
data/vendor/cache/jwt-2.2.2.gem
DELETED
Binary file
|