fellowshipone 0.0.1 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +40 -0
- data/README.md +32 -0
- data/Rakefile +8 -0
- data/fellowshipone.gemspec +29 -0
- data/lib/fellowshipone.rb +1 -0
- data/lib/fellowshipone/client.rb +79 -0
- data/lib/fellowshipone/resources/communication.rb +15 -0
- data/lib/fellowshipone/resources/contribution.rb +23 -0
- data/lib/fellowshipone/resources/fund.rb +15 -0
- data/lib/fellowshipone/resources/household.rb +15 -0
- data/lib/fellowshipone/resources/person.rb +27 -0
- data/test/person/person_test.rb +7 -0
- data/test/test_helper.rb +9 -0
- data/tester.rb +65 -0
- metadata +22 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 25789b93d29e2e2ff020d0d59416f2fbdb4170ce
|
4
|
+
data.tar.gz: 611838d2c6c8012bc1347f225bd72a7fd8f23205
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 62946546cdaf3b85f1dc0b09f2865ae1db64db0597ad6a5b41a39f2e91364654f78035bbaeb383d8bcdfbee889ee8375d122ea4aaa2c3f2855393278238c3433
|
7
|
+
data.tar.gz: 7db31d942950435790a4c7a93e4ef809a59402cca592be9948e45a20f0a1ab2bea13a0524026478b0960b7a15ab1b97e3f37a148e79cb30ab1567042ef81d808
|
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
fellowshipone-*.gem
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
fellowshipone (1.0.0)
|
5
|
+
faraday
|
6
|
+
faraday_middleware
|
7
|
+
json
|
8
|
+
simple_oauth
|
9
|
+
|
10
|
+
GEM
|
11
|
+
remote: http://rubygems.org/
|
12
|
+
specs:
|
13
|
+
addressable (2.3.7)
|
14
|
+
crack (0.4.2)
|
15
|
+
safe_yaml (~> 1.0.0)
|
16
|
+
faraday (0.9.1)
|
17
|
+
multipart-post (>= 1.2, < 3)
|
18
|
+
faraday_middleware (0.9.1)
|
19
|
+
faraday (>= 0.7.4, < 0.10)
|
20
|
+
json (1.8.2)
|
21
|
+
minitest (5.5.1)
|
22
|
+
multipart-post (2.0.0)
|
23
|
+
rake (10.4.2)
|
24
|
+
safe_yaml (1.0.4)
|
25
|
+
simple_oauth (0.3.1)
|
26
|
+
vcr (2.9.3)
|
27
|
+
webmock (1.20.4)
|
28
|
+
addressable (>= 2.3.6)
|
29
|
+
crack (>= 0.3.2)
|
30
|
+
|
31
|
+
PLATFORMS
|
32
|
+
ruby
|
33
|
+
|
34
|
+
DEPENDENCIES
|
35
|
+
bundler
|
36
|
+
fellowshipone!
|
37
|
+
minitest
|
38
|
+
rake
|
39
|
+
vcr
|
40
|
+
webmock
|
data/README.md
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# FellowshipOne API
|
2
|
+
|
3
|
+
A Ruby wrapper for the FellowshipOne API (https://developer.fellowshipone.com/)
|
4
|
+
|
5
|
+
|
6
|
+
## Install / Setup
|
7
|
+
|
8
|
+
Installing the gem
|
9
|
+
|
10
|
+
gem install fellowshipone
|
11
|
+
|
12
|
+
|
13
|
+
To add it to your Gemfile
|
14
|
+
|
15
|
+
gem 'fellowshipone', require: 'fellowshipone'
|
16
|
+
|
17
|
+
## Additional resources
|
18
|
+
|
19
|
+
* FellowshipOne API: https://developer.fellowshipone.com/docs/
|
20
|
+
* FellowshipOne Forum: https://developer.fellowshipone.com/forum/
|
21
|
+
|
22
|
+
|
23
|
+
## License
|
24
|
+
|
25
|
+
This project is released under the MIT license (see LICENSE).
|
26
|
+
|
27
|
+
This project is maintained by Taylor Brooks (https://github.com/taylorbrooks).
|
28
|
+
|
29
|
+
|
30
|
+
## Want to Contribute?
|
31
|
+
|
32
|
+
If you would like to get involved in this project, then please fork the project. Make changes, add features, write some tests, and then send a pull request.
|
data/Rakefile
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
$:.push File.expand_path("../lib", __FILE__)
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'fellowshipone'
|
5
|
+
s.version = '1.0.0'
|
6
|
+
s.authors = ['Taylor Brooks']
|
7
|
+
s.email = ['tbrooks@gmail.com']
|
8
|
+
s.homepage = 'https://github.com/taylorbrooks/fellowshipone'
|
9
|
+
|
10
|
+
s.summary = 'Ruby gem/plugin to interact with the FellowshipOne API (https://developer.fellowshipone.com/).'
|
11
|
+
s.description = 'Ruby gem/plugin to interact with the FellowshipOne API (https://developer.fellowshipone.com/). Checkout the project on github for more detail.'
|
12
|
+
s.license = 'MIT'
|
13
|
+
|
14
|
+
s.add_development_dependency "bundler"
|
15
|
+
s.add_development_dependency "rake"
|
16
|
+
s.add_development_dependency "minitest"
|
17
|
+
s.add_development_dependency "vcr"
|
18
|
+
s.add_development_dependency "webmock"
|
19
|
+
|
20
|
+
s.add_runtime_dependency "faraday"
|
21
|
+
s.add_runtime_dependency "faraday_middleware"
|
22
|
+
s.add_runtime_dependency "simple_oauth"
|
23
|
+
s.add_runtime_dependency "json"
|
24
|
+
|
25
|
+
s.files = `git ls-files`.split("\n").delete_if { |f| !(f =~ /^examples/).nil? }
|
26
|
+
s.test_files = `git ls-files -- {test,features}/*`.split("\n")
|
27
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
28
|
+
s.require_paths = ["lib"]
|
29
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative 'fellowshipone/client.rb'
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require 'faraday'
|
2
|
+
require 'faraday_middleware'
|
3
|
+
require 'simple_oauth'
|
4
|
+
require 'json'
|
5
|
+
|
6
|
+
Dir[File.expand_path('../resources/*.rb', __FILE__)].each{|f| require f}
|
7
|
+
|
8
|
+
module Fellowshipone
|
9
|
+
class Client
|
10
|
+
include Fellowshipone::Client::Communication
|
11
|
+
include Fellowshipone::Client::Contribution
|
12
|
+
include Fellowshipone::Client::Fund
|
13
|
+
include Fellowshipone::Client::Household
|
14
|
+
include Fellowshipone::Client::Person
|
15
|
+
|
16
|
+
attr_reader :church_code, :consumer_key, :consumer_secret, :token, :secret
|
17
|
+
|
18
|
+
def initialize(church_code, consumer_key, consumer_secret, token, secret)
|
19
|
+
@church_code = church_code
|
20
|
+
@consumer_key = consumer_key
|
21
|
+
@consumer_secret = consumer_secret
|
22
|
+
@token = token
|
23
|
+
@secret = secret
|
24
|
+
end
|
25
|
+
|
26
|
+
def get(path, options={})
|
27
|
+
connection.get do |req|
|
28
|
+
req.url(path, options)
|
29
|
+
end.body
|
30
|
+
end
|
31
|
+
|
32
|
+
def post(path, req_body)
|
33
|
+
connection.post do |req|
|
34
|
+
req.url(path)
|
35
|
+
req.body = req_body
|
36
|
+
end.body
|
37
|
+
end
|
38
|
+
|
39
|
+
def put(url, options = {})
|
40
|
+
connection.put do |req|
|
41
|
+
req.url path
|
42
|
+
end.body
|
43
|
+
end
|
44
|
+
|
45
|
+
def delete(url, options = {})
|
46
|
+
connection.delete do |req|
|
47
|
+
req.url path
|
48
|
+
end.body
|
49
|
+
end
|
50
|
+
|
51
|
+
def save
|
52
|
+
connection.put do |req|
|
53
|
+
req.url path
|
54
|
+
end.body
|
55
|
+
end
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
def connection
|
60
|
+
Faraday.new(url: "https://#{church_code}.fellowshiponeapi.com", headers: { accept: 'application/json' }) do |connection|
|
61
|
+
connection.request :json
|
62
|
+
connection.request :oauth, oauth_data
|
63
|
+
connection.response :logger
|
64
|
+
connection.use FaradayMiddleware::Mashify
|
65
|
+
connection.response :json
|
66
|
+
connection.adapter Faraday.default_adapter
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def oauth_data
|
71
|
+
{
|
72
|
+
consumer_key: consumer_key,
|
73
|
+
consumer_secret: consumer_secret,
|
74
|
+
token: token,
|
75
|
+
token_secret: secret
|
76
|
+
}
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module Fellowshipone
|
2
|
+
class Client
|
3
|
+
module Communication
|
4
|
+
|
5
|
+
def new_communication(person_id)
|
6
|
+
get("/v1/People/#{person_id}/Communications/new.json")
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_communication(person_id, json_body)
|
10
|
+
post("/v1/People/#{person_id}/Communications.json", json_body)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Fellowshipone
|
2
|
+
class Client
|
3
|
+
module Contribution
|
4
|
+
|
5
|
+
def contributions
|
6
|
+
|
7
|
+
end
|
8
|
+
|
9
|
+
def get_contribution(id)
|
10
|
+
get("/giving/v1/contributionreceipts/#{id}.json")
|
11
|
+
end
|
12
|
+
|
13
|
+
def new_contribution
|
14
|
+
get("/giving/v1/contributionreceipts/new.json")
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_contribution(contribution_params)
|
18
|
+
post("/giving/v1/contributionreceipts.json", contribution_params)
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module Fellowshipone
|
2
|
+
class Client
|
3
|
+
module Person
|
4
|
+
|
5
|
+
def list_people(attrs={})
|
6
|
+
get('/v1/People/Search.json', attrs)
|
7
|
+
end
|
8
|
+
|
9
|
+
def find_person(id)
|
10
|
+
get("/v1/People/#{id}")
|
11
|
+
end
|
12
|
+
|
13
|
+
def new_person
|
14
|
+
get("/v1/People/new.json")
|
15
|
+
end
|
16
|
+
|
17
|
+
def create_person(person_params)
|
18
|
+
post("/v1/People.json", person_params.to_json)
|
19
|
+
end
|
20
|
+
|
21
|
+
def search_for_person(name, email)
|
22
|
+
get("/v1/People/Search.json?searchfor=#{name}&communication=#{email}").results
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/test/test_helper.rb
ADDED
data/tester.rb
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
token = ""
|
2
|
+
secret = ""
|
3
|
+
church_code = ""
|
4
|
+
|
5
|
+
@client ||= FellowshipOne::Client.new(token, secret, church_code)
|
6
|
+
|
7
|
+
find_or_create_fellowship_person
|
8
|
+
contribution = build_fellowship_contribution
|
9
|
+
|
10
|
+
@donation.refs = {"f1_id" => contribution.id}
|
11
|
+
raise
|
12
|
+
@donation.save
|
13
|
+
|
14
|
+
def find_or_create_fellowship_person
|
15
|
+
people = @client.search_for_person({name: "taylor", email: "tbrooks@gmail"})
|
16
|
+
|
17
|
+
if people.count == 0
|
18
|
+
@donor = build_fellowship_person
|
19
|
+
build_fellowship_email
|
20
|
+
else
|
21
|
+
@donor = people.first
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def build_fellowship_person
|
26
|
+
household = @client.new_household
|
27
|
+
household.household_name = "Taylor Brooks"
|
28
|
+
@client.save_household(household)
|
29
|
+
|
30
|
+
donor = @client.new_person
|
31
|
+
donor.household_id = household.id.to_s
|
32
|
+
donor.id = ''
|
33
|
+
donor.household_member_type['@id'] = '1'
|
34
|
+
donor.status['@id'] = '6' # Contributor Only
|
35
|
+
donor.first_name = "Taylor"
|
36
|
+
donor.last_name = "Brooks"
|
37
|
+
@client.create_person(donor)
|
38
|
+
end
|
39
|
+
|
40
|
+
def build_fellowship_email
|
41
|
+
communication = @client.new_communication(@donor.id)
|
42
|
+
communication.communication_type['@id'] = '4'
|
43
|
+
communication.communication_type['name'] = 'Email'
|
44
|
+
communication.communication_general_type = 'Email'
|
45
|
+
communication.preferred = 'true'
|
46
|
+
communication.communication_value = @customer.email
|
47
|
+
communication.search_communication_value = @customer.email
|
48
|
+
@client.create_communicate(@donor.id, communication.id, communication)
|
49
|
+
end
|
50
|
+
|
51
|
+
def build_fellowship_contribution
|
52
|
+
contribution = @client.new_contribution
|
53
|
+
contribution.amount = @donation.gross_amount/100.00
|
54
|
+
|
55
|
+
contribution.fund['@id'] = @donation.fund.settings['fellowship_fund_id']
|
56
|
+
|
57
|
+
contribution.household['@id'] = @donor.household_id
|
58
|
+
contribution.received_date = @donation.created_at.iso8601 # Needs to be this format
|
59
|
+
contribution.contribution_type['@id'] = @donation.payment_type == 'bank account' ? 5 : 3 # 3 - Credit Card, 5 - ACH
|
60
|
+
|
61
|
+
contribution.memo = "Simple Donation - #{@donation.id}"
|
62
|
+
|
63
|
+
contribution.address_verification = false
|
64
|
+
@client.create_contribution(contribution)
|
65
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fellowshipone
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Taylor Brooks
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-04-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -143,7 +143,23 @@ email:
|
|
143
143
|
executables: []
|
144
144
|
extensions: []
|
145
145
|
extra_rdoc_files: []
|
146
|
-
files:
|
146
|
+
files:
|
147
|
+
- .gitignore
|
148
|
+
- Gemfile
|
149
|
+
- Gemfile.lock
|
150
|
+
- README.md
|
151
|
+
- Rakefile
|
152
|
+
- fellowshipone.gemspec
|
153
|
+
- lib/fellowshipone.rb
|
154
|
+
- lib/fellowshipone/client.rb
|
155
|
+
- lib/fellowshipone/resources/communication.rb
|
156
|
+
- lib/fellowshipone/resources/contribution.rb
|
157
|
+
- lib/fellowshipone/resources/fund.rb
|
158
|
+
- lib/fellowshipone/resources/household.rb
|
159
|
+
- lib/fellowshipone/resources/person.rb
|
160
|
+
- test/person/person_test.rb
|
161
|
+
- test/test_helper.rb
|
162
|
+
- tester.rb
|
147
163
|
homepage: https://github.com/taylorbrooks/fellowshipone
|
148
164
|
licenses:
|
149
165
|
- MIT
|
@@ -168,4 +184,6 @@ rubygems_version: 2.0.14
|
|
168
184
|
signing_key:
|
169
185
|
specification_version: 4
|
170
186
|
summary: Ruby gem/plugin to interact with the FellowshipOne API (https://developer.fellowshipone.com/).
|
171
|
-
test_files:
|
187
|
+
test_files:
|
188
|
+
- test/person/person_test.rb
|
189
|
+
- test/test_helper.rb
|