zapier_rest_hooks 0.0.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.
Files changed (62) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +30 -0
  4. data/app/controllers/zapier_rest_hooks/application_controller.rb +5 -0
  5. data/app/controllers/zapier_rest_hooks/hooks_controller.rb +31 -0
  6. data/app/models/zapier_rest_hooks/hook.rb +37 -0
  7. data/config/routes.rb +3 -0
  8. data/db/migrate/20160614153212_create_zapier_rest_hooks_hooks.rb +11 -0
  9. data/db/migrate/20160614204418_add_owner_to_hooks.rb +6 -0
  10. data/lib/generators/zapier_rest_hooks/install_generator.rb +22 -0
  11. data/lib/tasks/zapier_rest_hooks_tasks.rake +4 -0
  12. data/lib/zapier_rest_hooks.rb +4 -0
  13. data/lib/zapier_rest_hooks/engine.rb +12 -0
  14. data/lib/zapier_rest_hooks/version.rb +3 -0
  15. data/spec/controllers/zapier_rest_hooks/hooks_controller_spec.rb +28 -0
  16. data/spec/dummy/README.rdoc +28 -0
  17. data/spec/dummy/Rakefile +6 -0
  18. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  19. data/spec/dummy/app/models/candidate.rb +20 -0
  20. data/spec/dummy/app/models/organization.rb +2 -0
  21. data/spec/dummy/bin/bundle +3 -0
  22. data/spec/dummy/bin/rails +4 -0
  23. data/spec/dummy/bin/rake +4 -0
  24. data/spec/dummy/bin/setup +29 -0
  25. data/spec/dummy/config.ru +4 -0
  26. data/spec/dummy/config/application.rb +31 -0
  27. data/spec/dummy/config/boot.rb +5 -0
  28. data/spec/dummy/config/database.yml +25 -0
  29. data/spec/dummy/config/environment.rb +5 -0
  30. data/spec/dummy/config/environments/development.rb +41 -0
  31. data/spec/dummy/config/environments/production.rb +79 -0
  32. data/spec/dummy/config/environments/test.rb +42 -0
  33. data/spec/dummy/config/initializers/assets.rb +11 -0
  34. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  35. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  36. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  37. data/spec/dummy/config/initializers/inflections.rb +16 -0
  38. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  39. data/spec/dummy/config/initializers/session_store.rb +3 -0
  40. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  41. data/spec/dummy/config/locales/en.yml +23 -0
  42. data/spec/dummy/config/routes.rb +3 -0
  43. data/spec/dummy/config/secrets.yml +22 -0
  44. data/spec/dummy/db/development.sqlite3 +0 -0
  45. data/spec/dummy/db/migrate/20160614170150_create_organizations.rb +9 -0
  46. data/spec/dummy/db/migrate/20160614170351_create_candidates.rb +11 -0
  47. data/spec/dummy/db/schema.rb +43 -0
  48. data/spec/dummy/db/test.sqlite3 +0 -0
  49. data/spec/dummy/log/development.log +13 -0
  50. data/spec/dummy/log/test.log +4887 -0
  51. data/spec/dummy/public/404.html +67 -0
  52. data/spec/dummy/public/422.html +67 -0
  53. data/spec/dummy/public/500.html +66 -0
  54. data/spec/dummy/public/favicon.ico +0 -0
  55. data/spec/factories/candidates.rb +8 -0
  56. data/spec/factories/hooks.rb +9 -0
  57. data/spec/factories/organizations.rb +5 -0
  58. data/spec/models/candidate_spec.rb +53 -0
  59. data/spec/models/zapier_rest_hooks/hook_spec.rb +102 -0
  60. data/spec/spec_helper.rb +39 -0
  61. data/spec/zapier_rest_hooks_spec.rb +7 -0
  62. metadata +321 -0
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,66 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>We're sorry, but something went wrong (500)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/500.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>We're sorry, but something went wrong.</h1>
62
+ </div>
63
+ <p>If you are the application owner check the logs for more information.</p>
64
+ </div>
65
+ </body>
66
+ </html>
File without changes
@@ -0,0 +1,8 @@
1
+ FactoryGirl.define do
2
+ factory :candidate do
3
+ organization
4
+ first_name 'MyString'
5
+ last_name 'MyString'
6
+ email 'MyString'
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ FactoryGirl.define do
2
+ factory :hook, class: 'ZapierRestHooks::Hook' do
3
+ event_name 'MyString'
4
+ owner_id 0
5
+ owner_class_name 'Struct::ZapierApp'
6
+ subscription_url 'MyString'
7
+ target_url 'MyString'
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ FactoryGirl.define do
2
+ factory :organization do
3
+ name 'MyString'
4
+ end
5
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Candidate, type: :model do
4
+ let(:subscription_url) { 'https://zapier.com/hooks/standard/wpGRPPcRxZt2GxBbSSeUAlWPBnhLiRWB/' }
5
+ let(:target_url) { 'https://zapier.com/hooks/standard/wpGRPPcRxZt2GxBbSSeUAlWPBnhLiRWB/' }
6
+
7
+ describe 'Callback' do
8
+ context 'when owner is specified' do
9
+ it 'triggers rest hook on creation' do
10
+ organization = create(:organization)
11
+
12
+ ZapierRestHooks::Hook.create(
13
+ event_name: 'new_candidate',
14
+ owner_class_name: organization.class.name,
15
+ owner_id: organization.id,
16
+ subscription_url: subscription_url,
17
+ target_url: target_url
18
+ )
19
+
20
+ FakeWeb.register_uri(
21
+ :post,
22
+ target_url,
23
+ body: 'irrelevant',
24
+ status: %w(200 Triggered)
25
+ )
26
+
27
+ candidate = create(:candidate, organization: organization)
28
+ expect(FakeWeb.last_request.method).to eq('POST')
29
+ expect(FakeWeb.last_request.body).to eq(candidate.to_json)
30
+ end
31
+ end
32
+ context 'when owner is not specified' do
33
+ it 'triggers rest hook on creation' do
34
+ ZapierRestHooks::Hook.create(
35
+ event_name: 'new_candidate',
36
+ subscription_url: subscription_url,
37
+ target_url: target_url
38
+ )
39
+
40
+ FakeWeb.register_uri(
41
+ :post,
42
+ target_url,
43
+ body: 'irrelevant',
44
+ status: %w(200 Triggered)
45
+ )
46
+
47
+ candidate = create(:candidate, organization: nil)
48
+ expect(FakeWeb.last_request.method).to eq('POST')
49
+ expect(FakeWeb.last_request.body).to eq(candidate.to_json)
50
+ end
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,102 @@
1
+ require 'spec_helper'
2
+
3
+ module ZapierRestHooks
4
+ RSpec.describe Hook, type: :model do
5
+ let(:organization) { create(:organization) }
6
+ let(:target_url) { 'https://zapier.com/hooks/standard/wpGRPPcRxZt2GxBbSSeUAlWPBnhLiRWB/' }
7
+ describe 'Validations' do
8
+ it 'has a valid factory' do
9
+ expect(build(:hook, owner_id: organization.id, owner_class_name: organization.class.name)).to be_valid
10
+ expect(build(:hook)).to be_valid
11
+ end
12
+
13
+ it { is_expected.to validate_presence_of(:event_name) }
14
+ it { is_expected.to validate_presence_of(:target_url) }
15
+ end
16
+ describe '.hooks_exist?' do
17
+ before do
18
+ create(:hook, event_name: 'new_candidate', owner_id: organization.id, owner_class_name: organization.class.name)
19
+ create(:hook, event_name: 'new_global_candidate')
20
+ end
21
+ it 'tests whether any hooks exist for a given event_name and owner' do
22
+ expect(Hook.hooks_exist?('new_candidate', organization)).to be_truthy
23
+ expect(Hook.hooks_exist?('new_global_candidate')).to be_truthy
24
+ Hook.destroy_all
25
+ expect(Hook.hooks_exist?('new_candidate', organization)).to be_falsey
26
+ expect(Hook.hooks_exist?('new_global_candidate')).to be_falsey
27
+ end
28
+ end
29
+ describe '.hooks' do
30
+ let!(:first_hook) {
31
+ create(
32
+ :hook,
33
+ event_name: 'new_candidate',
34
+ owner_id: organization.id,
35
+ owner_class_name: organization.class.name
36
+ )
37
+ }
38
+ it 'Returns all hooks for a given event_name and owner.' do
39
+ hooks = Hook.hooks('new_candidate', organization)
40
+ expect(hooks.size).to eq(1)
41
+ expect(hooks.first).to eq(first_hook)
42
+
43
+ second_hook =
44
+ Hook.create(
45
+ event_name: 'new_candidate',
46
+ owner_id: organization.id,
47
+ owner_class_name: organization.class.name,
48
+ target_url: target_url
49
+ )
50
+
51
+ hooks = Hook.hooks('new_candidate', organization)
52
+ expect(hooks.size).to eq(2)
53
+ expect(second_hook).to eq(hooks.last)
54
+ end
55
+ end
56
+ describe '.trigger' do
57
+ let(:candidate) { create(:candidate) }
58
+
59
+ before do
60
+ create(
61
+ :hook,
62
+ event_name: 'new_candidate',
63
+ target_url: target_url,
64
+ owner_id: organization.id,
65
+ owner_class_name: organization.class.name
66
+ )
67
+ end
68
+ context 'when response code is different than `410`' do
69
+ it 'sends the post request' do
70
+ FakeWeb.register_uri(
71
+ :post,
72
+ target_url,
73
+ body: 'irrelevant',
74
+ status: %w(200 Triggered)
75
+ )
76
+
77
+ Hook.trigger('new_candidate', candidate.to_json, organization)
78
+
79
+ expect(FakeWeb.last_request.method).to eq('POST')
80
+ expect(FakeWeb.last_request.body).to eq(candidate.to_json)
81
+ expect(Hook.count).to eq(1) # The hook should not have been deleted.
82
+ end
83
+ end
84
+ context 'when response code is `410`' do
85
+ it 'sends the post request and deletes the hook' do
86
+ FakeWeb.register_uri(
87
+ :post,
88
+ target_url,
89
+ body: 'irrelevant',
90
+ status: ['410', 'Danger, Will Robinson!']
91
+ )
92
+
93
+ Hook.trigger('new_candidate', candidate.to_json, organization)
94
+ expect(FakeWeb.last_request.method).to eq('POST')
95
+ expect(FakeWeb.last_request.body).to eq(candidate.to_json)
96
+ # The 410 response should trigger removal of the hook.
97
+ expect(Hook.count).to eq(0)
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,39 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ ENV['RAILS_ENV'] ||= 'test'
3
+
4
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
5
+ require 'rspec/rails'
6
+ require 'shoulda-matchers'
7
+ require 'database_cleaner'
8
+ require 'factory_girl_rails'
9
+ require 'codeclimate-test-reporter'
10
+ require 'fakeweb'
11
+ CodeClimate::TestReporter.start
12
+ FakeWeb.allow_net_connect = true
13
+
14
+ Rails.backtrace_cleaner.remove_silencers!
15
+
16
+ # Load support files
17
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
18
+
19
+ ActiveRecord::Migration.maintain_test_schema!
20
+
21
+ DatabaseCleaner.strategy = :truncation
22
+
23
+ Shoulda::Matchers.configure do |config|
24
+ config.integrate do |with|
25
+ with.test_framework :rspec
26
+ with.library :rails
27
+ end
28
+ end
29
+
30
+ RSpec.configure do |config|
31
+ config.include FactoryGirl::Syntax::Methods
32
+ config.mock_with :rspec
33
+ config.use_transactional_fixtures = true
34
+ config.infer_base_class_for_anonymous_controllers = false
35
+
36
+ config.after(:each, type: :request) do
37
+ DatabaseCleaner.clean # Truncate the database
38
+ end
39
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ describe ZapierRestHooks do
4
+ it 'has a version number' do
5
+ expect(ZapierRestHooks::VERSION).not_to be nil
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,321 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: zapier_rest_hooks
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Esteban Arango Medina
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 4.2.3
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 4.2.3
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: 4.2.3
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 4.2.3
33
+ - !ruby/object:Gem::Dependency
34
+ name: rest-client
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 1.8.0
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 1.8.0
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 1.8.0
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 1.8.0
53
+ - !ruby/object:Gem::Dependency
54
+ name: rspec-rails
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.4'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '3.4'
67
+ - !ruby/object:Gem::Dependency
68
+ name: sqlite3
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '1.3'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 1.3.11
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '1.3'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 1.3.11
87
+ - !ruby/object:Gem::Dependency
88
+ name: database_cleaner
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '1.5'
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.3.11
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.5'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 1.3.11
107
+ - !ruby/object:Gem::Dependency
108
+ name: shoulda-matchers
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '3.1'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 3.1.1
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.1'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 3.1.1
127
+ - !ruby/object:Gem::Dependency
128
+ name: factory_girl_rails
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '4.7'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '4.7'
141
+ - !ruby/object:Gem::Dependency
142
+ name: fakeweb
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '1.3'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - "~>"
153
+ - !ruby/object:Gem::Version
154
+ version: '1.3'
155
+ - !ruby/object:Gem::Dependency
156
+ name: rubocop
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - "~>"
160
+ - !ruby/object:Gem::Version
161
+ version: 0.40.0
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - "~>"
167
+ - !ruby/object:Gem::Version
168
+ version: 0.40.0
169
+ - !ruby/object:Gem::Dependency
170
+ name: codeclimate-test-reporter
171
+ requirement: !ruby/object:Gem::Requirement
172
+ requirements:
173
+ - - "~>"
174
+ - !ruby/object:Gem::Version
175
+ version: 0.5.1
176
+ type: :development
177
+ prerelease: false
178
+ version_requirements: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - "~>"
181
+ - !ruby/object:Gem::Version
182
+ version: 0.5.1
183
+ description: Integration of Zapier REST hooks pattern within a Ruby on Rails app.
184
+ email:
185
+ - marranoparael31@gmail.com
186
+ executables: []
187
+ extensions: []
188
+ extra_rdoc_files: []
189
+ files:
190
+ - MIT-LICENSE
191
+ - Rakefile
192
+ - app/controllers/zapier_rest_hooks/application_controller.rb
193
+ - app/controllers/zapier_rest_hooks/hooks_controller.rb
194
+ - app/models/zapier_rest_hooks/hook.rb
195
+ - config/routes.rb
196
+ - db/migrate/20160614153212_create_zapier_rest_hooks_hooks.rb
197
+ - db/migrate/20160614204418_add_owner_to_hooks.rb
198
+ - lib/generators/zapier_rest_hooks/install_generator.rb
199
+ - lib/tasks/zapier_rest_hooks_tasks.rake
200
+ - lib/zapier_rest_hooks.rb
201
+ - lib/zapier_rest_hooks/engine.rb
202
+ - lib/zapier_rest_hooks/version.rb
203
+ - spec/controllers/zapier_rest_hooks/hooks_controller_spec.rb
204
+ - spec/dummy/README.rdoc
205
+ - spec/dummy/Rakefile
206
+ - spec/dummy/app/controllers/application_controller.rb
207
+ - spec/dummy/app/models/candidate.rb
208
+ - spec/dummy/app/models/organization.rb
209
+ - spec/dummy/bin/bundle
210
+ - spec/dummy/bin/rails
211
+ - spec/dummy/bin/rake
212
+ - spec/dummy/bin/setup
213
+ - spec/dummy/config.ru
214
+ - spec/dummy/config/application.rb
215
+ - spec/dummy/config/boot.rb
216
+ - spec/dummy/config/database.yml
217
+ - spec/dummy/config/environment.rb
218
+ - spec/dummy/config/environments/development.rb
219
+ - spec/dummy/config/environments/production.rb
220
+ - spec/dummy/config/environments/test.rb
221
+ - spec/dummy/config/initializers/assets.rb
222
+ - spec/dummy/config/initializers/backtrace_silencers.rb
223
+ - spec/dummy/config/initializers/cookies_serializer.rb
224
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
225
+ - spec/dummy/config/initializers/inflections.rb
226
+ - spec/dummy/config/initializers/mime_types.rb
227
+ - spec/dummy/config/initializers/session_store.rb
228
+ - spec/dummy/config/initializers/wrap_parameters.rb
229
+ - spec/dummy/config/locales/en.yml
230
+ - spec/dummy/config/routes.rb
231
+ - spec/dummy/config/secrets.yml
232
+ - spec/dummy/db/development.sqlite3
233
+ - spec/dummy/db/migrate/20160614170150_create_organizations.rb
234
+ - spec/dummy/db/migrate/20160614170351_create_candidates.rb
235
+ - spec/dummy/db/schema.rb
236
+ - spec/dummy/db/test.sqlite3
237
+ - spec/dummy/log/development.log
238
+ - spec/dummy/log/test.log
239
+ - spec/dummy/public/404.html
240
+ - spec/dummy/public/422.html
241
+ - spec/dummy/public/500.html
242
+ - spec/dummy/public/favicon.ico
243
+ - spec/factories/candidates.rb
244
+ - spec/factories/hooks.rb
245
+ - spec/factories/organizations.rb
246
+ - spec/models/candidate_spec.rb
247
+ - spec/models/zapier_rest_hooks/hook_spec.rb
248
+ - spec/spec_helper.rb
249
+ - spec/zapier_rest_hooks_spec.rb
250
+ homepage: https://github.com/esbanarango/zapier-REST-hooks
251
+ licenses:
252
+ - MIT
253
+ metadata: {}
254
+ post_install_message:
255
+ rdoc_options: []
256
+ require_paths:
257
+ - lib
258
+ required_ruby_version: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ required_rubygems_version: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - ">="
266
+ - !ruby/object:Gem::Version
267
+ version: '0'
268
+ requirements: []
269
+ rubyforge_project:
270
+ rubygems_version: 2.4.5.1
271
+ signing_key:
272
+ specification_version: 4
273
+ summary: Summary of ZapierRestHooks.
274
+ test_files:
275
+ - spec/controllers/zapier_rest_hooks/hooks_controller_spec.rb
276
+ - spec/dummy/app/controllers/application_controller.rb
277
+ - spec/dummy/app/models/candidate.rb
278
+ - spec/dummy/app/models/organization.rb
279
+ - spec/dummy/bin/bundle
280
+ - spec/dummy/bin/rails
281
+ - spec/dummy/bin/rake
282
+ - spec/dummy/bin/setup
283
+ - spec/dummy/config/application.rb
284
+ - spec/dummy/config/boot.rb
285
+ - spec/dummy/config/database.yml
286
+ - spec/dummy/config/environment.rb
287
+ - spec/dummy/config/environments/development.rb
288
+ - spec/dummy/config/environments/production.rb
289
+ - spec/dummy/config/environments/test.rb
290
+ - spec/dummy/config/initializers/assets.rb
291
+ - spec/dummy/config/initializers/backtrace_silencers.rb
292
+ - spec/dummy/config/initializers/cookies_serializer.rb
293
+ - spec/dummy/config/initializers/filter_parameter_logging.rb
294
+ - spec/dummy/config/initializers/inflections.rb
295
+ - spec/dummy/config/initializers/mime_types.rb
296
+ - spec/dummy/config/initializers/session_store.rb
297
+ - spec/dummy/config/initializers/wrap_parameters.rb
298
+ - spec/dummy/config/locales/en.yml
299
+ - spec/dummy/config/routes.rb
300
+ - spec/dummy/config/secrets.yml
301
+ - spec/dummy/config.ru
302
+ - spec/dummy/db/development.sqlite3
303
+ - spec/dummy/db/migrate/20160614170150_create_organizations.rb
304
+ - spec/dummy/db/migrate/20160614170351_create_candidates.rb
305
+ - spec/dummy/db/schema.rb
306
+ - spec/dummy/db/test.sqlite3
307
+ - spec/dummy/log/development.log
308
+ - spec/dummy/log/test.log
309
+ - spec/dummy/public/404.html
310
+ - spec/dummy/public/422.html
311
+ - spec/dummy/public/500.html
312
+ - spec/dummy/public/favicon.ico
313
+ - spec/dummy/Rakefile
314
+ - spec/dummy/README.rdoc
315
+ - spec/factories/candidates.rb
316
+ - spec/factories/hooks.rb
317
+ - spec/factories/organizations.rb
318
+ - spec/models/candidate_spec.rb
319
+ - spec/models/zapier_rest_hooks/hook_spec.rb
320
+ - spec/spec_helper.rb
321
+ - spec/zapier_rest_hooks_spec.rb