webhookr-recurly 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 66d23a50439f5eca817d93a19ca1da8a40f03acc
4
+ data.tar.gz: f96b2e3e14633a5ac31f978badeb729fdc191e10
5
+ SHA512:
6
+ metadata.gz: 27d9377d0f06ef3cd3eb1b388ca639c967384afbaa6792bde0a02f1e734925c58ef39d525535c3a57c09244ba8a184cc11703c3baca225d2313525f86a53e948
7
+ data.tar.gz: 2c22dd453aeb8e634fb92891635dd448cbaa51482e4f4722244eb0a870ded37d5cce31104d76bfff638c36fa98034d6eda678028b7b341421ad23e0a5e162218
data/.gitignore ADDED
@@ -0,0 +1,22 @@
1
+ *.gem
2
+ *.rbc
3
+ .ruby-version
4
+ .ruby-gemset
5
+ .bundle
6
+ .config
7
+ .yardoc
8
+ Gemfile.lock
9
+ Gemfile.local
10
+ Guardfile.local
11
+ README.html
12
+ InstalledFiles
13
+ _yardoc
14
+ coverage
15
+ doc/
16
+ lib/bundler/man
17
+ pkg
18
+ rdoc
19
+ spec/reports
20
+ test/tmp
21
+ test/version_tmp
22
+ tmp
data/.travis.yml ADDED
@@ -0,0 +1,9 @@
1
+ language: ruby
2
+ rvm:
3
+ - "1.9.3"
4
+ - "2.0.0"
5
+ - jruby-19mode # JRuby in 1.9 mode
6
+ - ruby-head
7
+ matrix:
8
+ allow_failures:
9
+ - rvm: ruby-head
data/Gemfile ADDED
@@ -0,0 +1,20 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development, :test do
6
+ gem "rake", "~> 10.0"
7
+ gem "minitest"
8
+ gem "minitest-reporters"
9
+ gem "em-websocket"
10
+ gem "guard"
11
+ gem "guard-minitest"
12
+ gem "guard-markdown"
13
+ gem "guard-livereload"
14
+ gem "simplecov", :require => false
15
+ end
16
+
17
+ if File.exists?('Gemfile.local')
18
+ instance_eval File.read('Gemfile.local')
19
+ end
20
+
data/Guardfile ADDED
@@ -0,0 +1,26 @@
1
+
2
+ guard 'minitest', :test_folders => 'test', :test_file_patterns => '*_tests.rb' do
3
+ watch(%r|^test/(.+)_test\.rb|)
4
+ watch(%r|^test/(.+)_tests\.rb|)
5
+
6
+ watch(%r|^lib/(.*)([^/]+)\.rb|) do |m|
7
+ "test/#{m[1]}#{m[2]}_tests.rb"
8
+ end
9
+
10
+ watch(%r|^test/test_helper\.rb|) do
11
+ "test"
12
+ end
13
+ end
14
+
15
+ guard 'markdown', :convert_on_start => true do
16
+ watch ('README.md') { "./README.md|./README.html" }
17
+ end
18
+
19
+ guard 'livereload' do
20
+ watch('README.html')
21
+ end
22
+
23
+ if File.exists?('Guardfile.local')
24
+ instance_eval File.read('Guardfile.local')
25
+ end
26
+
data/MIT-LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Todd Eichel <todd@toddeichel.com> and Zoocasa, Brokerage <code@zoocasa.com>
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,118 @@
1
+ # Webhookr::Recurly
2
+
3
+ [![Build Status](https://travis-ci.org/tfe/webhookr-recurly.png?branch=master)](https://travis-ci.org/tfe/webhookr-recurly)
4
+ [![Dependency Status](https://gemnasium.com/tfe/webhookr-recurly.png)](https://gemnasium.com/tfe/webhookr-recurly)
5
+ [![Code Climate](https://codeclimate.com/github/tfe/webhookr-recurly.png)](https://codeclimate.com/github/tfe/webhookr-recurly)
6
+
7
+ This gem is a plugin for [Webhookr](https://github.com/zoocasa/webhookr) that enables
8
+ your application to accept [webhooks from Recurly](https://docs.recurly.com/push-notifications).
9
+
10
+ ## Installation
11
+
12
+ Add this line to your application's Gemfile:
13
+
14
+ gem 'webhookr-recurly'
15
+
16
+ Or install it yourself:
17
+
18
+ $ gem install webhookr-recurly
19
+
20
+ ## Usage
21
+
22
+ Once you have the gem installed run the generator to add the code to your initializer.
23
+ An initializer will be created if you do not have one.
24
+
25
+ ```console
26
+ rails g webhookr:recurly:init *initializer_name* -s
27
+ ```
28
+
29
+ Run the generator to create an example file to handle Recurly webhooks.
30
+
31
+ ```console
32
+ rails g webhookr:recurly:example_hooks
33
+ ```
34
+
35
+ Or create a Recurly handler class for any event that you want to handle. For example
36
+ to handle unsubscribes you would create a class as follows:
37
+
38
+ ```ruby
39
+ class RecurlyHooks
40
+ def canceled_subscription_notification(incoming)
41
+ # Your custom logic goes here.
42
+ User.sync_recurly_subscription(incoming.payload.account.account_code)
43
+ end
44
+ end
45
+ ```
46
+
47
+ For a complete list of events, and the payload format, see below.
48
+
49
+ Edit config/initializers/*initializer_name* and change the commented line to point to
50
+ your custom Recurly event handling class. If your class was called *RecurlyHooks*
51
+ the configuration line would look like this:
52
+
53
+ ```ruby
54
+ Webhookr::Recurly::Adapter.config.callback = RecurlyHooks
55
+ ```
56
+
57
+ To see the list of Recurly URLs for your application can use when you configure
58
+ Recurly webhooks (https://[yoursite].recurly.com/configuration/notifications),
59
+ run the provided webhookr rake task:
60
+
61
+ ```console
62
+ rake webhookr:services
63
+ ```
64
+
65
+ Example output:
66
+
67
+ ```console
68
+ recurly:
69
+ GET /webhookr/events/recurly/19xl64emxvn
70
+ POST /webhookr/events/recurly/19xl64emxvn
71
+ ```
72
+
73
+ ## Recurly Events & Payload
74
+
75
+ ### Events
76
+
77
+ All webhook events are supported. For further information on events, see the
78
+ [Recurly documentation](https://docs.recurly.com/api/push-notifications).
79
+
80
+ ### Payload
81
+
82
+ The payload is the full payload data from as per the [Recurly
83
+ documentation](https://docs.recurly.com/api/push-notifications), converted to an
84
+ OpenStruct for ease of access. Examples for the subscription canceled webhook:
85
+
86
+ ```ruby
87
+ incoming.payload.account.account_code
88
+ incoming.payload.account.email
89
+ incoming.payload.subscription.state
90
+ incoming.payload.subscription.canceled_at
91
+ incoming.payload.subscription.expires_at
92
+ incoming.payload.subscription.plan.plan_code
93
+ incoming.payload.subscription.plan.name
94
+ ```
95
+
96
+ ### Versioning
97
+ This library aims to adhere to [Semantic Versioning 2.0.0](http://semver.org/). Violations of this scheme should be reported as
98
+ bugs. Specifically, if a minor or patch version is released that breaks backward compatibility, that
99
+ version should be immediately yanked and/or a new version should be immediately released that restores
100
+ compatibility. Breaking changes to the public API will only be introduced with new major versions. As a
101
+ result of this policy, once this gem reaches a 1.0 release, you can (and should) specify a dependency on
102
+ this gem using the [Pessimistic Version Constraint](http://docs.rubygems.org/read/chapter/16#page74) with
103
+ two digits of precision. For example:
104
+
105
+ spec.add_dependency 'webhookr-recurly', '~> 1.0'
106
+
107
+ While this gem is currently a 0.x release, suggestion is to require the exact version that works for your code:
108
+
109
+ spec.add_dependency 'webhookr-recurly', '0.1'
110
+
111
+ ## License
112
+
113
+ webhookr-recurly is released under the [MIT license](http://www.opensource.org/licenses/MIT).
114
+
115
+ ## Authors
116
+
117
+ * [Todd Eichel](https://github.com/tfe)
118
+ * [Gerry Power](https://github.com/gerrypower)
data/Rakefile ADDED
@@ -0,0 +1,51 @@
1
+
2
+ # -*- ruby -*-
3
+
4
+ require 'rubygems'
5
+ require 'rubygems/package_task'
6
+ require 'rake/testtask'
7
+ require 'rdoc/task'
8
+ require 'bundler/gem_tasks'
9
+
10
+ $:.push File.expand_path(File.dirname(__FILE__), 'lib')
11
+
12
+ version = Webhookr::Recurly::VERSION
13
+
14
+ desc 'Test Webhookr Recurly'
15
+ Rake::TestTask.new(:test) do |t|
16
+ t.test_files = FileList['test/**/*_tests.rb']
17
+ t.verbose = !!ENV['VERBOSE_TESTS']
18
+ t.warning = !!ENV['WARNINGS']
19
+ end
20
+
21
+ desc 'Build docs'
22
+ Rake::RDocTask.new do |t|
23
+ t.main = 'README.md'
24
+ t.title = "Webhookr Recurly #{version}"
25
+ t.rdoc_dir = 'doc'
26
+ t.rdoc_files.include('README.md', 'MIT-LICENSE', 'lib/**/*.rb')
27
+ end
28
+
29
+ namespace :webhookr do
30
+ namespace:test do
31
+ desc 'Install gems in all Rubies'
32
+ task :install do
33
+ sh %{rbenv each -v bundle install}
34
+ end
35
+
36
+ desc 'Test with all Rubies'
37
+ task :test_versions do
38
+ sh %{rbenv each -v bundle exec rake test}
39
+ end
40
+
41
+ desc 'Update rails'
42
+ task :update_rails do
43
+ sh %{rbenv each -v bundle update rails}
44
+ end
45
+
46
+ desc 'Install and test all'
47
+ task :all => [:install, :test_versions]
48
+ end
49
+ end
50
+
51
+ task :default => :test
@@ -0,0 +1,16 @@
1
+ module Webhookr
2
+ module Recurly
3
+ module Generators
4
+
5
+ class ExampleHooksGenerator < Rails::Generators::Base
6
+ source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
7
+
8
+ desc "Creates an example Recurly hook file: 'app/models/recurly_hooks.rb'"
9
+ def example_hooks
10
+ copy_file( "recurly_hooks.rb", "app/models/recurly_hooks.rb")
11
+ end
12
+ end
13
+
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ require 'generators/webhookr/init_generator'
2
+
3
+ module Webhookr
4
+ module Recurly
5
+ module Generators
6
+ class InitGenerator < Webhookr::Generators::InitGenerator
7
+
8
+ desc "This generator updates the named initializer with Recurly options"
9
+ def init
10
+ super
11
+ append_to_file "config/initializers/#{file_name}.rb" do
12
+ plugin_initializer_text
13
+ end
14
+ end
15
+
16
+ def plugin_initializer_text
17
+ "\nWebhookr::Recurly::Adapter.config.security_token = '#{generate_security_token}'" +
18
+ "\n# Uncomment the next line to include your custom Recurly handler\n" +
19
+ "# <-- Webhookr::Recurly::Adapter.config.callback = your_custom_class --> \n"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,16 @@
1
+ class RecurlyHooks
2
+
3
+ # All 'on_' handlers are optional. Omit any you do not require.
4
+
5
+ def on_canceled_subscription_notification(incoming)
6
+ payload = incoming.payload
7
+ # puts payload.account.account_code
8
+ # puts payload.account.email
9
+ # puts payload.subscription.state
10
+ # puts payload.subscription.canceled_at
11
+ # puts payload.subscription.expires_at
12
+ # puts payload.subscription.plan.plan_code
13
+ # puts payload.subscription.plan.name
14
+ end
15
+
16
+ end
@@ -0,0 +1,54 @@
1
+ require "webhookr"
2
+ require "webhookr-recurly/version"
3
+ require "active_support/core_ext/module/attribute_accessors"
4
+ require "webhookr/ostruct_utils"
5
+
6
+ module Webhookr
7
+ module Recurly
8
+ class Adapter
9
+ SERVICE_NAME = 'recurly'
10
+
11
+ include Webhookr::Services::Adapter::Base
12
+
13
+ def self.process(raw_response)
14
+ new.process(raw_response)
15
+ end
16
+
17
+ def process(raw_response)
18
+ response = parse(raw_response)
19
+ event_type, payload = response.first
20
+ Webhookr::AdapterResponse.new(
21
+ SERVICE_NAME,
22
+ event_type,
23
+ OstructUtils.to_ostruct(payload)
24
+ )
25
+ end
26
+
27
+ private
28
+
29
+ def parse(raw_response)
30
+ assert_valid_packet(
31
+ Hash.from_xml(raw_response)
32
+ )
33
+ end
34
+
35
+ def assert_valid_packet(parsed_response)
36
+ raise(Webhookr::InvalidPayloadError,
37
+ "Missing data"
38
+ ) unless parsed_response.present?
39
+
40
+ raise(Webhookr::InvalidPayloadError,
41
+ "Missing event key in packet"
42
+ ) unless parsed_response.keys.first.present?
43
+
44
+ raise(Webhookr::InvalidPayloadError,
45
+ "No data in the response"
46
+ ) unless parsed_response[parsed_response.keys.first].present?
47
+
48
+ parsed_response
49
+ end
50
+
51
+ end
52
+
53
+ end
54
+ end
@@ -0,0 +1,5 @@
1
+ module Webhookr
2
+ module Recurly
3
+ VERSION = "0.1"
4
+ end
5
+ end
@@ -0,0 +1,24 @@
1
+
2
+ $: << File.join(File.dirname(__FILE__), %w{ .. .. .. })
3
+ require 'test_helper'
4
+ require 'generators/webhookr/recurly/example_hooks_generator'
5
+
6
+ class ExampleHooksGeneratorTests < Rails::Generators::TestCase
7
+ tests Webhookr::Recurly::Generators::ExampleHooksGenerator
8
+ destination File.expand_path("../../../tmp", File.dirname(__FILE__))
9
+ setup :prepare_destination
10
+
11
+ def setup
12
+ run_generator
13
+ end
14
+
15
+ test "it should create the example hook file" do
16
+ assert_file "app/models/recurly_hooks.rb"
17
+ end
18
+
19
+ test "it should on handlers" do
20
+ assert_file "app/models/recurly_hooks.rb" do |content|
21
+ assert_match(%r{on_canceled_subscription_notification}m, content)
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,26 @@
1
+
2
+ $: << File.join(File.dirname(__FILE__), %w{ .. .. .. })
3
+ require 'test_helper'
4
+ require 'generators/webhookr/recurly/init_generator'
5
+
6
+ class InitGeneratorTests < Rails::Generators::TestCase
7
+ tests Webhookr::Recurly::Generators::InitGenerator
8
+ destination File.expand_path("../../../tmp", File.dirname(__FILE__))
9
+ setup :prepare_destination
10
+
11
+ def setup
12
+ @name = "test_initializer"
13
+ @initializer = "config/initializers/#{@name}.rb"
14
+ run_generator Array.wrap(@name)
15
+ end
16
+
17
+ test "it should create the initializer" do
18
+ assert_file @initializer
19
+ end
20
+
21
+ test "it should have authorization information" do
22
+ assert_file @initializer do |content|
23
+ assert_match(%r{Webhookr::Recurly::Adapter\.config\.security_token}, content)
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,18 @@
1
+ require 'simplecov'
2
+ SimpleCov.start
3
+
4
+ require 'minitest/autorun'
5
+ require 'minitest/reporters'
6
+ require 'rails'
7
+ require "rails/generators/test_case"
8
+ require File.expand_path('../../lib/webhookr-recurly.rb', __FILE__)
9
+
10
+ if RUBY_VERSION >= "1.9"
11
+ MiniTest::Reporters.use!(MiniTest::Reporters::SpecReporter.new)
12
+ end
13
+
14
+ puts "Webhookr #{Webhookr::VERSION}"
15
+ puts "Webhookr::Recurly #{Webhookr::Recurly::VERSION}"
16
+ puts "Rails #{Rails::VERSION::STRING}"
17
+ puts "Ruby #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL} - #{RbConfig::CONFIG['RUBY_INSTALL_NAME']}"
18
+
@@ -0,0 +1,8 @@
1
+ $: << File.join(File.dirname(__FILE__), %w{ .. .. })
2
+ require 'test_helper'
3
+
4
+ describe Webhookr::Recurly do
5
+ it "must be defined" do
6
+ Webhookr::Recurly::VERSION.wont_be_nil
7
+ end
8
+ end
@@ -0,0 +1,123 @@
1
+
2
+ $: << File.join(File.dirname(__FILE__), "..")
3
+ require 'test_helper'
4
+
5
+ describe Webhookr::Recurly::Adapter do
6
+
7
+ before do
8
+ @valid_response = <<-XML
9
+ <?xml version="1.0" encoding="UTF-8"?>
10
+ <canceled_subscription_notification>
11
+ <account>
12
+ <account_code>1</account_code>
13
+ <username nil="true"></username>
14
+ <email>verena@example.com</email>
15
+ <first_name>Verena</first_name>
16
+ <last_name>Example</last_name>
17
+ <company_name nil="true"></company_name>
18
+ </account>
19
+ <subscription>
20
+ <plan>
21
+ <plan_code>1dpt</plan_code>
22
+ <name>Subscription One</name>
23
+ </plan>
24
+ <uuid>dccd742f4710e78515714d275839f891</uuid>
25
+ <state>canceled</state>
26
+ <quantity type="integer">1</quantity>
27
+ <total_amount_in_cents type="integer">200</total_amount_in_cents>
28
+ <activated_at type="datetime">2010-09-23T22:05:03Z</activated_at>
29
+ <canceled_at type="datetime">2010-09-23T22:05:43Z</canceled_at>
30
+ <expires_at type="datetime">2010-09-24T22:05:03Z</expires_at>
31
+ <current_period_started_at type="datetime">2010-09-23T22:05:03Z</current_period_started_at>
32
+ <current_period_ends_at type="datetime">2010-09-24T22:05:03Z</current_period_ends_at>
33
+ <trial_started_at nil="true" type="datetime"></trial_started_at>
34
+ <trial_ends_at nil="true" type="datetime"></trial_ends_at>
35
+ <collection_method>automatic</collection_method>
36
+ </subscription>
37
+ </canceled_subscription_notification>
38
+ XML
39
+ end
40
+
41
+ describe "class" do
42
+
43
+ subject { Webhookr::Recurly::Adapter }
44
+
45
+ it "must support process" do
46
+ subject.must_respond_to(:process)
47
+ end
48
+
49
+ it "should not return an error for a valid payload" do
50
+ lambda {
51
+ subject.process(@valid_response)
52
+ }.must_be_silent
53
+ end
54
+
55
+ end
56
+
57
+ describe "instance" do
58
+ subject { Webhookr::Recurly::Adapter.new }
59
+
60
+ it "should not return an error for a valid packet" do
61
+ lambda {
62
+ subject.process(@valid_response)
63
+ }.must_be_silent
64
+ end
65
+
66
+ it "should raise Webhookr::InvalidPayloadError for no data" do
67
+ lambda {
68
+ subject.process("")
69
+ }.must_raise(Webhookr::InvalidPayloadError)
70
+ end
71
+
72
+ it "should raise Webhookr::InvalidPayloadError for a missing event type" do
73
+ lambda {
74
+ subject.process("<canceled_subscription_notification />")
75
+ }.must_raise(Webhookr::InvalidPayloadError)
76
+ end
77
+
78
+ it "should raise Webhookr::InvalidPayloadError for a missing payload" do
79
+ lambda {
80
+ subject.process("<canceled_subscription_notification />")
81
+ }.must_raise(Webhookr::InvalidPayloadError)
82
+ end
83
+
84
+ end
85
+
86
+ describe "response" do
87
+ before do
88
+ @adapter = Webhookr::Recurly::Adapter.new
89
+ end
90
+
91
+ subject { @adapter.process(@valid_response) }
92
+
93
+ it "must respond to service_name" do
94
+ subject.must_respond_to(:service_name)
95
+ end
96
+
97
+ it "should return the correct service name" do
98
+ assert_equal(Webhookr::Recurly::Adapter::SERVICE_NAME, subject.service_name)
99
+ end
100
+
101
+ it "must respond to event_type" do
102
+ subject.must_respond_to(:event_type)
103
+ end
104
+
105
+ it "should return the correct event type" do
106
+ assert_equal("canceled_subscription_notification", subject.event_type)
107
+ end
108
+
109
+ it "must respond to payload" do
110
+ subject.must_respond_to(:payload)
111
+ end
112
+
113
+ it "should return the correct data" do
114
+ assert_equal("canceled", subject.payload.subscription.state)
115
+ end
116
+
117
+ it "should return nested data correctly" do
118
+ assert_equal("Subscription One", subject.payload.subscription.plan.name)
119
+ end
120
+
121
+ end
122
+
123
+ end
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'webhookr-recurly/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "webhookr-recurly"
8
+ gem.version = Webhookr::Recurly::VERSION
9
+ gem.required_rubygems_version = Gem::Requirement.new(">= 0") if gem.respond_to? :required_rubygems_version=
10
+ gem.authors = ["Todd Eichel", "Gerry Power"]
11
+ gem.email = ["todd@toddeichel.com", "code@zoocasa.com"]
12
+ gem.description = "A webhookr extension to support Recurly webhooks."
13
+ gem.summary = gem.description
14
+
15
+ gem.files = `git ls-files`.split($\)
16
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
17
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
+ gem.homepage = "http://github.com/tfe/webhookr-recurly"
19
+ gem.require_paths = ["lib"]
20
+
21
+ gem.add_dependency("webhookr")
22
+ gem.add_dependency("activesupport", [">= 3.1"])
23
+ end
24
+
metadata ADDED
@@ -0,0 +1,96 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: webhookr-recurly
3
+ version: !ruby/object:Gem::Version
4
+ version: '0.1'
5
+ platform: ruby
6
+ authors:
7
+ - Todd Eichel
8
+ - Gerry Power
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2014-09-18 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: webhookr
16
+ requirement: !ruby/object:Gem::Requirement
17
+ requirements:
18
+ - - ">="
19
+ - !ruby/object:Gem::Version
20
+ version: '0'
21
+ type: :runtime
22
+ prerelease: false
23
+ version_requirements: !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: activesupport
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '3.1'
35
+ type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '3.1'
42
+ description: A webhookr extension to support Recurly webhooks.
43
+ email:
44
+ - todd@toddeichel.com
45
+ - code@zoocasa.com
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - ".gitignore"
51
+ - ".travis.yml"
52
+ - Gemfile
53
+ - Guardfile
54
+ - MIT-LICENSE
55
+ - README.md
56
+ - Rakefile
57
+ - lib/generators/webhookr/recurly/example_hooks_generator.rb
58
+ - lib/generators/webhookr/recurly/init_generator.rb
59
+ - lib/generators/webhookr/recurly/templates/recurly_hooks.rb
60
+ - lib/webhookr-recurly.rb
61
+ - lib/webhookr-recurly/version.rb
62
+ - test/generators/webhookr/recurly/example_hooks_generator_tests.rb
63
+ - test/generators/webhookr/recurly/init_generator_tests.rb
64
+ - test/test_helper.rb
65
+ - test/unit/webhookr-recurly/version_tests.rb
66
+ - test/unit/webhookr-recurly_tests.rb
67
+ - webhookr-recurly.gemspec
68
+ homepage: http://github.com/tfe/webhookr-recurly
69
+ licenses: []
70
+ metadata: {}
71
+ post_install_message:
72
+ rdoc_options: []
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: '0'
80
+ required_rubygems_version: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: '0'
85
+ requirements: []
86
+ rubyforge_project:
87
+ rubygems_version: 2.2.2
88
+ signing_key:
89
+ specification_version: 4
90
+ summary: A webhookr extension to support Recurly webhooks.
91
+ test_files:
92
+ - test/generators/webhookr/recurly/example_hooks_generator_tests.rb
93
+ - test/generators/webhookr/recurly/init_generator_tests.rb
94
+ - test/test_helper.rb
95
+ - test/unit/webhookr-recurly/version_tests.rb
96
+ - test/unit/webhookr-recurly_tests.rb