toot 0.3.0 → 0.4.0

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
- SHA1:
3
- metadata.gz: b9b0c0822e633371fcbbdc2ba92d31a364881171
4
- data.tar.gz: 186183478e3ae5c8b06c07fb3e04174e38618d29
2
+ SHA256:
3
+ metadata.gz: 6f559238d804f77517ddeea5ff60ac9800253ee9e8d7e4884385166f6a337759
4
+ data.tar.gz: 05c0be1075dfb4854cc5c029b21986496e951f3cc47e6fc26c4ad4c4464fa1dc
5
5
  SHA512:
6
- metadata.gz: 6d0a18cec34529905e071f44662e72e48239aeec4165b8ccc797347e103f3dfed1698d2007fc090462dc9fc278c58391eb282db3114ce0a7bd534662585c80a0
7
- data.tar.gz: aff2653ab9df7ad42dae792eb617e944b2a5793af2e0fb82c0fd7257491770fc78510bf13fc63dca5f344268be42208a3c4c63f45b04bc3638898556815f9a00
6
+ metadata.gz: 41dbf57c0c7a091aca9ee850c9d74e7818757483a92c10609142bd6fc0d6a1bae5250eb317ca55fa9e563bc5c007ce8581c185514c160cefde17baff6f7026d3
7
+ data.tar.gz: ca1187b893dbcd997a4b62246ee6ab336471ce35b180ef715e6a2b743e3e87ac708a62cf80d5afab50b555606796eb0a9a06cf946e528821c06f13f83979ce16
data/.gitignore CHANGED
@@ -7,3 +7,6 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+
11
+ *.lock
12
+ gemfiles/.bundle
data/.rubocop.yml ADDED
@@ -0,0 +1,197 @@
1
+ inherit_from: .rubocop_todo.yml
2
+
3
+ AllCops:
4
+ DisplayCopNames: true
5
+ TargetRubyVersion: 2.3
6
+ Exclude:
7
+ # generated by rails/binstubs
8
+ - 'bin/**/*'
9
+
10
+ # auto generated by rails
11
+ - 'db/migrate/**/*'
12
+ - 'db/schema.rb'
13
+
14
+ # generated by guard
15
+ - 'Guardfile'
16
+
17
+ # 3rd party
18
+ - 'vendor/**/*'
19
+ - 'lib/**/*'
20
+ # Appraisal gem re-creates these occasionally
21
+ - gemfiles/*.gemfile
22
+
23
+ Style/Documentation:
24
+ Enabled: false
25
+
26
+ Style/BlockDelimiters:
27
+ Exclude:
28
+ # we like the `let(:foo) {}` syntax in specs
29
+ - 'spec/**/*.rb'
30
+
31
+
32
+ Style/ClassAndModuleChildren:
33
+ EnforcedStyle: compact
34
+ Exclude:
35
+ - 'config/application.rb'
36
+
37
+ Style/FormatStringToken:
38
+ EnforcedStyle: template
39
+
40
+ Style/RegexpLiteral:
41
+ Enabled: false
42
+
43
+ Metrics/BlockLength:
44
+ Exclude:
45
+ # config files where we expect long blocks
46
+ - 'config/routes.rb'
47
+ - 'config/initializers/**/*.rb'
48
+ - 'config/environments/**/*.rb'
49
+ # spec files that might have a big describe
50
+ - 'spec/**/*.rb'
51
+ # jbuilder DSL files
52
+ - '**/*.jbuilder'
53
+
54
+ Style/BracesAroundHashParameters:
55
+ Enabled: false
56
+
57
+ Lint/AssignmentInCondition:
58
+ Enabled: false
59
+
60
+ Style/EmptyMethod:
61
+ EnforcedStyle: expanded
62
+
63
+ Style/Alias:
64
+ EnforcedStyle: prefer_alias_method
65
+
66
+ Style/NumericPredicate:
67
+ EnforcedStyle: comparison
68
+
69
+ Layout/AlignParameters:
70
+ EnforcedStyle: with_fixed_indentation
71
+
72
+ Layout/IndentFirstHashElement:
73
+ EnforcedStyle: consistent
74
+
75
+ Layout/AlignHash:
76
+ # allow coder to get around alignment rules by explicitly defining the hash param
77
+ EnforcedLastArgumentHashStyle: ignore_explicit
78
+
79
+ Layout/MultilineMethodCallIndentation:
80
+ EnforcedStyle: indented
81
+
82
+ Layout/MultilineOperationIndentation:
83
+ EnforcedStyle: indented
84
+
85
+ # These are all the cops that are disabled in the default configuration.
86
+
87
+ Layout/FirstArrayElementLineBreak:
88
+ Description: >-
89
+ Checks for a line break before the first element in a
90
+ multi-line array.
91
+ Enabled: true
92
+
93
+ Layout/FirstHashElementLineBreak:
94
+ Description: >-
95
+ Checks for a line break before the first element in a
96
+ multi-line hash.
97
+ Enabled: true
98
+
99
+ Layout/FirstMethodArgumentLineBreak:
100
+ Description: >-
101
+ Checks for a line break before the first argument in a
102
+ multi-line method call.
103
+ Enabled: false
104
+
105
+ Layout/FirstMethodParameterLineBreak:
106
+ Description: >-
107
+ Checks for a line break before the first parameter in a
108
+ multi-line method parameter definition.
109
+ Enabled: true
110
+
111
+ Layout/MultilineAssignmentLayout:
112
+ Description: 'Check for a newline after the assignment operator in multi-line assignments.'
113
+ StyleGuide: '#indent-conditional-assignment'
114
+ Enabled: true
115
+
116
+ Style/AutoResourceCleanup:
117
+ Description: 'Suggests the usage of an auto resource cleanup version of a method (if available).'
118
+ Enabled: true
119
+
120
+ Style/CollectionMethods:
121
+ Description: 'Preferred collection methods.'
122
+ StyleGuide: '#map-find-select-reduce-size'
123
+ Enabled: true
124
+
125
+ Style/Copyright:
126
+ Description: 'Include a copyright notice in each file before any code.'
127
+ Enabled: false
128
+
129
+ Style/DocumentationMethod:
130
+ Description: 'Public methods.'
131
+ Enabled: false
132
+ Exclude:
133
+ - 'spec/**/*'
134
+ - 'test/**/*'
135
+
136
+ Style/ImplicitRuntimeError:
137
+ Description: >-
138
+ Use `raise` or `fail` with an explicit exception class and
139
+ message, rather than just a message.
140
+ Enabled: true
141
+
142
+ Style/InlineComment:
143
+ Description: 'Avoid trailing inline comments.'
144
+ Enabled: true
145
+
146
+ Style/MethodCallWithArgsParentheses:
147
+ Description: 'Use parentheses for method calls with arguments.'
148
+ StyleGuide: '#method-invocation-parens'
149
+ Enabled: false
150
+
151
+ Style/MethodCalledOnDoEndBlock:
152
+ Description: 'Avoid chaining a method call on a do...end block.'
153
+ StyleGuide: '#single-line-blocks'
154
+ # TODO: enable after fixing todos
155
+ Enabled: false
156
+ Exclude:
157
+ - 'spec/**/*'
158
+
159
+ Style/MissingElse:
160
+ Description: >-
161
+ Require if/case expressions to have an else branches.
162
+ If enabled, it is recommended that
163
+ Style/UnlessElse and Style/EmptyElse be enabled.
164
+ This will conflict with Style/EmptyElse if
165
+ Style/EmptyElse is configured to style "both"
166
+ Enabled: false
167
+ EnforcedStyle: both
168
+ SupportedStyles:
169
+ # if - warn when an if expression is missing an else branch
170
+ # case - warn when a case expression is missing an else branch
171
+ # both - warn when an if or case expression is missing an else branch
172
+ - if
173
+ - case
174
+ - both
175
+
176
+ Style/OptionHash:
177
+ Description: "Don't use option hashes when you can use keyword arguments."
178
+ Enabled: true
179
+
180
+ Style/ReturnNil:
181
+ Description: 'Use return instead of return nil.'
182
+ Enabled: true
183
+
184
+ Style/Send:
185
+ Description: 'Prefer `Object#__send__` or `Object#public_send` to `send`, as `send` may overlap with existing methods.'
186
+ StyleGuide: '#prefer-public-send'
187
+ Enabled: true
188
+ Exclude:
189
+ - 'spec/**/*'
190
+
191
+ Style/StringMethods:
192
+ Description: 'Checks if configured preferred methods are used over non-preferred.'
193
+ Enabled: false
194
+
195
+ Style/SingleLineBlockParams:
196
+ Description: 'Enforces the names of some block params.'
197
+ Enabled: false
data/.rubocop_todo.yml ADDED
@@ -0,0 +1,19 @@
1
+ # This configuration was generated by
2
+ # `rubocop --auto-gen-config`
3
+ # on 2019-10-10 10:48:09 -0500 using RuboCop version 0.75.0.
4
+ # The point is for the user to remove these configuration records
5
+ # one by one as the offenses are removed from the code base.
6
+ # Note that changes in the inspected code, or installation of new
7
+ # versions of RuboCop, may require this file to be generated again.
8
+
9
+ # Offense count: 2
10
+ Lint/AmbiguousBlockAssociation:
11
+ Exclude:
12
+ - 'spec/toot/registers_subscriptions_spec.rb'
13
+
14
+ # Offense count: 23
15
+ # Cop supports --auto-correct.
16
+ # Configuration parameters: AutoCorrect, AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
17
+ # URISchemes: http, https
18
+ Metrics/LineLength:
19
+ Max: 116
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 2.5.7
data/.travis.yml CHANGED
@@ -1,4 +1,23 @@
1
1
  language: ruby
2
+ services:
3
+ - redis-server
2
4
  rvm:
3
- - 2.1.2
4
- before_install: gem install bundler -v 1.10.5
5
+ - 2.3.8
6
+ - 2.5.7
7
+ gemfile:
8
+ - gemfiles/rails_6.x.gemfile
9
+ - gemfiles/rails_5.2.gemfile
10
+ - gemfiles/rails_4.2.gemfile
11
+ matrix:
12
+ exclude:
13
+ # Rails 6 & sidekiq 6 incompatible with ruby 2.3
14
+ - rvm: 2.3.8
15
+ gemfile: gemfiles/rails_6.x.gemfile
16
+ jobs:
17
+ include:
18
+ - stage: lint
19
+ script:
20
+ - bundle exec rubocop
21
+ # Keep in mind to overwrite these here
22
+ rvm: 2.5
23
+ gemfile: gemfiles/rails_5.2.gemfile
data/Appraisals ADDED
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ appraise 'rails-6.x' do
4
+ gem 'rails', '~> 6.0'
5
+ gem 'railties', '~> 6.0'
6
+ gem 'sidekiq', '>= 6'
7
+ end
8
+
9
+ appraise 'rails-5.2' do
10
+ gem 'rails', '~> 5.2.0'
11
+ gem 'railties', '~> 5.2.0'
12
+ gem 'sidekiq', '< 6'
13
+ end
14
+
15
+ appraise 'rails-4.2' do
16
+ gem 'rails', '~> 4.2'
17
+ gem 'railties', '~> 4.2'
18
+ gem 'sidekiq', '< 6'
19
+ end
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in toot.gemspec
data/Guardfile ADDED
@@ -0,0 +1,53 @@
1
+ group :red_green_refactor, halt_on_fail: true do
2
+ guard :rspec, cmd: 'bundle exec rspec' do
3
+ require 'guard/rspec/dsl'
4
+ dsl = Guard::RSpec::Dsl.new(self)
5
+
6
+ # RSpec files
7
+ rspec = dsl.rspec
8
+ watch(rspec.spec_helper) { rspec.spec_dir }
9
+ # watch(rspec.spec_support) { rspec.spec_dir }
10
+ watch(rspec.spec_files)
11
+
12
+ # Ruby files
13
+ ruby = dsl.ruby
14
+ watch(%r{lib/wcc/(.+)\.rb$}) { |m| rspec.spec.call("wcc/#{m[1]}") }
15
+ watch(%r{lib/generators/(.+)\.rb$}) { |m| rspec.spec.call("generators/#{m[1]}") }
16
+
17
+ # Rails files
18
+ rails = dsl.rails(view_extensions: %w[erb haml slim])
19
+ dsl.watch_spec_files_for(rails.app_files)
20
+ dsl.watch_spec_files_for(rails.views)
21
+
22
+ watch(rails.controllers) do |m|
23
+ [
24
+ rspec.spec.call("routing/#{m[1]}_routing"),
25
+ rspec.spec.call("controllers/#{m[1]}_controller"),
26
+ rspec.spec.call("acceptance/#{m[1]}")
27
+ ]
28
+ end
29
+
30
+ # Rails config changes
31
+ watch(rails.spec_helper) { rspec.spec_dir }
32
+ watch(rails.routes) { "#{rspec.spec_dir}/routing" }
33
+ watch(rails.app_controller) { "#{rspec.spec_dir}/controllers" }
34
+
35
+ # Capybara features specs
36
+ watch(rails.view_dirs) { |m| rspec.spec.call("features/#{m[1]}") }
37
+ watch(rails.layouts) { |m| rspec.spec.call("features/#{m[1]}") }
38
+ end
39
+
40
+ guard :rubocop, cli: ['--display-cop-names'] do
41
+ watch(%r{.+\.rb$})
42
+ watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
43
+ end
44
+ end
45
+
46
+ group :autofix do
47
+ guard :rubocop, all_on_start: false, cli: ['--auto-correct', '--display-cop-names'] do
48
+ watch(%r{.+\.rb$})
49
+ watch(%r{(?:.+/)?\.rubocop(?:_todo)?\.yml$}) { |m| File.dirname(m[0]) }
50
+ end
51
+ end
52
+
53
+ scope group: :red_green_refactor
data/Rakefile CHANGED
@@ -1,12 +1,14 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
 
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
- task :default => :spec
8
+ task default: :spec
7
9
 
8
10
  task :environment do
9
- $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
11
+ $LOAD_PATH.unshift File.expand_path('lib', __dir__)
10
12
  require 'toot'
11
13
  end
12
14
 
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file was generated by Appraisal
4
+
5
+ source 'https://rubygems.org'
6
+
7
+ gem 'rails', '~> 4.2'
8
+ gem 'railties', '~> 4.2'
9
+ gem 'sidekiq', '< 6'
10
+
11
+ gemspec path: '../'
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file was generated by Appraisal
4
+
5
+ source 'https://rubygems.org'
6
+
7
+ gem 'rails', '~> 5.2.0'
8
+ gem 'railties', '~> 5.2.0'
9
+ gem 'sidekiq', '< 6'
10
+
11
+ gemspec path: '../'
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file was generated by Appraisal
4
+
5
+ source 'https://rubygems.org'
6
+
7
+ gem 'rails', '~> 6.0'
8
+ gem 'railties', '~> 5.2.0'
9
+ gem 'sidekiq', '>= 6'
10
+
11
+ gemspec path: '../'
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ # This file was generated by Appraisal
4
+
5
+ source 'https://rubygems.org'
6
+
7
+ gem 'rails', '~> 6.0'
8
+ gem 'railties', '~> 6.0'
9
+ gem 'sidekiq', '>= 6'
10
+
11
+ gemspec path: '../'
data/lib/toot/event.rb CHANGED
@@ -14,7 +14,7 @@ module Toot
14
14
  }
15
15
 
16
16
  def initialize(args={})
17
- args = DEFAULTS.().merge(args.symbolize_keys)
17
+ args = DEFAULTS.().merge(_symbolize_keys(args))
18
18
  @id = args[:id]
19
19
  @timestamp = args[:timestamp]
20
20
  @payload = args[:payload]
@@ -42,5 +42,14 @@ module Toot
42
42
  def [](key)
43
43
  payload[key]
44
44
  end
45
+
46
+ private
47
+
48
+ def _symbolize_keys(h)
49
+ h.inject({}) do |options, (key, value)|
50
+ options[(key.to_sym rescue key) || key] = value
51
+ options
52
+ end
53
+ end
45
54
  end
46
55
  end
@@ -1,9 +1,43 @@
1
1
  module Toot
2
2
  class SubscriptionsService
3
3
 
4
- def call(env)
4
+ def self.call(env)
5
5
  request = Rack::Request.new(env)
6
6
  response = Rack::Response.new
7
+ me = new(request, response)
8
+
9
+ if me.respond_to?(request.request_method.downcase)
10
+ me.public_send(request.request_method.downcase)
11
+ else
12
+ # Method not allowed
13
+ response.status = 405
14
+ end
15
+
16
+ response.finish
17
+ end
18
+
19
+ attr_reader :request, :response
20
+ def initialize(request, response)
21
+ @request = request
22
+ @response = response
23
+ end
24
+
25
+ def get
26
+ accept = request.env['HTTP_ACCEPT']
27
+
28
+ if accept.include?('application/json')
29
+ response.header['Content-Type'] = 'application/json'
30
+ response.write({
31
+ channels: channels,
32
+ subscriptions: subscriptions,
33
+ }.to_json)
34
+ return
35
+ end
36
+
37
+ response.status = 406
38
+ end
39
+
40
+ def post
7
41
  json = parse_body_json(request)
8
42
 
9
43
  if json["channel"] && json["callback_url"]
@@ -13,19 +47,39 @@ module Toot
13
47
  else
14
48
  response.status = 422
15
49
  end
16
-
17
- response.finish
18
50
  end
19
51
 
20
- def self.call(env)
21
- new.call(env)
52
+ def delete
53
+ channel = request.params['channel']
54
+ callback_url = request.params['callback_url']
55
+ if channel.blank? || callback_url.blank?
56
+ response.status = 400
57
+ return
58
+ end
59
+
60
+ result = Toot.redis do |r|
61
+ r.srem channel, callback_url
62
+ end
63
+
64
+ response.status = result ? 204 : 404
22
65
  end
23
66
 
24
- private def parse_body_json(request)
67
+ private
68
+
69
+ def parse_body_json(request)
25
70
  JSON.parse(request.body.read)
26
71
  rescue JSON::ParserError
27
72
  {}
28
73
  end
29
74
 
75
+ def channels
76
+ @channels ||= Toot.redis { |r| r.keys(Toot.config.channel_prefix + "*") }
77
+ end
78
+
79
+ def subscriptions
80
+ @subscriptions ||= channels.each_with_object({}) do |ch, h|
81
+ h[ch] = Toot.redis { |r| r.smembers ch }
82
+ end
83
+ end
30
84
  end
31
85
  end
data/lib/toot/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Toot
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/toot.gemspec CHANGED
@@ -1,29 +1,36 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
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
5
  require 'toot/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "toot"
8
+ spec.name = 'toot'
8
9
  spec.version = Toot::VERSION
9
- spec.authors = ["Travis Petticrew"]
10
- spec.email = ["travis@petticrew.net"]
10
+ spec.authors = ['Watermark Dev']
11
+ spec.email = ['dev@watermark.org']
11
12
 
12
- spec.summary = %q{Send and receive events from remote services over HTTP.}
13
- spec.description = %q{Send and receive events from remote services over HTTP.}
14
- spec.homepage = "https://github.com/watermarkchurch/toot"
13
+ spec.summary = 'Send and receive events from remote services over HTTP.'
14
+ spec.description = 'Send and receive events from remote services over HTTP.'
15
+ spec.homepage = 'https://github.com/watermarkchurch/toot'
15
16
 
16
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
- spec.bindir = "exe"
18
+ spec.bindir = 'exe'
18
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
20
21
 
21
- spec.add_dependency "sidekiq", ">=2"
22
- spec.add_dependency "rack", ">=1"
23
- spec.add_dependency "faraday", "<1"
22
+ spec.add_dependency 'faraday', '<1'
23
+ spec.add_dependency 'rack', '>=1'
24
+ spec.add_dependency 'sidekiq', '>=2'
24
25
 
25
- spec.add_development_dependency "bundler", "~> 1.10"
26
- spec.add_development_dependency "rake", "~> 10.0"
27
- spec.add_development_dependency "rspec"
28
- spec.add_development_dependency "webmock"
26
+ spec.add_development_dependency 'appraisal'
27
+ spec.add_development_dependency 'bundler', '~> 1.10'
28
+ spec.add_development_dependency 'coveralls'
29
+ spec.add_development_dependency 'guard'
30
+ spec.add_development_dependency 'guard-rspec'
31
+ spec.add_development_dependency 'guard-rubocop'
32
+ spec.add_development_dependency 'rake', '~> 10.0'
33
+ spec.add_development_dependency 'rspec'
34
+ spec.add_development_dependency 'rubocop', '~> 0.75.0'
35
+ spec.add_development_dependency 'webmock'
29
36
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: toot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
- - Travis Petticrew
7
+ - Watermark Dev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-11-13 00:00:00.000000000 Z
11
+ date: 2019-10-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: sidekiq
14
+ name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "<"
18
18
  - !ruby/object:Gem::Version
19
- version: '2'
19
+ version: '1'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "<"
25
25
  - !ruby/object:Gem::Version
26
- version: '2'
26
+ version: '1'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rack
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -39,19 +39,33 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1'
41
41
  - !ruby/object:Gem::Dependency
42
- name: faraday
42
+ name: sidekiq
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "<"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1'
47
+ version: '2'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "<"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1'
54
+ version: '2'
55
+ - !ruby/object:Gem::Dependency
56
+ name: appraisal
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -66,6 +80,62 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: '1.10'
83
+ - !ruby/object:Gem::Dependency
84
+ name: coveralls
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: guard
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: guard-rspec
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: guard-rubocop
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
69
139
  - !ruby/object:Gem::Dependency
70
140
  name: rake
71
141
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +164,20 @@ dependencies:
94
164
  - - ">="
95
165
  - !ruby/object:Gem::Version
96
166
  version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: rubocop
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 0.75.0
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 0.75.0
97
181
  - !ruby/object:Gem::Dependency
98
182
  name: webmock
99
183
  requirement: !ruby/object:Gem::Requirement
@@ -110,21 +194,30 @@ dependencies:
110
194
  version: '0'
111
195
  description: Send and receive events from remote services over HTTP.
112
196
  email:
113
- - travis@petticrew.net
197
+ - dev@watermark.org
114
198
  executables: []
115
199
  extensions: []
116
200
  extra_rdoc_files: []
117
201
  files:
118
202
  - ".gitignore"
119
203
  - ".rspec"
204
+ - ".rubocop.yml"
205
+ - ".rubocop_todo.yml"
206
+ - ".ruby-version"
120
207
  - ".travis.yml"
208
+ - Appraisals
121
209
  - Gemfile
210
+ - Guardfile
122
211
  - README.md
123
212
  - Rakefile
124
213
  - bin/console
125
214
  - bin/rspec
126
215
  - bin/setup
127
216
  - circle.yml
217
+ - gemfiles/rails_4.2.gemfile
218
+ - gemfiles/rails_5.2.gemfile
219
+ - gemfiles/rails_6.gemfile
220
+ - gemfiles/rails_6.x.gemfile
128
221
  - lib/tasks/toot.rake
129
222
  - lib/toot.rb
130
223
  - lib/toot/calls_event_callback.rb
@@ -159,7 +252,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
252
  version: '0'
160
253
  requirements: []
161
254
  rubyforge_project:
162
- rubygems_version: 2.4.2
255
+ rubygems_version: 2.7.6.2
163
256
  signing_key:
164
257
  specification_version: 4
165
258
  summary: Send and receive events from remote services over HTTP.