stbaldricks 6.13.0 → 6.13.1.alpha.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/stbaldricks/configuration.rb +2 -1
- data/lib/stbaldricks/endpoints/event.rb +4 -2
- data/lib/stbaldricks/endpoints/facebook/user.rb +3 -3
- data/lib/stbaldricks/endpoints/kid_honor.rb +1 -3
- data/lib/stbaldricks/endpoints/kid_institution.rb +1 -3
- data/lib/stbaldricks/endpoints/lib/entity.rb +9 -6
- data/lib/stbaldricks/endpoints/participant.rb +2 -1
- data/lib/stbaldricks/endpoints/photo.rb +5 -5
- data/lib/stbaldricks/endpoints/search.rb +2 -1
- data/lib/stbaldricks/endpoints/user.rb +5 -6
- data/lib/stbaldricks/entities/concerns/entity_response_concern.rb +3 -2
- data/lib/stbaldricks/entities/concerns/event_year_concern.rb +1 -0
- data/lib/stbaldricks/entities/concerns/venue_concern.rb +1 -1
- data/lib/stbaldricks/entities/config.rb +5 -5
- data/lib/stbaldricks/entities/donation.rb +7 -11
- data/lib/stbaldricks/entities/fund.rb +6 -3
- data/lib/stbaldricks/entities/fundraiser.rb +1 -0
- data/lib/stbaldricks/entities/lib/base.rb +33 -32
- data/lib/stbaldricks/entities/lib/cacheable.rb +2 -0
- data/lib/stbaldricks/entities/lib/collection.rb +4 -0
- data/lib/stbaldricks/entities/lib/not_implemented_object.rb +3 -0
- data/lib/stbaldricks/entities/lib/permissions.rb +2 -0
- data/lib/stbaldricks/entities/lib/phone.rb +2 -0
- data/lib/stbaldricks/entities/lib/top_level.rb +1 -0
- data/lib/stbaldricks/entities/person.rb +3 -1
- data/lib/stbaldricks/entities/photo.rb +47 -47
- data/lib/stbaldricks/entities/team.rb +1 -1
- data/lib/stbaldricks/enums/cancer_types.rb +0 -0
- data/lib/stbaldricks/enums/model_type.rb +0 -0
- data/lib/stbaldricks/enums/province.rb +0 -0
- data/lib/stbaldricks/log.rb +2 -0
- data/lib/stbaldricks/patches/string.rb +3 -2
- data/lib/stbaldricks/version.rb +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f160e1af1de76369152c9dbf97bcbdacfd37ccf464ba6f5d3cd9aa59bf5c5551
|
4
|
+
data.tar.gz: 42e01f776af7d02f1399d55b5d24c351b1cc895b0ac027bb45a684160a16ad5a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f27bf1e1e37bcb2c8578797d30009c9a2209f9c2b564f3566d2c9bbd70036c538e681d018346276ccbc1ef30518de977b92d33fac47a3693b1b3dbcbd5619a36
|
7
|
+
data.tar.gz: 0b2d540ae40eccf875d621e6a4b149cafdbe719ccec44f0318108e534d412ccbc515b23ff922c98d17abc046057aabff0fb999e28a91215880c85e03ad92c1ed
|
@@ -28,8 +28,9 @@ module SBF
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def self.logger=(new_logger)
|
31
|
-
missing_methods = SBF::Client::LOG::REQUIRED_METHODS.
|
31
|
+
missing_methods = SBF::Client::LOG::REQUIRED_METHODS.reject { |method| new_logger.respond_to?(method) }
|
32
32
|
raise SBF::Client::Configuration::Error.new('logger', "must respond to: #{missing_methods.join(', ')}") unless missing_methods.empty?
|
33
|
+
|
33
34
|
@_logger = new_logger
|
34
35
|
end
|
35
36
|
|
@@ -10,10 +10,12 @@ module SBF
|
|
10
10
|
def save(entity_or_hash, with = {})
|
11
11
|
if entity_or_hash.is_a?(SBF::Client::BaseEntity)
|
12
12
|
return create(entity_or_hash, with) if entity_or_hash.id.nil?
|
13
|
-
|
13
|
+
|
14
|
+
update(entity_or_hash.id, entity_or_hash.year, entity_or_hash.dirty_data, with)
|
14
15
|
else
|
15
16
|
return create(entity_or_hash, with) if entity_or_hash[:id].nil?
|
16
|
-
|
17
|
+
|
18
|
+
update(entity_or_hash[:id], entity_or_hash[:year], entity_or_hash, with)
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
@@ -14,9 +14,9 @@ module SBF
|
|
14
14
|
# @return [string]
|
15
15
|
def login!(authorization_code, redirect_uri)
|
16
16
|
response = SBF::Client::Api::Request.post_request(
|
17
|
-
|
18
|
-
|
19
|
-
|
17
|
+
"/#{SBF::Client::Api::VERSION}/security/facebook/login",
|
18
|
+
authorization_code: authorization_code,
|
19
|
+
redirect_uri: redirect_uri
|
20
20
|
)
|
21
21
|
parsed_response = JSON.parse(response.body).symbolize!
|
22
22
|
|
@@ -6,9 +6,7 @@ module SBF
|
|
6
6
|
def delete(params)
|
7
7
|
response = SBF::Client::Api::Request.post_request("#{base_uri}/delete", params)
|
8
8
|
|
9
|
-
unless ok?(response)
|
10
|
-
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!)
|
11
|
-
end
|
9
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!) unless ok?(response)
|
12
10
|
|
13
11
|
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
14
12
|
end
|
@@ -6,9 +6,7 @@ module SBF
|
|
6
6
|
def delete(params)
|
7
7
|
response = SBF::Client::Api::Request.post_request("#{base_uri}/delete", params)
|
8
8
|
|
9
|
-
unless ok?(response)
|
10
|
-
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!)
|
11
|
-
end
|
9
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!) unless ok?(response)
|
12
10
|
|
13
11
|
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
14
12
|
end
|
@@ -21,10 +21,12 @@ module SBF
|
|
21
21
|
def save(entity_or_hash, with = {})
|
22
22
|
if entity_or_hash.is_a?(SBF::Client::BaseEntity)
|
23
23
|
return create(entity_or_hash, with) if entity_or_hash.id.nil?
|
24
|
-
|
24
|
+
|
25
|
+
update(entity_or_hash.id, entity_or_hash, with)
|
25
26
|
else
|
26
27
|
return create(entity_or_hash, with) if entity_or_hash[:id].nil?
|
27
|
-
|
28
|
+
|
29
|
+
update(entity_or_hash[:id], entity_or_hash, with)
|
28
30
|
end
|
29
31
|
end
|
30
32
|
|
@@ -77,7 +79,7 @@ module SBF
|
|
77
79
|
|
78
80
|
if ok?(response)
|
79
81
|
hydrated_entity(response, {}, nil)
|
80
|
-
elsif
|
82
|
+
elsif response.code == 404
|
81
83
|
nil
|
82
84
|
else
|
83
85
|
parsed_response_body = JSON.parse(response.body).symbolize!
|
@@ -139,9 +141,7 @@ module SBF
|
|
139
141
|
def delete(id)
|
140
142
|
response = SBF::Client::Api::Request.post_request("#{base_uri}/delete/#{id}")
|
141
143
|
|
142
|
-
unless ok?(response)
|
143
|
-
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!)
|
144
|
-
end
|
144
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!) unless ok?(response)
|
145
145
|
|
146
146
|
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
147
147
|
end
|
@@ -193,6 +193,7 @@ module SBF
|
|
193
193
|
entity_class = klass.send(entity_class_selector_method, value)
|
194
194
|
|
195
195
|
return nil if entity_class == NilClass
|
196
|
+
|
196
197
|
entity_class.nil? ? value : sanitize(value, entity_class)
|
197
198
|
end
|
198
199
|
private :sanitize_entity
|
@@ -223,6 +224,7 @@ module SBF
|
|
223
224
|
end
|
224
225
|
private :normalize_with
|
225
226
|
|
227
|
+
# rubocop:disable IdenticalConditionalBranches
|
226
228
|
def hydrated_entity(response, data, entity_or_hash)
|
227
229
|
parsed_response_body = JSON.parse(response.body).symbolize!
|
228
230
|
|
@@ -256,6 +258,7 @@ module SBF
|
|
256
258
|
end
|
257
259
|
end
|
258
260
|
private :hydrated_entity
|
261
|
+
# rubocop:enable IdenticalConditionalBranches
|
259
262
|
end
|
260
263
|
end
|
261
264
|
end
|
@@ -22,7 +22,8 @@ module SBF
|
|
22
22
|
new_team_id: 0,
|
23
23
|
team_name: team_name,
|
24
24
|
goal: fundraising_goal,
|
25
|
-
how_created: SBF::Client::Team::HowCreated::WEBSITE
|
25
|
+
how_created: SBF::Client::Team::HowCreated::WEBSITE
|
26
|
+
)
|
26
27
|
|
27
28
|
if ok?(response)
|
28
29
|
data = SBF::Client::FullParticipant.new(JSON.parse(response.body).symbolize!)
|
@@ -23,8 +23,8 @@ module SBF
|
|
23
23
|
if entity_or_hash.is_a?(SBF::Client::BaseEntity)
|
24
24
|
# If someone has passed in an entity, just convert it to a hash
|
25
25
|
data = entity_or_hash.dirty_data
|
26
|
-
data
|
27
|
-
data
|
26
|
+
data[:id] = id unless id.nil?
|
27
|
+
data[:id] = entity_or_hash.id if id.nil? && !entity_or_hash.id.nil?
|
28
28
|
elsif entity_or_hash.is_a?(Hash)
|
29
29
|
# If someone has passed in a hash, make sure all of it's values match fields in the entity class
|
30
30
|
data = sanitize(entity_or_hash)
|
@@ -48,7 +48,7 @@ module SBF
|
|
48
48
|
|
49
49
|
def upload(image_data_url, data = {}, with = {})
|
50
50
|
# support image formats: png, jpeg, gif
|
51
|
-
image_data_url.slice!(
|
51
|
+
image_data_url.slice!(%r{data:image/(png|jpeg|gif);base64,})
|
52
52
|
image_data = Base64.decode64(image_data_url)
|
53
53
|
|
54
54
|
Tempfile.create('photo_upload') do |file|
|
@@ -66,11 +66,11 @@ module SBF
|
|
66
66
|
def photo_for_upload(file, data)
|
67
67
|
if data.is_a?(SBF::Client::Photo)
|
68
68
|
data.file = file
|
69
|
-
|
69
|
+
data
|
70
70
|
else
|
71
71
|
photo = SBF::Client::Photo.new(data.is_a?(Hash) && data.any? ? data : {})
|
72
72
|
photo.file = file
|
73
|
-
|
73
|
+
photo
|
74
74
|
end
|
75
75
|
end
|
76
76
|
end
|
@@ -28,7 +28,8 @@ module SBF
|
|
28
28
|
geo_location = geo_location.to_json unless geo_location.empty?
|
29
29
|
|
30
30
|
# Build the parameter list for search
|
31
|
-
params
|
31
|
+
params = {}
|
32
|
+
response_data = {}
|
32
33
|
{model_type: model_type, search_text: search_text, filters: filters, geo_location: geo_location}.each do |k, v|
|
33
34
|
params[k.to_sym] = v unless v.empty?
|
34
35
|
end
|
@@ -59,7 +59,7 @@ module SBF
|
|
59
59
|
#
|
60
60
|
# @raise [SBFClientError]
|
61
61
|
def change_password(profile_id, password)
|
62
|
-
raise SBF::Client::Error, 'User not logged in' if
|
62
|
+
raise SBF::Client::Error, 'User not logged in' if SBF::Client::Configuration.user_token.nil?
|
63
63
|
|
64
64
|
response = SBF::Client::Api::Request.post_request(
|
65
65
|
"/#{SBF::Client::Api::VERSION}/security/change_password",
|
@@ -81,17 +81,16 @@ module SBF
|
|
81
81
|
#
|
82
82
|
# @raise [SBFClientError]
|
83
83
|
def disconnect_facebook(profile_id)
|
84
|
-
raise SBF::Client::Error, 'User not logged in' if
|
84
|
+
raise SBF::Client::Error, 'User not logged in' if SBF::Client::Configuration.user_token.nil?
|
85
85
|
|
86
86
|
response = SBF::Client::Api::Request.post_request(
|
87
87
|
"/#{SBF::Client::Api::VERSION}/user/disconnect_facebook",
|
88
88
|
profile_id: profile_id
|
89
89
|
)
|
90
90
|
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
SBF::Client::Configuration.user_token = nil
|
91
|
+
SBF::Client::Configuration.user_token = nil
|
92
|
+
|
93
|
+
unless ok?(response)
|
95
94
|
parsed_response = JSON.parse(response.body).symbolize!
|
96
95
|
error = SBF::Client::ErrorEntity.new(parsed_response)
|
97
96
|
end
|
@@ -16,7 +16,7 @@ module EntityResponseConcern
|
|
16
16
|
end
|
17
17
|
errors.instance_variable_set(:@code, error.code)
|
18
18
|
errors.instance_variable_set(:@type, error.type)
|
19
|
-
errors.add(:base, "#{error.type}: #{error.details}") if count
|
19
|
+
errors.add(:base, "#{error.type}: #{error.details}") if count&.zero?
|
20
20
|
end
|
21
21
|
|
22
22
|
def errors_http_code=(http_code)
|
@@ -32,7 +32,7 @@ module EntityResponseConcern
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def errors?
|
35
|
-
errors.count
|
35
|
+
errors.count.positive?
|
36
36
|
end
|
37
37
|
|
38
38
|
############ Deprecated Methods ############
|
@@ -52,6 +52,7 @@ module EntityResponseConcern
|
|
52
52
|
def single_active_model_error
|
53
53
|
return if errors.empty?
|
54
54
|
return [:base, errors[:base].first] if errors[:base].any?
|
55
|
+
|
55
56
|
errors.first
|
56
57
|
end
|
57
58
|
|
@@ -21,6 +21,7 @@ module SBF
|
|
21
21
|
#NOTE: If you add another attribute, be sure to mock it out in `configure :test` of app.rb
|
22
22
|
|
23
23
|
# Attempts to call the method on the cached configuration object
|
24
|
+
# rubocop:disable Style/MethodMissingSuper, Style/MissingRespondToMissing
|
24
25
|
def self.method_missing(method_name, *arguments, &block)
|
25
26
|
# The first time a missing method is called, call reload to make sure the instance has been populated
|
26
27
|
unless @_loaded
|
@@ -29,12 +30,11 @@ module SBF
|
|
29
30
|
end
|
30
31
|
|
31
32
|
# If the method being called exists on the instance, call it. Otherwise forward the request on to 'super'.
|
32
|
-
if instance.respond_to?(method_name)
|
33
|
-
|
34
|
-
|
35
|
-
super(method_name, *arguments, &block)
|
36
|
-
end
|
33
|
+
return instance.send(method_name) if instance.respond_to?(method_name)
|
34
|
+
|
35
|
+
super(method_name, *arguments, &block)
|
37
36
|
end
|
37
|
+
# rubocop:enable Style/MethodMissingSuper, Style/MissingRespondToMissing
|
38
38
|
end
|
39
39
|
end
|
40
40
|
end
|
@@ -214,20 +214,16 @@ module SBF
|
|
214
214
|
state_value = state.to_s.upcase.to_sym
|
215
215
|
if !state_value.empty? && SBF::Client::Donation::SpecialDonationType.const_defined?(state_value)
|
216
216
|
return SBF::Client::Donation::SpecialDonationType.const_get(state_value)
|
217
|
-
|
218
|
-
else
|
219
|
-
return SBF::Client::Donation::SpecialDonationType::NO_STATE
|
220
217
|
end
|
221
218
|
|
219
|
+
return SBF::Client::Donation::SpecialDonationType::NO_STATE
|
222
220
|
else
|
223
221
|
international_value = "INT_#{country}".upcase.to_sym
|
224
222
|
if SBF::Client::Donation::SpecialDonationType.const_defined?(international_value)
|
225
223
|
return SBF::Client::Donation::SpecialDonationType.const_get(international_value)
|
226
|
-
|
227
|
-
else
|
228
|
-
return SBF::Client::Donation::SpecialDonationType::INTERNATIONAL
|
229
|
-
|
230
224
|
end
|
225
|
+
|
226
|
+
return SBF::Client::Donation::SpecialDonationType::INTERNATIONAL
|
231
227
|
end
|
232
228
|
end
|
233
229
|
|
@@ -256,16 +252,16 @@ module SBF
|
|
256
252
|
return [country, state]
|
257
253
|
|
258
254
|
when SBF::Client::Participant
|
259
|
-
|
255
|
+
get_event_country_and_state_for_special_donation_type(entity.event, entity.person)
|
260
256
|
|
261
257
|
when SBF::Client::Fundraiser
|
262
|
-
|
258
|
+
[entity.venue.location.address.country, entity.venue.location.address.state]
|
263
259
|
|
264
260
|
when SBF::Client::Team
|
265
|
-
|
261
|
+
get_event_country_and_state_for_special_donation_type(entity.event)
|
266
262
|
|
267
263
|
when SBF::Client::Event
|
268
|
-
|
264
|
+
get_event_country_and_state_for_special_donation_type(entity)
|
269
265
|
|
270
266
|
end
|
271
267
|
end
|
@@ -75,12 +75,15 @@ module SBF
|
|
75
75
|
attr_accessor :offline_donation_uuid, :offline_donation_form
|
76
76
|
|
77
77
|
def totals_by_year=(value)
|
78
|
-
|
78
|
+
if value.nil? || value.empty?
|
79
|
+
@totals_by_year = []
|
80
|
+
return
|
81
|
+
end
|
79
82
|
|
80
83
|
totals_by_year_will_change!
|
81
|
-
@totals_by_year = value.map
|
84
|
+
@totals_by_year = value.map do |k, v|
|
82
85
|
SBF::Client::Fund::YearlyTotals.new(v.merge(year: k.to_s.to_i))
|
83
|
-
|
86
|
+
end
|
84
87
|
end
|
85
88
|
|
86
89
|
def to_hash
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# Require all monkey patches
|
2
|
-
patch_dir = File.expand_path('
|
2
|
+
patch_dir = File.expand_path('../../patches', __dir__)
|
3
3
|
Dir["#{patch_dir}/*.rb"].each { |file| require file }
|
4
4
|
|
5
5
|
require 'set'
|
@@ -79,17 +79,19 @@ module SBF
|
|
79
79
|
changes.each { |k, arr| data[k.to_sym] = arr[1] }
|
80
80
|
|
81
81
|
instance_variables.each do |var|
|
82
|
-
attribute_symbol = var.to_s.
|
82
|
+
attribute_symbol = var.to_s.delete('@').to_sym
|
83
83
|
attribute = instance_variable_get(var)
|
84
84
|
if attribute.is_a?(BaseEntity)
|
85
85
|
if attribute.dirty_data(true).empty?
|
86
86
|
next unless changed.map(&:to_sym).include?(attribute_symbol)
|
87
|
+
|
87
88
|
data.merge!(attribute_symbol => attribute.keys_hash)
|
88
89
|
else
|
89
90
|
data.merge!(attribute_symbol => attribute.dirty_data(true))
|
90
91
|
end
|
91
92
|
elsif attribute.is_a?(Array)
|
92
93
|
next unless attribute.all? { |e| e.is_a?(BaseEntity) } && attribute.any? { |e| !e.dirty_data(true).empty? }
|
94
|
+
|
93
95
|
data.merge!(attribute_symbol => attribute)
|
94
96
|
end
|
95
97
|
end
|
@@ -114,11 +116,9 @@ module SBF
|
|
114
116
|
if respond_to?(setter, true)
|
115
117
|
send(setter, value)
|
116
118
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
attribute_will_change!(key.to_sym)
|
121
|
-
end
|
119
|
+
elsif respond_to?(key.to_sym)
|
120
|
+
instance_variable_set("@#{key}".to_sym, value)
|
121
|
+
attribute_will_change!(key.to_sym)
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
@@ -364,6 +364,7 @@ module SBF
|
|
364
364
|
vars.each do |attribute|
|
365
365
|
split_attribute = attribute.to_s.split('is_')
|
366
366
|
next if split_attribute.length <= 1
|
367
|
+
|
367
368
|
define_method(:"#{split_attribute.last}?") { send(attribute) }
|
368
369
|
define_changing_attr_methods(attribute, true) if setter
|
369
370
|
end
|
@@ -371,9 +372,11 @@ module SBF
|
|
371
372
|
private_class_method :add_boolean_methods
|
372
373
|
|
373
374
|
def self.define_changing_attr_methods(attribute, is_boolean = false, define_reader = false)
|
374
|
-
|
375
|
-
|
376
|
-
|
375
|
+
if define_reader
|
376
|
+
define_method(:"#{attribute}") do
|
377
|
+
instance_variable_get("@#{attribute}".to_sym)
|
378
|
+
end
|
379
|
+
end
|
377
380
|
|
378
381
|
define_method(:"#{attribute}=") do |val|
|
379
382
|
send(:"#{attribute}_will_change!") unless val == instance_variable_get("@#{attribute}".to_sym) && !val.nil?
|
@@ -451,9 +454,7 @@ module SBF
|
|
451
454
|
def self.get_mappings(attribute, class_mappings)
|
452
455
|
# Parse the mappings information and save it off
|
453
456
|
mapping_var = :"@#{attribute}_class_mappings"
|
454
|
-
unless instance_variable_defined?(mapping_var)
|
455
|
-
instance_variable_set(mapping_var, parse_class_mappings(class_mappings))
|
456
|
-
end
|
457
|
+
instance_variable_set(mapping_var, parse_class_mappings(class_mappings)) unless instance_variable_defined?(mapping_var)
|
457
458
|
|
458
459
|
instance_variable_get(mapping_var)
|
459
460
|
end
|
@@ -523,6 +524,7 @@ module SBF
|
|
523
524
|
define_method(:"#{attribute}=") do |values|
|
524
525
|
values ||= []
|
525
526
|
raise SBF::Client::Error, "#{attribute} must be an array" unless values.is_a?(Array)
|
527
|
+
|
526
528
|
converted_collection = values.map { |value| convert_value(attribute, value) }
|
527
529
|
instance_variable_set(:"@#{attribute}", converted_collection)
|
528
530
|
send(:"#{attribute}_will_change!") if respond_to?(:"#{attribute}_will_change!")
|
@@ -544,28 +546,26 @@ module SBF
|
|
544
546
|
value = send(key)
|
545
547
|
|
546
548
|
# If the value is an Entity, call to_hash on it (recursively)
|
547
|
-
if value.is_a?(BaseEntity)
|
548
|
-
|
549
|
-
|
550
|
-
# If the value is an Array, need to try to call to_hash on each item
|
551
|
-
elsif value.is_a?(Array)
|
552
|
-
entity_hash[key] = value.map { |element|
|
553
|
-
if element.is_a?(BaseEntity)
|
554
|
-
next element.to_hash
|
555
|
-
else
|
556
|
-
next element
|
557
|
-
end
|
558
|
-
}
|
549
|
+
entity_hash[key] = if value.is_a?(BaseEntity)
|
550
|
+
value.to_hash
|
559
551
|
|
560
|
-
|
561
|
-
|
562
|
-
|
552
|
+
# If the value is an Array, need to try to call to_hash on each item
|
553
|
+
elsif value.is_a?(Array)
|
554
|
+
value.map { |element|
|
555
|
+
next element.to_hash if element.is_a?(BaseEntity)
|
563
556
|
|
564
|
-
|
565
|
-
|
566
|
-
entity_hash[key] = value
|
557
|
+
next element
|
558
|
+
}
|
567
559
|
|
568
|
-
|
560
|
+
# Collections should return empty array rather than nil
|
561
|
+
elsif value.nil? && self.class.collection_attributes.include?(key)
|
562
|
+
[]
|
563
|
+
|
564
|
+
# Just set the value
|
565
|
+
else
|
566
|
+
value
|
567
|
+
|
568
|
+
end
|
569
569
|
}
|
570
570
|
|
571
571
|
# Return the hash
|
@@ -590,6 +590,7 @@ module SBF
|
|
590
590
|
def error
|
591
591
|
log_deprecated('error', caller)
|
592
592
|
return nil if single_active_model_error.nil?
|
593
|
+
|
593
594
|
details = single_active_model_error.find { |x| x.is_a?(String) } if single_active_model_error.is_a?(Array)
|
594
595
|
details ||= single_active_model_error.is_a?(String) ? single_active_model_error : nil
|
595
596
|
field = single_active_model_error.is_a?(Array) ? single_active_model_error.find { |x| x.is_a?(Symbol) && x != :base } : nil
|
@@ -27,6 +27,7 @@ module SBF
|
|
27
27
|
id = @cache_id_proc.call(proc_or_hash || {}) if @cache_id_proc
|
28
28
|
id ||= superclass.cache_id_from_hash(proc_or_hash || {}) if superclass.respond_to?(:cache_id_from_hash)
|
29
29
|
raise CacheableInvalidDataError, "Data missing id. Data: #{proc_or_hash.to_json}" unless id
|
30
|
+
|
30
31
|
id
|
31
32
|
end
|
32
33
|
|
@@ -34,6 +35,7 @@ module SBF
|
|
34
35
|
|
35
36
|
def cache_id_from_hash_func(proc)
|
36
37
|
raise ArgumentError, "Unable to re-set cache_id_from_hash on #{name}" if @cache_id_proc
|
38
|
+
|
37
39
|
@cache_id_proc = proc
|
38
40
|
end
|
39
41
|
end
|
@@ -19,6 +19,7 @@ module SBF
|
|
19
19
|
def error
|
20
20
|
log_deprecated('error', caller)
|
21
21
|
return nil if single_active_model_error.nil?
|
22
|
+
|
22
23
|
details = single_active_model_error.find { |x| x.is_a?(String) } if single_active_model_error.is_a?(Array)
|
23
24
|
details ||= single_active_model_error.is_a?(String) ? single_active_model_error : ''
|
24
25
|
details = details["#{errors.type}: ".length..(details.length - 1)] if details.start_with?("#{errors.type}: ")
|
@@ -26,13 +27,16 @@ module SBF
|
|
26
27
|
SBF::Client::ErrorEntity.new(code: errors.code, type: errors.type, details: details)
|
27
28
|
end
|
28
29
|
|
30
|
+
# rubocop:disable MultipleComparison
|
29
31
|
def [](*args)
|
30
32
|
log_deprecated('[]', caller) if args == [:results] || args == [:total_count]
|
31
33
|
return self if args == [:results]
|
32
34
|
return @total_count if args == [:total_count]
|
35
|
+
|
33
36
|
result = super
|
34
37
|
result.is_a?(Array) ? self.class.new(result, total_count) : result
|
35
38
|
end
|
39
|
+
# rubocop:enable MultipleComparison
|
36
40
|
end
|
37
41
|
end
|
38
42
|
end
|
@@ -16,10 +16,13 @@ module SBF
|
|
16
16
|
super
|
17
17
|
end
|
18
18
|
|
19
|
+
# rubocop:disable Style/MissingRespondToMissing
|
19
20
|
def method_missing(name)
|
20
21
|
return @props[name.to_sym] if @props.key?(name.to_sym)
|
22
|
+
|
21
23
|
super.method_missing(name)
|
22
24
|
end
|
25
|
+
# rubocop:enable Style/MissingRespondToMissing
|
23
26
|
|
24
27
|
def to_hash
|
25
28
|
{}.tap do |hsh|
|
@@ -8,6 +8,7 @@ module SBF
|
|
8
8
|
attr_accessor :is_owner
|
9
9
|
attr_accessor :permission_ids
|
10
10
|
|
11
|
+
# rubocop:disable Style/MissingRespondToMissing
|
11
12
|
def method_missing(method, *arguments, &block)
|
12
13
|
# If the method starts with 'can', assume they are trying to determine if the user has the permission
|
13
14
|
# in their list of permission ids and return the result
|
@@ -23,6 +24,7 @@ module SBF
|
|
23
24
|
|
24
25
|
super
|
25
26
|
end
|
27
|
+
# rubocop:enable Style/MissingRespondToMissing
|
26
28
|
end
|
27
29
|
|
28
30
|
class PermissionsAtEvent < SBF::Client::BaseEntity
|
@@ -15,6 +15,7 @@ module SBF
|
|
15
15
|
# (402)555-5555 --> tel:4025555555
|
16
16
|
def format_href
|
17
17
|
return 'tel:' + number.gsub(/\D/, '') unless number.nil?
|
18
|
+
|
18
19
|
number
|
19
20
|
end
|
20
21
|
|
@@ -22,6 +23,7 @@ module SBF
|
|
22
23
|
# (402)555-5555 ext. 5555 --> 402.555.555 x5555
|
23
24
|
def format_number
|
24
25
|
return number.gsub(/\D/, '').gsub(/(\d{3})(\d{3})(\d{4})(\d*)/, '\1.\2.\3 x\4').gsub(/x$/, '').rstrip unless number.nil?
|
26
|
+
|
25
27
|
number
|
26
28
|
end
|
27
29
|
end
|
@@ -100,7 +100,8 @@ module SBF
|
|
100
100
|
check_date = DateTime.parse(check_date) if check_date.is_a?(String)
|
101
101
|
check_date = DateTime.parse(check_date.to_s) if check_date.is_a?(Date)
|
102
102
|
check_date = DateTime.parse(check_date.strftime('%d/%m/%Y %H:%M:%S')) if check_date.is_a?(Time)
|
103
|
-
background_check_date && check_date.is_a?(DateTime)
|
103
|
+
background_check_date && check_date.is_a?(DateTime) \
|
104
|
+
&& background_check_date > check_date.prev_year(SBF::Client::Person::Policies::BACKGROUND_CHECK_YEARS_VALID)
|
104
105
|
end
|
105
106
|
end
|
106
107
|
|
@@ -373,6 +374,7 @@ module SBF
|
|
373
374
|
when SBF::Client::LeagueStatus::BARON
|
374
375
|
'Baron of the Brave'
|
375
376
|
when SBF::Client::LeagueStatus::NOT_APPLICABLE
|
377
|
+
''
|
376
378
|
end
|
377
379
|
end
|
378
380
|
end
|
@@ -34,55 +34,55 @@ module SBF
|
|
34
34
|
attr_accessor :file
|
35
35
|
attr_accessor :filename
|
36
36
|
multitype_attr_accessor(
|
37
|
-
|
37
|
+
:model,
|
38
|
+
[
|
38
39
|
[
|
39
|
-
[
|
40
|
-
|
41
|
-
|
42
|
-
'SBF::Client::Photo::PartialParticipant'
|
43
|
-
],
|
44
|
-
[
|
45
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::FUNDRAISER },
|
46
|
-
'SBF::Client::Photo::FullFundraiser',
|
47
|
-
'SBF::Client::Photo::PartialFundraiser'
|
48
|
-
],
|
49
|
-
[
|
50
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::FUND },
|
51
|
-
'SBF::Client::Photo::FullFund',
|
52
|
-
'SBF::Client::Photo::PartialFund'
|
53
|
-
],
|
54
|
-
[
|
55
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::CAMPAIGN },
|
56
|
-
'SBF::Client::Photo::FullCampaign',
|
57
|
-
'SBF::Client::Photo::PartialCampaign'
|
58
|
-
],
|
59
|
-
[
|
60
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::TEAM },
|
61
|
-
'SBF::Client::Photo::FullTeam',
|
62
|
-
'SBF::Client::Photo::PartialTeam'
|
63
|
-
],
|
64
|
-
[
|
65
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::EVENT },
|
66
|
-
'SBF::Client::Photo::FullEvent',
|
67
|
-
'SBF::Client::Photo::PartialEvent'
|
68
|
-
],
|
69
|
-
[
|
70
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::KID },
|
71
|
-
'SBF::Client::Photo::FullKid',
|
72
|
-
'SBF::Client::Photo::PartialKid'
|
73
|
-
],
|
74
|
-
[
|
75
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::EVENT_SUPPORTER },
|
76
|
-
'SBF::Client::Photo::FullEventSupporter',
|
77
|
-
'SBF::Client::Photo::PartialEventSupporter'
|
78
|
-
],
|
79
|
-
[
|
80
|
-
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::MEMORIAL },
|
81
|
-
'SBF::Client::Photo::FullMemorial',
|
82
|
-
'SBF::Client::Photo::PartialMemorial'
|
83
|
-
]
|
40
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::PARTICIPANT },
|
41
|
+
'SBF::Client::Photo::FullParticipant',
|
42
|
+
'SBF::Client::Photo::PartialParticipant'
|
84
43
|
],
|
85
|
-
|
44
|
+
[
|
45
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::FUNDRAISER },
|
46
|
+
'SBF::Client::Photo::FullFundraiser',
|
47
|
+
'SBF::Client::Photo::PartialFundraiser'
|
48
|
+
],
|
49
|
+
[
|
50
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::FUND },
|
51
|
+
'SBF::Client::Photo::FullFund',
|
52
|
+
'SBF::Client::Photo::PartialFund'
|
53
|
+
],
|
54
|
+
[
|
55
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::CAMPAIGN },
|
56
|
+
'SBF::Client::Photo::FullCampaign',
|
57
|
+
'SBF::Client::Photo::PartialCampaign'
|
58
|
+
],
|
59
|
+
[
|
60
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::TEAM },
|
61
|
+
'SBF::Client::Photo::FullTeam',
|
62
|
+
'SBF::Client::Photo::PartialTeam'
|
63
|
+
],
|
64
|
+
[
|
65
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::EVENT },
|
66
|
+
'SBF::Client::Photo::FullEvent',
|
67
|
+
'SBF::Client::Photo::PartialEvent'
|
68
|
+
],
|
69
|
+
[
|
70
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::KID },
|
71
|
+
'SBF::Client::Photo::FullKid',
|
72
|
+
'SBF::Client::Photo::PartialKid'
|
73
|
+
],
|
74
|
+
[
|
75
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::EVENT_SUPPORTER },
|
76
|
+
'SBF::Client::Photo::FullEventSupporter',
|
77
|
+
'SBF::Client::Photo::PartialEventSupporter'
|
78
|
+
],
|
79
|
+
[
|
80
|
+
->(v) { v[:model_type] == SBF::Client::Photo::ModelType::MEMORIAL },
|
81
|
+
'SBF::Client::Photo::FullMemorial',
|
82
|
+
'SBF::Client::Photo::PartialMemorial'
|
83
|
+
]
|
84
|
+
],
|
85
|
+
optional: false
|
86
86
|
)
|
87
87
|
attr_accessor :base_photo_url
|
88
88
|
attr_reader :original_file_id
|
@@ -11,7 +11,7 @@ require 'stbaldricks/entities/concerns/fundraising_page_concern'
|
|
11
11
|
|
12
12
|
module SBF
|
13
13
|
module Client
|
14
|
-
class Team
|
14
|
+
class Team < SBF::Client::TopLevelEntity
|
15
15
|
include Entities::DefaultCacheable
|
16
16
|
include DonationRecipientConcern
|
17
17
|
include EventYearConcern
|
File without changes
|
File without changes
|
File without changes
|
data/lib/stbaldricks/log.rb
CHANGED
@@ -8,9 +8,11 @@ module SBF
|
|
8
8
|
|
9
9
|
REQUIRED_METHODS = [:debug, :info, :warn, :error, :fatal, :unknown, :add, :level]
|
10
10
|
|
11
|
+
# rubocop:disable Style/MethodMissingSuper, Style/MissingRespondToMissing
|
11
12
|
def self.method_missing(sym, *args, &block)
|
12
13
|
SBF::Client::Configuration.logger.send(sym, *args, &block)
|
13
14
|
end
|
15
|
+
# rubocop:enable Style/MethodMissingSuper, Style/MissingRespondToMissing
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
@@ -23,9 +23,9 @@ class String
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def snake_case
|
26
|
-
gsub(SNAKE_CASE_REGEX)
|
26
|
+
gsub(SNAKE_CASE_REGEX) do
|
27
27
|
(Regexp.last_match[1] ? "_#{Regexp.last_match[1]}" : Regexp.last_match[2]).downcase
|
28
|
-
|
28
|
+
end.sub(ID_REGEX, '_id').sub(UUID_REGEX, '_uuid').sub(URL_REGEX, '_url')
|
29
29
|
end
|
30
30
|
|
31
31
|
def blank?
|
@@ -49,6 +49,7 @@ class String
|
|
49
49
|
def to_b
|
50
50
|
return false if self == 'false' || self == '0'
|
51
51
|
return true if self == 'true' || self == '1'
|
52
|
+
|
52
53
|
nil
|
53
54
|
end
|
54
55
|
end
|
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: 6.13.
|
4
|
+
version: 6.13.1.alpha.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Firespring
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-01-
|
11
|
+
date: 2019-01-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -31,19 +31,19 @@ dependencies:
|
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '5.2'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
|
-
name:
|
34
|
+
name: htmlentities
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - '='
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version:
|
39
|
+
version: 4.3.4
|
40
40
|
type: :runtime
|
41
41
|
prerelease: false
|
42
42
|
version_requirements: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
44
|
- - '='
|
45
45
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
46
|
+
version: 4.3.4
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: httmultiparty
|
49
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -59,19 +59,19 @@ dependencies:
|
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 0.3.16
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
62
|
+
name: httparty
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - '='
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version:
|
67
|
+
version: 0.14.0
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - '='
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version:
|
74
|
+
version: 0.14.0
|
75
75
|
description: Ruby library for accessing and integrating with the St. Baldrick's Foundation
|
76
76
|
API
|
77
77
|
email: opensource@stbaldricks.org
|
@@ -237,9 +237,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
237
237
|
version: '0'
|
238
238
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
239
239
|
requirements:
|
240
|
-
- - "
|
240
|
+
- - ">"
|
241
241
|
- !ruby/object:Gem::Version
|
242
|
-
version:
|
242
|
+
version: 1.3.1
|
243
243
|
requirements: []
|
244
244
|
rubygems_version: 3.0.1
|
245
245
|
signing_key:
|