church_community_builder 0.0.17 → 0.0.18

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: ac8cb1f3c8dcdde296931d91d15191437158955c
4
- data.tar.gz: 5665def88a2182f8254c4014aed3b0f97c092b7c
2
+ SHA256:
3
+ metadata.gz: 401251c8b4bc9de5d2ae50bd6b472f1c568e4770655917ece1773e0ad3354b88
4
+ data.tar.gz: aae254e82e100a10110797a849399a0d05b681c60f76676a14e810a07fbbe9b4
5
5
  SHA512:
6
- metadata.gz: 41e6cb9de8d8201ccbd7e5243ee9067b5c06ee9cf509f0943df597b4e8856071971e08a71747bdbb27bc17d712d9f03bdc6a6ada9681e1ab420e04243a1fd29b
7
- data.tar.gz: 5d928928c06108c48661ceda204a99f6a9611e40e99a33f822ccb9fa8a252aa0471f993ef4c32c9b3df3ddf50fd3be5957b09ad1d396887b8bc96aee64331ff3
6
+ metadata.gz: bc6489dea6ce7ec3f60bd2fbed429dfe158d551b85e97d32223bb0320596cd491b98c086be0d0c3720845a50afd217859c70fdd1f2f9aa2ae10f6be05fe9f103
7
+ data.tar.gz: 180ab9d7e5e1ad9ff02feed638d90eeeb1cb8ff85044d5f1080ba678e29c25e818cd69b8db9a3beeb052057b4eefd7532c4de4622ac4f615154f0581ef884f58
data/Gemfile CHANGED
@@ -1,2 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'http://rubygems.org'
2
4
  gemspec
data/Rakefile CHANGED
@@ -1,8 +1,10 @@
1
- require "bundler/gem_tasks"
2
- require "rake/testtask"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rake/testtask'
3
5
 
4
6
  Rake::TestTask.new do |t|
5
- t.pattern = "test/**/*_test.rb"
7
+ t.pattern = 'test/**/*_test.rb'
6
8
  end
7
9
 
8
10
  task default: :test
@@ -1,30 +1,34 @@
1
- $:.push File.expand_path("../lib", __FILE__)
2
- require "base64"
1
+ # frozen_string_literal: true
2
+
3
+ $:.push File.expand_path('../lib', __FILE__)
4
+ require 'base64'
3
5
 
4
6
  Gem::Specification.new do |s|
5
- s.name = "church_community_builder"
6
- s.version = "0.0.17"
7
- s.authors = ['Taylor Brooks']
8
- s.email = ["dGJyb29rc0BnbWFpbC5jb20="].map{ |e| Base64.decode64(e) }
9
- s.homepage = "https://github.com/taylorbrooks/church_community_builder"
10
-
11
- s.summary = 'Ruby gem/plugin to interact with the Church Community Builder API (https://support.churchcommunitybuilder.com/customer/portal/articles/640589-api-documentation).'
12
- s.description = 'Ruby gem/plugin to interact with the Church Community Builder API (https://support.churchcommunitybuilder.com/customer/portal/articles/640589-api-documentation). Checkout the project on github for more detail.'
7
+ s.name = 'church_community_builder'
8
+ s.version = '0.0.18'
9
+ s.authors = ['Taylor Brooks']
10
+ s.email = ['dGJyb29rc0BnbWFpbC5jb20='].map { |e| Base64.decode64(e) }
11
+ s.homepage = 'https://github.com/taylorbrooks/church_community_builder'
12
+
13
+ SUMMARY = 'Ruby gem/plugin to interact with the Church Community Builder API (https://support.churchcommunitybuilder.com/customer/portal/articles/640589-api-documentation).'
14
+
15
+ s.summary = SUMMARY
16
+ s.description = SUMMARY
13
17
  s.license = 'MIT'
14
18
 
15
- s.add_development_dependency "bundler"
16
- s.add_development_dependency "rake"
17
- s.add_development_dependency "minitest"
18
- s.add_development_dependency "vcr"
19
- s.add_development_dependency "webmock"
20
-
21
- s.add_runtime_dependency "faraday"
22
- s.add_runtime_dependency "faraday_middleware"
23
- s.add_runtime_dependency "multi_xml"
24
- s.add_runtime_dependency "addressable"
25
-
26
- s.files = `git ls-files`.split("\n").delete_if { |f| !(f =~ /^examples/).nil? }
27
- s.test_files = `git ls-files -- {test,features}/*`.split("\n")
28
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
29
- s.require_paths = ["lib"]
19
+ s.add_development_dependency 'bundler'
20
+ s.add_development_dependency 'rake'
21
+ s.add_development_dependency 'vcr'
22
+ s.add_development_dependency 'webmock'
23
+
24
+ s.add_runtime_dependency 'addressable'
25
+ s.add_runtime_dependency 'faraday'
26
+ s.add_runtime_dependency 'faraday_middleware'
27
+ s.add_runtime_dependency 'multi_xml'
28
+
29
+ s.files = `git ls-files`.split($/)
30
+ s.test_files = s.files.grep(%r{^(test)/})
31
+ s.executables = s.files.grep(%r{^bin/}).map { |f| File.basename(f) }
32
+
33
+ s.require_paths = ['lib']
30
34
  end
@@ -1 +1,4 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'church_community_builder/client'
4
+ require_relative 'church_community_builder/error'
@@ -1,11 +1,12 @@
1
- require "faraday"
2
- require "faraday_middleware"
3
- require "addressable/uri"
4
- require "json"
1
+ # frozen_string_literal: true
5
2
 
6
- Dir[File.expand_path('../resources/*.rb', __FILE__)].each{|f| require f}
7
- Dir[File.expand_path('../response/*.rb', __FILE__)].each{|f| require f}
3
+ require 'faraday'
4
+ require 'faraday_middleware'
5
+ require 'addressable/uri'
6
+ require 'json'
8
7
 
8
+ Dir[File.expand_path('../resources/*.rb', __FILE__)].each { |f| require f }
9
+ Dir[File.expand_path('../response/*.rb', __FILE__)].each { |f| require f }
9
10
 
10
11
  module ChurchCommunityBuilder
11
12
  class Client
@@ -22,29 +23,25 @@ module ChurchCommunityBuilder
22
23
  @logger = logger
23
24
  end
24
25
 
25
- def get(path)
26
- connection.get do |req|
27
- req.url(path)
28
- end.body
26
+ def get(path, options = {})
27
+ connection.get(path, options).body
29
28
  end
30
29
 
31
- def post(path, body)
32
- connection.post do |req|
33
- req.url(path)
34
- req.body = body if body
35
- end.body
30
+ def post(path, options = {})
31
+ res = connection.post(path, options).body
32
+ res
36
33
  end
37
34
 
38
35
  private
39
36
 
40
37
  def connection
41
- Faraday.new(url: "https://#{subdomain}.ccbchurch.com/api.php") do |connection|
42
- connection.basic_auth username, password
43
- connection.response :logger if logger
44
- connection.response :xml
45
- connection.adapter Faraday.default_adapter
38
+ Faraday.new(url: "https://#{subdomain}.ccbchurch.com/api.php") do |conn|
39
+ conn.basic_auth username, password
40
+ conn.response :logger if logger
41
+ conn.response :xml
42
+ conn.use FaradayMiddleware::ChurchCommunityBuilderErrorHandler
43
+ conn.adapter Faraday.default_adapter
46
44
  end
47
45
  end
48
-
49
46
  end
50
47
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module ChurchCommunityBuilder
4
+ class Error < StandardError; end
5
+ end
6
+
7
+ require 'faraday'
8
+ module FaradayMiddleware
9
+ class ChurchCommunityBuilderErrorHandler < Faraday::Response::Middleware
10
+ ERROR_STATUSES = 400..600
11
+
12
+ def on_complete(env)
13
+ case env[:status]
14
+ when ERROR_STATUSES
15
+ raise ChurchCommunityBuilder::Error, "#{env[:status]} #{env[:body]}"
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,12 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Client
3
5
  module Campus
4
-
5
6
  def list_campuses
6
- response = get("?srv=campus_list")
7
+ response = get('?srv=campus_list')
7
8
  ChurchCommunityBuilder::Campus.new(response).parse
8
9
  end
9
-
10
10
  end
11
11
  end
12
12
  end
@@ -1,7 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Client
3
5
  module Contribution
4
-
5
6
  def create_contribution(contribution_params)
6
7
  response = post("?srv=online_giving_insert_gift&#{Addressable::URI.form_encode(contribution_params)}", nil)
7
8
  ChurchCommunityBuilder::Contribution.new(response).parse
@@ -11,7 +12,6 @@ module ChurchCommunityBuilder
11
12
  response = get("?srv=transactions_by_family&family_id=#{family_id}")
12
13
  ChurchCommunityBuilder::FamilyContributions.new(response).parse
13
14
  end
14
-
15
15
  end
16
16
  end
17
17
  end
@@ -1,12 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Client
3
5
  module Fund
4
-
5
6
  def list_funds
6
- response = get("?srv=transaction_detail_type_list")
7
+ response = get('?srv=transaction_detail_type_list')
7
8
  ChurchCommunityBuilder::Fund.new(response).parse
8
9
  end
9
-
10
10
  end
11
11
  end
12
12
  end
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Client
3
5
  module Person
4
-
5
6
  def create_person(person_params)
6
- response = post("?srv=create_individual", Addressable::URI.form_encode(person_params))
7
+ response = post('?srv=create_individual', Addressable::URI.form_encode(person_params))
7
8
  ChurchCommunityBuilder::Person.new(response).parse
8
9
  end
9
10
 
@@ -12,6 +13,10 @@ module ChurchCommunityBuilder
12
13
  ChurchCommunityBuilder::Person.new(response).parse
13
14
  end
14
15
 
16
+ def search_for_person_by_id(id)
17
+ response = get("?srv=individual_profile_from_id&individual_id=#{id}")
18
+ ChurchCommunityBuilder::Person.new(response).parse
19
+ end
15
20
  end
16
21
  end
17
22
  end
@@ -1,20 +1,21 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Campus
3
5
  attr_reader :response, :campuses
4
6
 
5
7
  def initialize(response)
6
- @response = response["ccb_api"]["response"]
7
- @campuses = @response["campuses"]["campus"]
8
+ @response = response['ccb_api']['response']
9
+ @campuses = @response['campuses']['campus']
8
10
  end
9
11
 
10
12
  def parse
11
13
  @campuses.map do |campus|
12
14
  OpenStruct.new(
13
- id: campus["id"],
14
- name: campus["name"]
15
+ id: campus['id'],
16
+ name: campus['name']
15
17
  )
16
18
  end
17
19
  end
18
-
19
20
  end
20
21
  end
@@ -1,38 +1,39 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Contribution
3
5
  attr_reader :response, :contribution
4
6
 
5
7
  def initialize(response)
6
- @response = response["ccb_api"]["response"]
7
- @contribution = @response["items"]["item"]
8
+ @response = response['ccb_api']['response']
9
+ @contribution = @response['items']['item']
8
10
  end
9
11
 
10
12
  def parse
11
13
  OpenStruct.new(
12
- id: contribution["gift_id"],
13
- amount: contribution["amount"]
14
+ id: contribution['gift_id'],
15
+ amount: contribution['amount']
14
16
  )
15
17
  end
16
-
17
18
  end
18
19
 
19
20
  class FamilyContributions
20
21
  attr :transactions
21
22
 
22
23
  def initialize(response)
23
- @transactions = response["ccb_api"]["response"]["transactions"]["transaction"]
24
+ @transactions = response['ccb_api']['response']['transactions']['transaction']
24
25
  end
25
26
 
26
27
  def parse
27
28
  @transactions.map do |t|
28
29
  OpenStruct.new(
29
- id: t["id"],
30
- date: t["date"],
31
- amount: t["transaction_details"]["transaction_detail"]["amount"],
32
- fund: t["transaction_details"]["transaction_detail"]["coa"]["__content__"],
33
- note: t["transaction_details"]["transaction_detail"]["note"],
34
- person: t["individual"]["__content__"],
35
- person_id: t["individual"]["id"],
30
+ id: t['id'],
31
+ date: t['date'],
32
+ amount: t['transaction_details']['transaction_detail']['amount'],
33
+ fund: t['transaction_details']['transaction_detail']['coa']['__content__'],
34
+ note: t['transaction_details']['transaction_detail']['note'],
35
+ person: t['individual']['__content__'],
36
+ person_id: t['individual']['id']
36
37
  )
37
38
  end
38
39
  end
@@ -1,17 +1,19 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Fund
3
5
  attr_reader :response, :funds
4
6
 
5
7
  def initialize(response)
6
- @response = response["ccb_api"]["response"]
7
- @funds = @response["transaction_detail_types"]["transaction_detail_type"]
8
+ @response = response['ccb_api']['response']
9
+ @funds = @response['transaction_detail_types']['transaction_detail_type']
8
10
  end
9
11
 
10
12
  def parse
11
13
  @funds.map do |fund|
12
14
  OpenStruct.new(
13
- id: fund["id"],
14
- name: fund["name"]
15
+ id: fund['id'],
16
+ name: fund['name']
15
17
  )
16
18
  end
17
19
  end
@@ -1,32 +1,33 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module ChurchCommunityBuilder
2
4
  class Person
3
5
  attr_reader :response, :people, :count
4
6
 
5
7
  def initialize(response)
6
- @response = response["ccb_api"]["response"]
7
- @people = @response["individuals"]
8
- @count = @people["count"].to_i
8
+ @response = response['ccb_api']['response']
9
+ @people = @response['individuals']
10
+ @count = @people['count'].to_i
9
11
  end
10
12
 
11
13
  def parse
12
- return [] if count == 0 || people["individual"].nil?
14
+ return [] if count.zero? || people['individual'].nil?
13
15
 
14
- if count == 1 || people["individual"].is_a?(Hash)
15
- [hydrate(people["individual"])]
16
+ if count == 1 || people['individual'].is_a?(Hash)
17
+ [hydrate(people['individual'])]
16
18
  else
17
- people["individual"].map{|p| hydrate(p) }
19
+ people['individual'].map { |p| hydrate(p) }
18
20
  end
19
21
  end
20
22
 
21
23
  def hydrate(person)
22
24
  OpenStruct.new(
23
- id: person["id"],
24
- family_id: person["family"]["id"],
25
- first_name: person["first_name"],
26
- last_name: person["last_name"],
27
- email: person["email"],
25
+ id: person['id'],
26
+ family_id: person['family']['id'],
27
+ first_name: person['first_name'],
28
+ last_name: person['last_name'],
29
+ email: person['email']
28
30
  )
29
31
  end
30
-
31
32
  end
32
33
  end
@@ -4,6 +4,6 @@ require 'webmock/minitest'
4
4
  require 'vcr'
5
5
 
6
6
  VCR.configure do |c|
7
- c.cassette_library_dir = "test/fixtures"
7
+ c.cassette_library_dir = 'test/fixtures'
8
8
  c.hook_into :webmock
9
9
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: church_community_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Taylor Brooks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-19 00:00:00.000000000 Z
11
+ date: 2020-01-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
- - !ruby/object:Gem::Dependency
42
- name: minitest
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
41
  - !ruby/object:Gem::Dependency
56
42
  name: vcr
57
43
  requirement: !ruby/object:Gem::Requirement
@@ -81,7 +67,7 @@ dependencies:
81
67
  - !ruby/object:Gem::Version
82
68
  version: '0'
83
69
  - !ruby/object:Gem::Dependency
84
- name: faraday
70
+ name: addressable
85
71
  requirement: !ruby/object:Gem::Requirement
86
72
  requirements:
87
73
  - - ">="
@@ -95,7 +81,7 @@ dependencies:
95
81
  - !ruby/object:Gem::Version
96
82
  version: '0'
97
83
  - !ruby/object:Gem::Dependency
98
- name: faraday_middleware
84
+ name: faraday
99
85
  requirement: !ruby/object:Gem::Requirement
100
86
  requirements:
101
87
  - - ">="
@@ -109,7 +95,7 @@ dependencies:
109
95
  - !ruby/object:Gem::Version
110
96
  version: '0'
111
97
  - !ruby/object:Gem::Dependency
112
- name: multi_xml
98
+ name: faraday_middleware
113
99
  requirement: !ruby/object:Gem::Requirement
114
100
  requirements:
115
101
  - - ">="
@@ -123,7 +109,7 @@ dependencies:
123
109
  - !ruby/object:Gem::Version
124
110
  version: '0'
125
111
  - !ruby/object:Gem::Dependency
126
- name: addressable
112
+ name: multi_xml
127
113
  requirement: !ruby/object:Gem::Requirement
128
114
  requirements:
129
115
  - - ">="
@@ -137,7 +123,6 @@ dependencies:
137
123
  - !ruby/object:Gem::Version
138
124
  version: '0'
139
125
  description: Ruby gem/plugin to interact with the Church Community Builder API (https://support.churchcommunitybuilder.com/customer/portal/articles/640589-api-documentation).
140
- Checkout the project on github for more detail.
141
126
  email:
142
127
  - tbrooks@gmail.com
143
128
  executables: []
@@ -152,6 +137,7 @@ files:
152
137
  - church_community_builder.gemspec
153
138
  - lib/church_community_builder.rb
154
139
  - lib/church_community_builder/client.rb
140
+ - lib/church_community_builder/error.rb
155
141
  - lib/church_community_builder/resources/campus.rb
156
142
  - lib/church_community_builder/resources/contribution.rb
157
143
  - lib/church_community_builder/resources/fund.rb
@@ -181,8 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
181
167
  - !ruby/object:Gem::Version
182
168
  version: '0'
183
169
  requirements: []
184
- rubyforge_project:
185
- rubygems_version: 2.6.8
170
+ rubygems_version: 3.0.3
186
171
  signing_key:
187
172
  specification_version: 4
188
173
  summary: Ruby gem/plugin to interact with the Church Community Builder API (https://support.churchcommunitybuilder.com/customer/portal/articles/640589-api-documentation).