toot 0.3.0 → 0.4.0

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
- 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.