stbaldricks 1.5.1.pre

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 (117) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/lib/stbaldricks.rb +2 -0
  4. data/lib/stbaldricks/api.rb +7 -0
  5. data/lib/stbaldricks/api_connector.rb +47 -0
  6. data/lib/stbaldricks/client.rb +7 -0
  7. data/lib/stbaldricks/configuration.rb +47 -0
  8. data/lib/stbaldricks/default_logger.rb +24 -0
  9. data/lib/stbaldricks/endpoints/communicate.rb +67 -0
  10. data/lib/stbaldricks/endpoints/config.rb +18 -0
  11. data/lib/stbaldricks/endpoints/contact.rb +12 -0
  12. data/lib/stbaldricks/endpoints/event.rb +39 -0
  13. data/lib/stbaldricks/endpoints/event_application.rb +32 -0
  14. data/lib/stbaldricks/endpoints/fund.rb +24 -0
  15. data/lib/stbaldricks/endpoints/kid.rb +24 -0
  16. data/lib/stbaldricks/endpoints/kid_honor.rb +17 -0
  17. data/lib/stbaldricks/endpoints/lib/entity.rb +247 -0
  18. data/lib/stbaldricks/endpoints/message.rb +27 -0
  19. data/lib/stbaldricks/endpoints/newsletter_recipient.rb +41 -0
  20. data/lib/stbaldricks/endpoints/participant.rb +66 -0
  21. data/lib/stbaldricks/endpoints/photo.rb +51 -0
  22. data/lib/stbaldricks/endpoints/recurring_gift.rb +18 -0
  23. data/lib/stbaldricks/endpoints/search.rb +63 -0
  24. data/lib/stbaldricks/endpoints/shave_schedule.rb +28 -0
  25. data/lib/stbaldricks/endpoints/user.rb +106 -0
  26. data/lib/stbaldricks/entities/batch.rb +29 -0
  27. data/lib/stbaldricks/entities/campaign.rb +37 -0
  28. data/lib/stbaldricks/entities/communicate.rb +20 -0
  29. data/lib/stbaldricks/entities/config.rb +41 -0
  30. data/lib/stbaldricks/entities/contact.rb +40 -0
  31. data/lib/stbaldricks/entities/contact_group.rb +29 -0
  32. data/lib/stbaldricks/entities/document_library.rb +19 -0
  33. data/lib/stbaldricks/entities/document_library_category.rb +14 -0
  34. data/lib/stbaldricks/entities/donation.rb +372 -0
  35. data/lib/stbaldricks/entities/donation/donor_type.rb +13 -0
  36. data/lib/stbaldricks/entities/donation/how_created.rb +22 -0
  37. data/lib/stbaldricks/entities/donation/payment_type.rb +17 -0
  38. data/lib/stbaldricks/entities/donation/promo_code.rb +22 -0
  39. data/lib/stbaldricks/entities/donation/recipient_type.rb +17 -0
  40. data/lib/stbaldricks/entities/donation/special_donation_type.rb +78 -0
  41. data/lib/stbaldricks/entities/donation/status.rb +12 -0
  42. data/lib/stbaldricks/entities/donation/submitter_type.rb +13 -0
  43. data/lib/stbaldricks/entities/donor.rb +15 -0
  44. data/lib/stbaldricks/entities/event.rb +173 -0
  45. data/lib/stbaldricks/entities/event/fund_relationship_type.rb +15 -0
  46. data/lib/stbaldricks/entities/event/how_created.rb +14 -0
  47. data/lib/stbaldricks/entities/event/promo_code.rb +11 -0
  48. data/lib/stbaldricks/entities/event/status.rb +13 -0
  49. data/lib/stbaldricks/entities/event/sub_type.rb +16 -0
  50. data/lib/stbaldricks/entities/event/type.rb +12 -0
  51. data/lib/stbaldricks/entities/event_application.rb +135 -0
  52. data/lib/stbaldricks/entities/event_application/model_type.rb +15 -0
  53. data/lib/stbaldricks/entities/event_application/status.rb +23 -0
  54. data/lib/stbaldricks/entities/event_donation_summary.rb +18 -0
  55. data/lib/stbaldricks/entities/event_participant_summary.rb +17 -0
  56. data/lib/stbaldricks/entities/event_supporter.rb +24 -0
  57. data/lib/stbaldricks/entities/fund.rb +98 -0
  58. data/lib/stbaldricks/entities/fundraiser.rb +124 -0
  59. data/lib/stbaldricks/entities/international_partner.rb +58 -0
  60. data/lib/stbaldricks/entities/kid.rb +190 -0
  61. data/lib/stbaldricks/entities/kid_honor.rb +123 -0
  62. data/lib/stbaldricks/entities/lib/address.rb +25 -0
  63. data/lib/stbaldricks/entities/lib/base.rb +505 -0
  64. data/lib/stbaldricks/entities/lib/cacheable.rb +43 -0
  65. data/lib/stbaldricks/entities/lib/default_cacheable.rb +17 -0
  66. data/lib/stbaldricks/entities/lib/email_address.rb +15 -0
  67. data/lib/stbaldricks/entities/lib/error.rb +38 -0
  68. data/lib/stbaldricks/entities/lib/fundraising_page.rb +20 -0
  69. data/lib/stbaldricks/entities/lib/geo_location.rb +9 -0
  70. data/lib/stbaldricks/entities/lib/location.rb +27 -0
  71. data/lib/stbaldricks/entities/lib/name.rb +17 -0
  72. data/lib/stbaldricks/entities/lib/not_implemented_object.rb +32 -0
  73. data/lib/stbaldricks/entities/lib/opt_out_settings.rb +21 -0
  74. data/lib/stbaldricks/entities/lib/payment.rb +86 -0
  75. data/lib/stbaldricks/entities/lib/permissions.rb +33 -0
  76. data/lib/stbaldricks/entities/lib/phone.rb +29 -0
  77. data/lib/stbaldricks/entities/lib/third_party_media.rb +20 -0
  78. data/lib/stbaldricks/entities/lib/top_level.rb +99 -0
  79. data/lib/stbaldricks/entities/lib/venue.rb +18 -0
  80. data/lib/stbaldricks/entities/memorial.rb +61 -0
  81. data/lib/stbaldricks/entities/message.rb +65 -0
  82. data/lib/stbaldricks/entities/newsletter_recipient.rb +17 -0
  83. data/lib/stbaldricks/entities/organization.rb +90 -0
  84. data/lib/stbaldricks/entities/page.rb +49 -0
  85. data/lib/stbaldricks/entities/participant.rb +216 -0
  86. data/lib/stbaldricks/entities/person.rb +403 -0
  87. data/lib/stbaldricks/entities/photo.rb +260 -0
  88. data/lib/stbaldricks/entities/recurring_gift.rb +215 -0
  89. data/lib/stbaldricks/entities/response.rb +37 -0
  90. data/lib/stbaldricks/entities/search.rb +223 -0
  91. data/lib/stbaldricks/entities/section.rb +15 -0
  92. data/lib/stbaldricks/entities/shave_schedule.rb +69 -0
  93. data/lib/stbaldricks/entities/summary.rb +32 -0
  94. data/lib/stbaldricks/entities/team.rb +95 -0
  95. data/lib/stbaldricks/entities/user.rb +76 -0
  96. data/lib/stbaldricks/enums/country.rb +223 -0
  97. data/lib/stbaldricks/enums/feature.rb +29 -0
  98. data/lib/stbaldricks/enums/league_status.rb +16 -0
  99. data/lib/stbaldricks/enums/model_type.rb +39 -0
  100. data/lib/stbaldricks/enums/permission.rb +223 -0
  101. data/lib/stbaldricks/enums/permission_model_type.rb +21 -0
  102. data/lib/stbaldricks/enums/province.rb +39 -0
  103. data/lib/stbaldricks/enums/state.rb +137 -0
  104. data/lib/stbaldricks/enums/top_level_category_type.rb +25 -0
  105. data/lib/stbaldricks/errors.rb +18 -0
  106. data/lib/stbaldricks/log.rb +16 -0
  107. data/lib/stbaldricks/patches/array.rb +6 -0
  108. data/lib/stbaldricks/patches/boolean.rb +25 -0
  109. data/lib/stbaldricks/patches/class.rb +13 -0
  110. data/lib/stbaldricks/patches/float.rb +9 -0
  111. data/lib/stbaldricks/patches/hash.rb +16 -0
  112. data/lib/stbaldricks/patches/integer.rb +9 -0
  113. data/lib/stbaldricks/patches/nil.rb +25 -0
  114. data/lib/stbaldricks/patches/string.rb +54 -0
  115. data/lib/stbaldricks/request.rb +146 -0
  116. data/lib/stbaldricks/version.rb +5 -0
  117. metadata +215 -0
@@ -0,0 +1,215 @@
1
+ require 'stbaldricks/endpoints/recurring_gift'
2
+ require 'stbaldricks/entities/fund'
3
+ require 'stbaldricks/entities/event'
4
+ require 'stbaldricks/entities/team'
5
+ require 'stbaldricks/entities/participant'
6
+ require 'stbaldricks/entities/fundraiser'
7
+ require 'stbaldricks/entities/person'
8
+ require 'stbaldricks/entities/organization'
9
+ require 'stbaldricks/entities/lib/address'
10
+ require 'stbaldricks/entities/lib/top_level'
11
+ require 'stbaldricks/entities/lib/name'
12
+ require 'stbaldricks/entities/lib/payment'
13
+ require 'stbaldricks/entities/lib/default_cacheable'
14
+
15
+ module SBF
16
+ module Client
17
+ class RecurringGift < SBF::Client::TopLevelEntity
18
+ include Entities::DefaultCacheable
19
+ endpoint SBF::Client::RecurringGiftEndpoint
20
+ actions DEFAULT_CRUD_ACTIONS
21
+ blacklist_action :get
22
+ blacklist_action :aggregate
23
+ blacklist_action :delete
24
+ action :sync
25
+
26
+ attr_accessor :id
27
+
28
+ module Status
29
+ UNKNOWN = 'unknown'
30
+ PAST_DUE = 'past_due'
31
+ ACTIVE = 'active'
32
+ CANCELED = 'canceled'
33
+ end
34
+
35
+ module RecipientType
36
+ FUND = 'fund'
37
+ EVENT = 'event'
38
+ TEAM = 'team'
39
+ PARTICIPANT = 'participant'
40
+ FUNDRAISER = 'fundraiser'
41
+ end
42
+
43
+ module DonorType
44
+ INDIVIDUAL = 'individual'
45
+ BUSINESS = 'business'
46
+ ORGANIZATION_FOUNDATION = 'foundation'
47
+ end
48
+
49
+ class FullParticipant < SBF::Client::FullParticipant
50
+ attr_reader :model_type
51
+
52
+ def model_type
53
+ SBF::Client::RecurringGift::RecipientType::PARTICIPANT
54
+ end
55
+ end
56
+
57
+ class PartialParticipant < SBF::Client::PartialParticipant
58
+ attr_reader :model_type
59
+
60
+ def model_type
61
+ SBF::Client::RecurringGift::RecipientType::PARTICIPANT
62
+ end
63
+ end
64
+
65
+ class FullFundraiser < SBF::Client::FullFundraiser
66
+ attr_reader :model_type
67
+
68
+ def model_type
69
+ SBF::Client::RecurringGift::RecipientType::FUNDRAISER
70
+ end
71
+ end
72
+
73
+ class PartialFundraiser < SBF::Client::PartialFundraiser
74
+ attr_reader :model_type
75
+
76
+ def model_type
77
+ SBF::Client::RecurringGift::RecipientType::FUNDRAISER
78
+ end
79
+ end
80
+
81
+ class FullTeam < SBF::Client::FullTeam
82
+ attr_reader :model_type
83
+
84
+ def model_type
85
+ SBF::Client::RecurringGift::RecipientType::TEAM
86
+ end
87
+ end
88
+
89
+ class PartialTeam < SBF::Client::PartialTeam
90
+ attr_reader :model_type
91
+
92
+ def model_type
93
+ SBF::Client::RecurringGift::RecipientType::TEAM
94
+ end
95
+ end
96
+
97
+ class FullEvent < SBF::Client::FullEvent
98
+ attr_reader :model_type
99
+
100
+ def model_type
101
+ SBF::Client::RecurringGift::RecipientType::EVENT
102
+ end
103
+ end
104
+
105
+ class PartialEvent < SBF::Client::PartialEvent
106
+ attr_reader :model_type
107
+
108
+ def model_type
109
+ SBF::Client::RecurringGift::RecipientType::EVENT
110
+ end
111
+ end
112
+
113
+ class FullFund < SBF::Client::FullFund
114
+ attr_reader :model_type
115
+
116
+ def model_type
117
+ SBF::Client::RecurringGift::RecipientType::FUND
118
+ end
119
+ end
120
+
121
+ class PartialFund < SBF::Client::PartialFund
122
+ attr_reader :model_type
123
+
124
+ def model_type
125
+ SBF::Client::RecurringGift::RecipientType::FUND
126
+ end
127
+ end
128
+ end
129
+
130
+ class PartialRecurringGift < SBF::Client::RecurringGift
131
+ attr_accessor :id
132
+ end
133
+
134
+ class FullRecurringGift < SBF::Client::RecurringGift
135
+ attr_accessor :status
136
+ attr_accessor :amount
137
+ attr_accessor :billing_day_of_month
138
+ attr_accessor :last_collected_at
139
+ attr_accessor :last_failed_at
140
+ attr_accessor :display_name
141
+ attr_accessor :is_unrecognized
142
+ attr_accessor :promotional_code
143
+ entity_collection_attr_accessor :donations, 'SBF::Client::FullDonation', 'SBF::Client::PartialDonation'
144
+ attr_accessor :created_at, :modified_at, :modified_by, :how_created, :past_due_at
145
+
146
+ multitype_attr_accessor(
147
+ :payment_details,
148
+ [
149
+ [
150
+ ->(v) { v[:type] == SBF::Client::Payment::Type::RECURRING_GIFTS },
151
+ 'SBF::Client::Payment::BraintreeSubscriptionDetails'
152
+ ],
153
+ [
154
+ ->(v) { v[:type] == SBF::Client::Payment::Type::NONCE },
155
+ 'SBF::Client::Payment::NonceDetails'
156
+ ]
157
+ ]
158
+ )
159
+
160
+ multitype_attr_accessor(
161
+ :recipient,
162
+ [
163
+ [
164
+ ->(v) { v[:model_type] == SBF::Client::RecurringGift::RecipientType::PARTICIPANT },
165
+ 'SBF::Client::RecurringGift::FullParticipant',
166
+ 'SBF::Client::RecurringGift::PartialParticipant'
167
+ ],
168
+ [
169
+ ->(v) { v[:model_type] == SBF::Client::RecurringGift::RecipientType::FUNDRAISER },
170
+ 'SBF::Client::RecurringGift::FullFundraiser',
171
+ 'SBF::Client::RecurringGift::PartialFundraiser'
172
+ ],
173
+ [
174
+ ->(v) { v[:model_type] == SBF::Client::RecurringGift::RecipientType::TEAM },
175
+ 'SBF::Client::RecurringGift::FullTeam',
176
+ 'SBF::Client::RecurringGift::PartialTeam'
177
+ ],
178
+ [
179
+ ->(v) { v[:model_type] == SBF::Client::RecurringGift::RecipientType::EVENT },
180
+ 'SBF::Client::RecurringGift::FullEvent',
181
+ 'SBF::Client::RecurringGift::PartialEvent'
182
+ ],
183
+ [
184
+ ->(v) { v[:model_type] == SBF::Client::RecurringGift::RecipientType::FUND },
185
+ 'SBF::Client::RecurringGift::FullFund',
186
+ 'SBF::Client::RecurringGift::PartialFund'
187
+ ]
188
+ ],
189
+ optional: true
190
+ )
191
+
192
+ multitype_attr_accessor(
193
+ :donor,
194
+ [
195
+ [
196
+ ->(v) { v[:type] == SBF::Client::RecurringGift::DonorType::INDIVIDUAL },
197
+ 'SBF::Client::FullPerson',
198
+ 'SBF::Client::PartialPerson'
199
+ ],
200
+ [
201
+ ->(v) { v[:type] == SBF::Client::RecurringGift::DonorType::BUSINESS },
202
+ 'SBF::Client::FullOrganization',
203
+ 'SBF::Client::PartialOrganization'
204
+ ],
205
+ [
206
+ ->(v) { v[:type] == SBF::Client::RecurringGift::DonorType::ORGANIZATION_FOUNDATION },
207
+ 'SBF::Client::FullOrganization',
208
+ 'SBF::Client::PartialOrganization'
209
+ ]
210
+ ],
211
+ optional: true
212
+ )
213
+ end
214
+ end
215
+ end
@@ -0,0 +1,37 @@
1
+ require 'stbaldricks/entities/lib/base'
2
+
3
+ module SBF
4
+ module Client
5
+ module Api
6
+ class Response < SBF::Client::BaseEntity
7
+ attr_accessor :http_code, :data, :error
8
+
9
+ def initialize(http_code: nil, data: nil, error: nil)
10
+ @http_code = http_code
11
+ @data = data
12
+ @error = error || SBF::Client::ErrorEntity.new(nil)
13
+ end
14
+
15
+ def success?
16
+ http_code.to_s.start_with?('2')
17
+ end
18
+
19
+ def error?
20
+ !success?
21
+ end
22
+
23
+ def to_json
24
+ to_hash.to_json
25
+ end
26
+
27
+ def to_hash
28
+ {
29
+ http_code: http_code,
30
+ data: data,
31
+ error: error
32
+ }
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,223 @@
1
+ require 'stbaldricks/entities/lib/top_level'
2
+ require 'stbaldricks/endpoints/search'
3
+
4
+ module SBF
5
+ module Client
6
+ class Search < SBF::Client::TopLevelEntity
7
+ endpoint SBF::Client::SearchEndpoint
8
+ action :find
9
+
10
+ module Type
11
+ FUND = 'fund'
12
+ CAMPAIGN = 'campaign'
13
+ EVENT = 'event'
14
+ TEAM = 'team'
15
+ PARTICIPANT = 'participant'
16
+ FUNDRAISER = 'fundraiser'
17
+ KID = 'kid'
18
+ end
19
+
20
+ module Status
21
+ ACTIVE = 2
22
+ end
23
+
24
+ class Fund < SBF::Client::BaseEntity
25
+ attr_reader :fund_id
26
+ attr_reader :slug
27
+ attr_reader :name
28
+ attr_reader :website
29
+ attr_reader :disabled
30
+ attr_reader :event_year
31
+ attr_reader :total_donations
32
+ attr_reader :total_events
33
+ attr_reader :total_participants
34
+ end
35
+
36
+ class Campaign < SBF::Client::BaseEntity
37
+ attr_reader :campaign_id
38
+ attr_reader :slug
39
+ attr_reader :name
40
+ attr_reader :website
41
+ attr_reader :disabled
42
+ attr_reader :event_year
43
+ attr_reader :total_donations
44
+ attr_reader :total_events
45
+ attr_reader :total_participants
46
+ end
47
+
48
+ class Event < SBF::Client::BaseEntity
49
+ attr_reader :geo_location
50
+ attr_reader :venue_name
51
+ attr_reader :event_title
52
+ attr_reader :zip_code
53
+ attr_reader :address1
54
+ attr_reader :city
55
+ attr_reader :state
56
+ attr_reader :state_full
57
+ attr_reader :country
58
+ attr_reader :country_full
59
+ attr_reader :address2
60
+ attr_reader :event_access_type_id
61
+ attr_reader :event_date
62
+ attr_reader :event_year
63
+ attr_reader :event_id
64
+ attr_reader :is_website_allowed
65
+ attr_reader :is_expired
66
+ attr_reader :latitude
67
+ attr_reader :longitude
68
+ attr_reader :start_time
69
+ attr_reader :end_time
70
+ attr_reader :status_id
71
+ attr_reader :website_url
72
+ attr_reader :total_donations
73
+ attr_reader :total_participants
74
+ end
75
+
76
+ class Team < SBF::Client::BaseEntity
77
+ attr_reader :team_name
78
+ attr_reader :venue_name
79
+ attr_reader :event_title
80
+ attr_reader :zip_code
81
+ attr_reader :address1
82
+ attr_reader :city
83
+ attr_reader :state
84
+ attr_reader :state_full
85
+ attr_reader :country_full
86
+ attr_reader :country
87
+ attr_reader :event_date
88
+ attr_reader :event_id
89
+ attr_reader :event_year
90
+ attr_reader :event_status_id
91
+ attr_reader :team_id
92
+ attr_reader :is_website_allowed
93
+ attr_reader :status_id
94
+ attr_reader :latitude
95
+ attr_reader :longitude
96
+ attr_reader :geo_location
97
+ attr_reader :total_donations
98
+ attr_reader :total_participants
99
+ end
100
+
101
+ class Participant < SBF::Client::BaseEntity
102
+ attr_reader :participant_id
103
+ attr_reader :event_year
104
+ attr_reader :raw_display_name
105
+ attr_reader :display_name
106
+ attr_reader :first_name
107
+ attr_reader :last_name
108
+ attr_reader :team_name
109
+ attr_reader :venue_name
110
+ attr_reader :event_title
111
+ attr_reader :zip_code
112
+ attr_reader :participant_zip_code
113
+ attr_reader :address1
114
+ attr_reader :address2
115
+ attr_reader :city
116
+ attr_reader :state
117
+ attr_reader :state_full
118
+ attr_reader :participant_state
119
+ attr_reader :participant_state_full
120
+ attr_reader :country
121
+ attr_reader :country_full
122
+ attr_reader :participant_country
123
+ attr_reader :participant_country_full
124
+ attr_reader :event_date
125
+ attr_reader :event_id
126
+ attr_reader :is_website_allowed
127
+ attr_reader :legal_status_id
128
+ attr_reader :birthday
129
+ attr_reader :profile_id
130
+ attr_reader :status_id
131
+ attr_reader :event_status_id
132
+ attr_reader :team_id
133
+ attr_reader :virtual_participation_date
134
+ attr_reader :latitude
135
+ attr_reader :longitude
136
+ attr_reader :geo_location
137
+ attr_reader :total_donations
138
+ end
139
+
140
+ class Fundraiser < SBF::Client::BaseEntity
141
+ attr_reader :fundraiser_id
142
+ attr_reader :event_year
143
+ attr_reader :event_id
144
+ attr_reader :event_status_id
145
+ attr_reader :event_title
146
+ attr_reader :team_id
147
+ attr_reader :title
148
+ attr_reader :status_id
149
+ attr_reader :profile_id
150
+ attr_reader :raw_display_name
151
+ attr_reader :display_name
152
+ attr_reader :start_date
153
+ attr_reader :start_time
154
+ attr_reader :end_date
155
+ attr_reader :end_time
156
+ attr_reader :first_name
157
+ attr_reader :last_name
158
+ attr_reader :zip_code
159
+ attr_reader :venue_name
160
+ attr_reader :team_name
161
+ attr_reader :event_venue_name
162
+ attr_reader :address1
163
+ attr_reader :address2
164
+ attr_reader :city
165
+ attr_reader :state
166
+ attr_reader :state_full
167
+ attr_reader :country
168
+ attr_reader :country_full
169
+ attr_reader :latitude
170
+ attr_reader :longitude
171
+ attr_reader :geo_location
172
+ attr_reader :total_donations
173
+ end
174
+
175
+ class Kid < SBF::Client::BaseEntity
176
+ attr_reader :kid_id
177
+ attr_reader :display_name
178
+ attr_reader :first_name
179
+ attr_reader :last_name
180
+ attr_reader :zip_code
181
+ attr_reader :address1
182
+ attr_reader :city
183
+ attr_reader :state
184
+ attr_reader :state_full
185
+ attr_reader :country_full
186
+ attr_reader :country
187
+ attr_reader :birthday
188
+ attr_reader :date_of_death
189
+ attr_reader :diagnosis_slug
190
+ attr_reader :diagnosis_other
191
+ attr_reader :status_id
192
+ attr_reader :treatment_status_slug
193
+ attr_reader :treatment_status_other
194
+ attr_reader :mypage_url
195
+ attr_reader :default_photo_url
196
+ attr_reader :avatar_photo_url
197
+ attr_reader :latitude
198
+ attr_reader :longitude
199
+ attr_reader :geo_location
200
+ end
201
+
202
+ class Memorial < SBF::Client::BaseEntity
203
+ attr_reader :memorial_id
204
+ attr_reader :tribute_name
205
+ attr_reader :display_name
206
+ attr_reader :status_id
207
+ attr_reader :zip_code
208
+ attr_reader :city
209
+ attr_reader :state
210
+ attr_reader :state_full
211
+ attr_reader :country_full
212
+ attr_reader :country
213
+ attr_reader :latitude
214
+ attr_reader :longitude
215
+ attr_reader :geo_location
216
+ attr_reader :tribute_birthday
217
+ attr_reader :tribute_date_of_passing
218
+ attr_reader :expiration_date
219
+ attr_reader :total_donations
220
+ end
221
+ end
222
+ end
223
+ end