stbaldricks 4.3.2.alpha.2 → 4.3.2.alpha.3
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 +5 -5
- data/README.md +154 -0
- data/lib/stbaldricks/entities/donation.rb +32 -6
- data/lib/stbaldricks/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e7ebf05a1a594e783ea1d0a2e197218f6ed3db74ce3bbf66347fb163900f2031
|
4
|
+
data.tar.gz: 3bc73caf5de5a61ced06fc71fbc58f08fc83834c246f278f1d07d8e4d8b534bb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4395a6188163ccdcf14582c7f1d096fcf4b91e9c5f694a9752fdb3639fed40e0dcca07a4ac7bf71c2e489f26d310eb9d3dd2eb6108460078234f5d5913d91315
|
7
|
+
data.tar.gz: f218d92e2b9631a12581778d71def4fbc6a27ed6581519fb8ff60ef3a436746b1c384cbacb9c6bd3fa2d75d9c4086d2d01036c97b69590783a44e6179407ba73
|
data/README.md
ADDED
@@ -0,0 +1,154 @@
|
|
1
|
+
# St. Baldrick's Ruby SDK
|
2
|
+
|
3
|
+
### Installation
|
4
|
+
`gem install stbaldricks`
|
5
|
+
|
6
|
+
### Configuration
|
7
|
+
* The sdk is configured using environment variables.
|
8
|
+
* Required configurations:
|
9
|
+
```
|
10
|
+
API_ENDPOINT="https://stbaldricks.org/api"
|
11
|
+
API_KEY="abc123"
|
12
|
+
```
|
13
|
+
|
14
|
+
### Usage
|
15
|
+
* Require the gem
|
16
|
+
`require 'stbaldricks'`
|
17
|
+
|
18
|
+
* Configure the log level (optional)
|
19
|
+
`SBF::Client::Configuration.logger.level = ::Logger::WARN`
|
20
|
+
|
21
|
+
* **NOTE** the sdk does not raise execptions for failed requests. This is to allow for more complex logic around error scenarios.
|
22
|
+
* If you would like the client to raise errors by default you can wrap your requests in a helper
|
23
|
+
``` ruby
|
24
|
+
def request_helper
|
25
|
+
# Yield to the block to execute the request
|
26
|
+
client_response = yield
|
27
|
+
|
28
|
+
# If there was an error, raise it to the error handling block
|
29
|
+
if client_response.error?
|
30
|
+
puts "Error received from API. (code: #{client_response.http_code})"
|
31
|
+
puts JSON.pretty_generate(client_response.to_hash)
|
32
|
+
|
33
|
+
raise "Error received from API"
|
34
|
+
end
|
35
|
+
|
36
|
+
# Otherwise simply return the client data
|
37
|
+
client_response.data
|
38
|
+
end
|
39
|
+
```
|
40
|
+
|
41
|
+
#### Default Entity Actions
|
42
|
+
##### Lookup
|
43
|
+
* Use `aggregate` to perform actions like gathering the size of a data set without returning all of the rows
|
44
|
+
``` ruby
|
45
|
+
active_donation_count = request_helper {
|
46
|
+
SBF::Client::Donation.aggregate([status: :active], {id: :count})
|
47
|
+
}
|
48
|
+
puts "Beginning number of active donations: #{active_donation_count[:id]}"
|
49
|
+
```
|
50
|
+
|
51
|
+
* Use `get` to get an entity by it's id fields
|
52
|
+
``` ruby
|
53
|
+
existing_donation = request_helper { SBF::Client::Donation.get(188) }
|
54
|
+
puts "Donation: #{JSON.pretty_generate(existing_donation.to_hash)}"
|
55
|
+
```
|
56
|
+
|
57
|
+
#### Creation
|
58
|
+
* To create an entity, create the object using `new` and persist the object to the database using `save`
|
59
|
+
``` ruby
|
60
|
+
# Find a random, active user to use as the recipient
|
61
|
+
existing_participant = request_helper { SBF::Client::Participant.find({status: SBF::Client::Participant::Status::ACTIVE}) }[:results].sample
|
62
|
+
recipient = SBF::Client::Donation::PartialParticipant.new(id: existing_participant.id)
|
63
|
+
|
64
|
+
# Create a new donor profile. This will be saved at the same time as the donation
|
65
|
+
# TODO: Create HowCreated of mobile?
|
66
|
+
donor = SBF::Client::Donation::FullPerson.new(
|
67
|
+
status: SBF::Client::Person::Status::ACTIVE,
|
68
|
+
gender: SBF::Client::Person::Gender::NOT_SELECTED,
|
69
|
+
how_created: SBF::Client::Person::HowCreated::FAST_DONATION,
|
70
|
+
name_pieces: SBF::Client::NamePieces.new(
|
71
|
+
first_name: 'Foo',
|
72
|
+
last_name: 'Testerman'
|
73
|
+
),
|
74
|
+
email_addresses: {
|
75
|
+
primary: SBF::Client::EmailAddress.new(
|
76
|
+
type: SBF::Client::EmailAddress::Type::PERSONAL,
|
77
|
+
email_address: 'foo.testerman@abcd.ef'
|
78
|
+
)
|
79
|
+
},
|
80
|
+
opt_out_settings: {
|
81
|
+
email_mass_online: true
|
82
|
+
}
|
83
|
+
)
|
84
|
+
|
85
|
+
# Payment details may be provided if the charging is completed.
|
86
|
+
# Otherwise a nonce should be used which will be settled when the donation is saved
|
87
|
+
payment_details = SBF::Client::Payment::CreditCardDetails.new(
|
88
|
+
authorization_id: 'abc123',
|
89
|
+
cardholder_name: 'Foo Testerman',
|
90
|
+
card_type: 'Visa',
|
91
|
+
expiration_date: '02/2027',
|
92
|
+
card_number: '************1234'
|
93
|
+
)
|
94
|
+
|
95
|
+
# Create the donation object itself. Status should be active unless this is a `submit cash` type donation.
|
96
|
+
donation = SBF::Client::FullDonation.new(
|
97
|
+
status: SBF::Client::Donation::Status::ACTIVE,
|
98
|
+
amount: 50.00,
|
99
|
+
display_name: 'Test Display Name',
|
100
|
+
is_unrecognized: false,
|
101
|
+
how_created: SBF::Client::Donation::HowCreated::MOBILE,
|
102
|
+
donor: donor,
|
103
|
+
recipient: recipient,
|
104
|
+
payment_details: payment_details
|
105
|
+
)
|
106
|
+
|
107
|
+
request_helper { donation.save }
|
108
|
+
puts "Added donation #{donation.id}"
|
109
|
+
```
|
110
|
+
|
111
|
+
#### Search Actions
|
112
|
+
##### Text search
|
113
|
+
``` ruby
|
114
|
+
# Find all participants or fundraisers with 'John' in the searchable fields
|
115
|
+
model_types = [SBF::Client::Search::Type::PARTICIPANT, SBF::Client::Search::Type::FUNDRAISER]
|
116
|
+
participants_and_fundraisers = request_helper { SBF::Client::Search.find(model_types, 'John')}[:results]
|
117
|
+
puts JSON.pretty_generate(participants_and_fundraisers)
|
118
|
+
```
|
119
|
+
|
120
|
+
##### Filtered Search
|
121
|
+
``` ruby
|
122
|
+
# Find all active events, teams, and fundraisers at the railyard event
|
123
|
+
railyard_event = request_helper { SBF::Client::Event.find(venue: {location: {name: {like: "%Rail%"}}}, year: 2017) }[:results].first
|
124
|
+
|
125
|
+
model_types = [SBF::Client::Search::Type::EVENT, SBF::Client::Search::Type::TEAM, SBF::Client::Search::Type::FUNDRAISER]
|
126
|
+
filter = {
|
127
|
+
and: [
|
128
|
+
{column: 'status_id', operator: 'equals', value: SBF::Client::Search::Status::ACTIVE},
|
129
|
+
{column: 'event_id', operator: 'equals', value: railyard_event.id},
|
130
|
+
{column: 'event_year', operator: 'equals', value: railyard_event.year}
|
131
|
+
]
|
132
|
+
}
|
133
|
+
|
134
|
+
entities_at_the_railyard = request_helper { SBF::Client::Search.find(model_types, nil, filter, nil, limit: 20) }[:results]
|
135
|
+
puts JSON.pretty_generate(entities_at_the_railyard)
|
136
|
+
```
|
137
|
+
|
138
|
+
##### Geocode Search
|
139
|
+
``` ruby
|
140
|
+
# Find all active participants with 10 miles of Lincoln, NE
|
141
|
+
require 'geocoder'
|
142
|
+
data = Geocoder::Lookup.get(:google).search("Lincoln, NE").first
|
143
|
+
lat = data.latitude.round(6)
|
144
|
+
lon = data.longitude.round(6)
|
145
|
+
geo_location = {lat: lat, lon: lon, distance: 200}
|
146
|
+
|
147
|
+
model_type = SBF::Client::Search::Type::PARTICIPANT
|
148
|
+
|
149
|
+
filter = {and: [{column: 'status_id', operator: 'equals', value: SBF::Client::Search::Status::ACTIVE}]}
|
150
|
+
|
151
|
+
active_participant_within_10_mi = request_helper { SBF::Client::Search.find(model_type, nil, filter, geo_location, limit: 2) }[:results]
|
152
|
+
puts JSON.pretty_generate(active_participant_within_10_mi)
|
153
|
+
```
|
154
|
+
|
@@ -147,6 +147,32 @@ module SBF
|
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
150
|
+
class FullPerson < SBF::Client::FullPerson
|
151
|
+
attr_reader :type
|
152
|
+
|
153
|
+
def type
|
154
|
+
SBF::Client::Donation::DonorType::INDIVIDUAL
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
class PartialPerson < SBF::Client::PartialPerson
|
159
|
+
attr_reader :type
|
160
|
+
|
161
|
+
def type
|
162
|
+
SBF::Client::Donation::DonorType::INDIVIDUAL
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
class FullOrganization < SBF::Client::FullPerson
|
167
|
+
attr_reader :type
|
168
|
+
private :type
|
169
|
+
end
|
170
|
+
|
171
|
+
class PartialOrganization < SBF::Client::PartialPerson
|
172
|
+
attr_reader :type
|
173
|
+
private :type
|
174
|
+
end
|
175
|
+
|
150
176
|
class RecognitionCard < SBF::Client::BaseEntity
|
151
177
|
class Recipient < SBF::Client::BaseEntity
|
152
178
|
attr_reader :name
|
@@ -302,18 +328,18 @@ module SBF
|
|
302
328
|
[
|
303
329
|
[
|
304
330
|
->(v) { v[:type] == SBF::Client::Donation::DonorType::INDIVIDUAL },
|
305
|
-
'SBF::Client::FullPerson',
|
306
|
-
'SBF::Client::PartialPerson'
|
331
|
+
'SBF::Client::Donation::FullPerson',
|
332
|
+
'SBF::Client::Donation::PartialPerson'
|
307
333
|
],
|
308
334
|
[
|
309
335
|
->(v) { v[:type] == SBF::Client::Donation::DonorType::BUSINESS },
|
310
|
-
'SBF::Client::FullOrganization',
|
311
|
-
'SBF::Client::PartialOrganization'
|
336
|
+
'SBF::Client::Donation::FullOrganization',
|
337
|
+
'SBF::Client::Donation::PartialOrganization'
|
312
338
|
],
|
313
339
|
[
|
314
340
|
->(v) { v[:type] == SBF::Client::Donation::DonorType::ORGANIZATION_FOUNDATION },
|
315
|
-
'SBF::Client::FullOrganization',
|
316
|
-
'SBF::Client::PartialOrganization'
|
341
|
+
'SBF::Client::Donation::FullOrganization',
|
342
|
+
'SBF::Client::Donation::PartialOrganization'
|
317
343
|
]
|
318
344
|
],
|
319
345
|
optional: true
|
data/lib/stbaldricks/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stbaldricks
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.3.2.alpha.
|
4
|
+
version: 4.3.2.alpha.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Firespring
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-11-
|
11
|
+
date: 2017-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -74,6 +74,7 @@ extensions: []
|
|
74
74
|
extra_rdoc_files: []
|
75
75
|
files:
|
76
76
|
- LICENSE
|
77
|
+
- README.md
|
77
78
|
- lib/stbaldricks.rb
|
78
79
|
- lib/stbaldricks/api.rb
|
79
80
|
- lib/stbaldricks/client.rb
|
@@ -215,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
215
216
|
version: 1.3.1
|
216
217
|
requirements: []
|
217
218
|
rubyforge_project:
|
218
|
-
rubygems_version: 2.
|
219
|
+
rubygems_version: 2.7.0
|
219
220
|
signing_key:
|
220
221
|
specification_version: 4
|
221
222
|
summary: St. Baldrick's Foundation Ruby Client Library
|