stbaldricks 1.5.1.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/lib/stbaldricks.rb +2 -0
- data/lib/stbaldricks/api.rb +7 -0
- data/lib/stbaldricks/api_connector.rb +47 -0
- data/lib/stbaldricks/client.rb +7 -0
- data/lib/stbaldricks/configuration.rb +47 -0
- data/lib/stbaldricks/default_logger.rb +24 -0
- data/lib/stbaldricks/endpoints/communicate.rb +67 -0
- data/lib/stbaldricks/endpoints/config.rb +18 -0
- data/lib/stbaldricks/endpoints/contact.rb +12 -0
- data/lib/stbaldricks/endpoints/event.rb +39 -0
- data/lib/stbaldricks/endpoints/event_application.rb +32 -0
- data/lib/stbaldricks/endpoints/fund.rb +24 -0
- data/lib/stbaldricks/endpoints/kid.rb +24 -0
- data/lib/stbaldricks/endpoints/kid_honor.rb +17 -0
- data/lib/stbaldricks/endpoints/lib/entity.rb +247 -0
- data/lib/stbaldricks/endpoints/message.rb +27 -0
- data/lib/stbaldricks/endpoints/newsletter_recipient.rb +41 -0
- data/lib/stbaldricks/endpoints/participant.rb +66 -0
- data/lib/stbaldricks/endpoints/photo.rb +51 -0
- data/lib/stbaldricks/endpoints/recurring_gift.rb +18 -0
- data/lib/stbaldricks/endpoints/search.rb +63 -0
- data/lib/stbaldricks/endpoints/shave_schedule.rb +28 -0
- data/lib/stbaldricks/endpoints/user.rb +106 -0
- data/lib/stbaldricks/entities/batch.rb +29 -0
- data/lib/stbaldricks/entities/campaign.rb +37 -0
- data/lib/stbaldricks/entities/communicate.rb +20 -0
- data/lib/stbaldricks/entities/config.rb +41 -0
- data/lib/stbaldricks/entities/contact.rb +40 -0
- data/lib/stbaldricks/entities/contact_group.rb +29 -0
- data/lib/stbaldricks/entities/document_library.rb +19 -0
- data/lib/stbaldricks/entities/document_library_category.rb +14 -0
- data/lib/stbaldricks/entities/donation.rb +372 -0
- data/lib/stbaldricks/entities/donation/donor_type.rb +13 -0
- data/lib/stbaldricks/entities/donation/how_created.rb +22 -0
- data/lib/stbaldricks/entities/donation/payment_type.rb +17 -0
- data/lib/stbaldricks/entities/donation/promo_code.rb +22 -0
- data/lib/stbaldricks/entities/donation/recipient_type.rb +17 -0
- data/lib/stbaldricks/entities/donation/special_donation_type.rb +78 -0
- data/lib/stbaldricks/entities/donation/status.rb +12 -0
- data/lib/stbaldricks/entities/donation/submitter_type.rb +13 -0
- data/lib/stbaldricks/entities/donor.rb +15 -0
- data/lib/stbaldricks/entities/event.rb +173 -0
- data/lib/stbaldricks/entities/event/fund_relationship_type.rb +15 -0
- data/lib/stbaldricks/entities/event/how_created.rb +14 -0
- data/lib/stbaldricks/entities/event/promo_code.rb +11 -0
- data/lib/stbaldricks/entities/event/status.rb +13 -0
- data/lib/stbaldricks/entities/event/sub_type.rb +16 -0
- data/lib/stbaldricks/entities/event/type.rb +12 -0
- data/lib/stbaldricks/entities/event_application.rb +135 -0
- data/lib/stbaldricks/entities/event_application/model_type.rb +15 -0
- data/lib/stbaldricks/entities/event_application/status.rb +23 -0
- data/lib/stbaldricks/entities/event_donation_summary.rb +18 -0
- data/lib/stbaldricks/entities/event_participant_summary.rb +17 -0
- data/lib/stbaldricks/entities/event_supporter.rb +24 -0
- data/lib/stbaldricks/entities/fund.rb +98 -0
- data/lib/stbaldricks/entities/fundraiser.rb +124 -0
- data/lib/stbaldricks/entities/international_partner.rb +58 -0
- data/lib/stbaldricks/entities/kid.rb +190 -0
- data/lib/stbaldricks/entities/kid_honor.rb +123 -0
- data/lib/stbaldricks/entities/lib/address.rb +25 -0
- data/lib/stbaldricks/entities/lib/base.rb +505 -0
- data/lib/stbaldricks/entities/lib/cacheable.rb +43 -0
- data/lib/stbaldricks/entities/lib/default_cacheable.rb +17 -0
- data/lib/stbaldricks/entities/lib/email_address.rb +15 -0
- data/lib/stbaldricks/entities/lib/error.rb +38 -0
- data/lib/stbaldricks/entities/lib/fundraising_page.rb +20 -0
- data/lib/stbaldricks/entities/lib/geo_location.rb +9 -0
- data/lib/stbaldricks/entities/lib/location.rb +27 -0
- data/lib/stbaldricks/entities/lib/name.rb +17 -0
- data/lib/stbaldricks/entities/lib/not_implemented_object.rb +32 -0
- data/lib/stbaldricks/entities/lib/opt_out_settings.rb +21 -0
- data/lib/stbaldricks/entities/lib/payment.rb +86 -0
- data/lib/stbaldricks/entities/lib/permissions.rb +33 -0
- data/lib/stbaldricks/entities/lib/phone.rb +29 -0
- data/lib/stbaldricks/entities/lib/third_party_media.rb +20 -0
- data/lib/stbaldricks/entities/lib/top_level.rb +99 -0
- data/lib/stbaldricks/entities/lib/venue.rb +18 -0
- data/lib/stbaldricks/entities/memorial.rb +61 -0
- data/lib/stbaldricks/entities/message.rb +65 -0
- data/lib/stbaldricks/entities/newsletter_recipient.rb +17 -0
- data/lib/stbaldricks/entities/organization.rb +90 -0
- data/lib/stbaldricks/entities/page.rb +49 -0
- data/lib/stbaldricks/entities/participant.rb +216 -0
- data/lib/stbaldricks/entities/person.rb +403 -0
- data/lib/stbaldricks/entities/photo.rb +260 -0
- data/lib/stbaldricks/entities/recurring_gift.rb +215 -0
- data/lib/stbaldricks/entities/response.rb +37 -0
- data/lib/stbaldricks/entities/search.rb +223 -0
- data/lib/stbaldricks/entities/section.rb +15 -0
- data/lib/stbaldricks/entities/shave_schedule.rb +69 -0
- data/lib/stbaldricks/entities/summary.rb +32 -0
- data/lib/stbaldricks/entities/team.rb +95 -0
- data/lib/stbaldricks/entities/user.rb +76 -0
- data/lib/stbaldricks/enums/country.rb +223 -0
- data/lib/stbaldricks/enums/feature.rb +29 -0
- data/lib/stbaldricks/enums/league_status.rb +16 -0
- data/lib/stbaldricks/enums/model_type.rb +39 -0
- data/lib/stbaldricks/enums/permission.rb +223 -0
- data/lib/stbaldricks/enums/permission_model_type.rb +21 -0
- data/lib/stbaldricks/enums/province.rb +39 -0
- data/lib/stbaldricks/enums/state.rb +137 -0
- data/lib/stbaldricks/enums/top_level_category_type.rb +25 -0
- data/lib/stbaldricks/errors.rb +18 -0
- data/lib/stbaldricks/log.rb +16 -0
- data/lib/stbaldricks/patches/array.rb +6 -0
- data/lib/stbaldricks/patches/boolean.rb +25 -0
- data/lib/stbaldricks/patches/class.rb +13 -0
- data/lib/stbaldricks/patches/float.rb +9 -0
- data/lib/stbaldricks/patches/hash.rb +16 -0
- data/lib/stbaldricks/patches/integer.rb +9 -0
- data/lib/stbaldricks/patches/nil.rb +25 -0
- data/lib/stbaldricks/patches/string.rb +54 -0
- data/lib/stbaldricks/request.rb +146 -0
- data/lib/stbaldricks/version.rb +5 -0
- metadata +215 -0
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class MessageEndpoint < SBF::Client::EntityEndpoint
|
6
|
+
def mark_as_read(message_id)
|
7
|
+
raise SBF::Client::Error, 'Message Id must be an Integer' unless message_id.is_a?(Integer)
|
8
|
+
|
9
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/mark_as_read/#{message_id}")
|
10
|
+
|
11
|
+
error = SBF::Client::ErrorEntity.new(response) unless ok?(response)
|
12
|
+
|
13
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: response, error: error)
|
14
|
+
end
|
15
|
+
|
16
|
+
def mark_as_unread(message_id)
|
17
|
+
raise SBF::Client::Error, 'Message Id must be an Integer' unless message_id.is_a?(Integer)
|
18
|
+
|
19
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/mark_as_unread/#{message_id}")
|
20
|
+
|
21
|
+
error = SBF::Client::ErrorEntity.new(response) unless ok?(response)
|
22
|
+
|
23
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: response, error: error)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class NewsletterRecipientEndpoint < EntityEndpoint
|
6
|
+
def subscribe(entity_or_email, first_name = nil, last_name = nil, welcome_email = true)
|
7
|
+
if entity_or_email.is_a?(String) && entity_or_email && first_name && last_name
|
8
|
+
entity = target_class.new(email_address: entity_or_email, first_name: first_name, last_name: last_name, welcome_email: welcome_email)
|
9
|
+
elsif entity_or_email.is_a?(SBF::Client::BaseEntity)
|
10
|
+
entity = entity_or_email
|
11
|
+
else
|
12
|
+
raise SBF::Client::Error, 'Invalid Entity'
|
13
|
+
end
|
14
|
+
|
15
|
+
data = entity.to_hash
|
16
|
+
|
17
|
+
response = SBF::Client::Api::Request.public_post_request("#{base_uri}/subscribe", data)
|
18
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!) unless ok?(response)
|
19
|
+
|
20
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
21
|
+
end
|
22
|
+
|
23
|
+
def unsubscribe(entity_or_email)
|
24
|
+
if entity_or_email.is_a?(String)
|
25
|
+
entity = target_class.new(email_address: entity_or_email)
|
26
|
+
elsif entity_or_email.is_a?(SBF::Client::BaseEntity)
|
27
|
+
entity = entity_or_email
|
28
|
+
else
|
29
|
+
raise SBF::Client::Error, 'Invalid Entity'
|
30
|
+
end
|
31
|
+
|
32
|
+
data = entity.to_hash
|
33
|
+
|
34
|
+
response = SBF::Client::Api::Request.public_post_request("#{base_uri}/unsubscribe", data)
|
35
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!) unless ok?(response)
|
36
|
+
|
37
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class ParticipantEndpoint < EntityEndpoint
|
6
|
+
def join_team(participant_id, new_team_id)
|
7
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/move_to_different_team", id: participant_id, new_team_id: new_team_id)
|
8
|
+
|
9
|
+
if ok?(response)
|
10
|
+
data = SBF::Client::FullParticipant.new(JSON.parse(response.body).symbolize!)
|
11
|
+
else
|
12
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!)
|
13
|
+
end
|
14
|
+
|
15
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
16
|
+
end
|
17
|
+
|
18
|
+
def start_team(participant_id, team_name, fundraising_goal)
|
19
|
+
response = SBF::Client::Api::Request.post_request(
|
20
|
+
"#{base_uri}/move_to_different_team",
|
21
|
+
id: participant_id,
|
22
|
+
new_team_id: 0,
|
23
|
+
team_name: team_name,
|
24
|
+
goal: fundraising_goal,
|
25
|
+
how_created: SBF::Client::Team::HowCreated::WEBSITE)
|
26
|
+
|
27
|
+
if ok?(response)
|
28
|
+
data = SBF::Client::FullParticipant.new(JSON.parse(response.body).symbolize!)
|
29
|
+
else
|
30
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!)
|
31
|
+
end
|
32
|
+
|
33
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
34
|
+
end
|
35
|
+
|
36
|
+
def leave_team(participant_id)
|
37
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/move_to_different_team", id: participant_id, new_team_id: 0)
|
38
|
+
|
39
|
+
if ok?(response)
|
40
|
+
data = SBF::Client::FullParticipant.new(JSON.parse(response.body).symbolize!)
|
41
|
+
else
|
42
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!)
|
43
|
+
end
|
44
|
+
|
45
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
46
|
+
end
|
47
|
+
|
48
|
+
def delete_role(participant_id, role)
|
49
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/delete_role", participant_id: participant_id, role: role)
|
50
|
+
|
51
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!) unless ok?(response)
|
52
|
+
|
53
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
54
|
+
end
|
55
|
+
|
56
|
+
def move_to_different_event(participant_id, new_event_id)
|
57
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/move_to_different_event",
|
58
|
+
id: participant_id, new_event_id: new_event_id)
|
59
|
+
|
60
|
+
error = SBF::Client::ErrorEntity.new(JSON.parse(response.body).symbolize!) unless ok?(response)
|
61
|
+
|
62
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class PhotoEndpoint < SBF::Client::EntityEndpoint
|
6
|
+
def create(entity, with = {})
|
7
|
+
raise SBF::Client::Error, 'Invalid Entity' unless entity.is_a?(SBF::Client::BaseEntity)
|
8
|
+
|
9
|
+
with = normalize_with(with)
|
10
|
+
|
11
|
+
create_data = entity.to_hash
|
12
|
+
filename = create_data.delete(:filename)
|
13
|
+
file = create_data.delete(:file)
|
14
|
+
create_data.store(:with, with)
|
15
|
+
|
16
|
+
response = SBF::Client::Api::Request.file_post_request(path: "#{base_uri}/create", params: create_data, file: file, filename: filename)
|
17
|
+
|
18
|
+
entity, error = hydrate_entity(response, create_data, entity)
|
19
|
+
|
20
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: entity, error: error)
|
21
|
+
end
|
22
|
+
|
23
|
+
def update(_id = nil, entity_or_hash = nil, with = {})
|
24
|
+
if entity_or_hash.is_a?(SBF::Client::BaseEntity)
|
25
|
+
# If someone has passed in an entity, just convert it to a hash
|
26
|
+
data = entity_or_hash.to_hash
|
27
|
+
elsif entity_or_hash.is_a?(Hash)
|
28
|
+
# If someone has passed in a hash, make sure all of it's values match fields in the entity class
|
29
|
+
data = sanitize(entity_or_hash)
|
30
|
+
else
|
31
|
+
raise SBF::Client::Error, 'Invalid Data'
|
32
|
+
end
|
33
|
+
|
34
|
+
filename = data.delete(:filename)
|
35
|
+
file = data.delete(:file)
|
36
|
+
|
37
|
+
with = normalize_with(with)
|
38
|
+
data[:with] = with
|
39
|
+
response = if file
|
40
|
+
SBF::Client::Api::Request.file_post_request(path: "#{base_uri}/update", params: data, file: file, filename: filename)
|
41
|
+
else
|
42
|
+
SBF::Client::Api::Request.post_request("#{base_uri}/update", data)
|
43
|
+
end
|
44
|
+
|
45
|
+
data, error = hydrate_entity(response, data, entity_or_hash)
|
46
|
+
|
47
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class RecurringGiftEndpoint < SBF::Client::EntityEndpoint
|
6
|
+
def sync(data)
|
7
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/sync", data)
|
8
|
+
|
9
|
+
unless ok?(response)
|
10
|
+
parsed_response_body = JSON.parse(response.body).symbolize!
|
11
|
+
error = SBF::Client::ErrorEntity.new(parsed_response_body)
|
12
|
+
end
|
13
|
+
|
14
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: response, error: error)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class SearchEndpoint < EntityEndpoint
|
6
|
+
# Find entities in search matching the provided search term and/or filters.
|
7
|
+
#
|
8
|
+
# @param [String|Array] model_type The type or types of entities to include in the results.
|
9
|
+
# @param [String] search_text A search term to filter the results.
|
10
|
+
# @param [Array] filters Filters to apply to the results. The array should contain hashes with the column, value and operator of the filter.
|
11
|
+
# (i.e.) [{column: 'event_id', value: [11560, 11016,11378,11163], operator: 'in'}]
|
12
|
+
# @param [Hash] geo_location The location details for performing a radius search. The hash should contain the lat, lon and distance.
|
13
|
+
# (i.e.) {distance: 5, lat: 40.754567, lon: -96.695894}
|
14
|
+
# @param [Hash] options An hash containing options for ordering, applying a limit and offset to the results.
|
15
|
+
# @option options [Hash] :order The ordering to apply to the results. The hash should contain the field_name to order on
|
16
|
+
# as well as the direction. (i.e.) {field_name: 'foo', direction: 'asc'}
|
17
|
+
# @option [Integer] :limit The maximum number of results to return.
|
18
|
+
# @option [Integer] :offset The query offset.
|
19
|
+
# @return [Client::Api::Response] The data attribute on a successful response will be
|
20
|
+
# an array of search entities matching the model type(s) specified
|
21
|
+
def find(model_type, search_text = nil, filters = [], geo_location = {}, options = {})
|
22
|
+
if [search_text, filters, geo_location].all?(&:empty?)
|
23
|
+
raise SBF::Client::Error, 'Must provide either a search_text, filter or geo_location for the query'
|
24
|
+
end
|
25
|
+
|
26
|
+
model_type = Array(model_type).to_json unless model_type.empty?
|
27
|
+
filters = filters.to_json unless filters.empty?
|
28
|
+
geo_location = geo_location.to_json unless geo_location.empty?
|
29
|
+
|
30
|
+
# Build the parameter list for search
|
31
|
+
params, response_data = {}, {}
|
32
|
+
{model_type: model_type, search_text: search_text, filters: filters, geo_location: geo_location}.each do |k, v|
|
33
|
+
params[k.to_sym] = v unless v.empty?
|
34
|
+
end
|
35
|
+
|
36
|
+
options.each do |k, v|
|
37
|
+
params[k.to_sym] = v.is_a?(Hash) ? v.to_json : v unless v.empty?
|
38
|
+
end
|
39
|
+
|
40
|
+
response = SBF::Client::Api::Request.get_request("#{base_uri}/search", params)
|
41
|
+
parsed_response_body = JSON.parse(response.body).symbolize!
|
42
|
+
|
43
|
+
if ok?(response)
|
44
|
+
parsed_response_body = JSON.parse(parsed_response_body[:response]).symbolize!
|
45
|
+
|
46
|
+
response_data[:total_count] = parsed_response_body[:hits][:total]
|
47
|
+
response_data[:results] = [].tap do |arr|
|
48
|
+
parsed_response_body[:hits][:hits].each do |entity_data|
|
49
|
+
arr << target_class.const_get(entity_data[:_type].capitalize).new(entity_data[:_source])
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
data = response_data
|
54
|
+
else
|
55
|
+
data = nil
|
56
|
+
error = SBF::Client::ErrorEntity.new(parsed_response_body)
|
57
|
+
end
|
58
|
+
|
59
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class ShaveScheduleEndpoint < SBF::Client::EntityEndpoint
|
6
|
+
def get(id, year, with = {})
|
7
|
+
super("#{id}/#{year}", with)
|
8
|
+
end
|
9
|
+
|
10
|
+
def update(id, year, data, with = {})
|
11
|
+
super("#{id}/#{year}", data, with)
|
12
|
+
end
|
13
|
+
|
14
|
+
def notify(data)
|
15
|
+
response = SBF::Client::Api::Request.post_request("#{base_uri}/notify", data)
|
16
|
+
|
17
|
+
if ok?(response)
|
18
|
+
data = nil
|
19
|
+
else
|
20
|
+
parsed_response_body = JSON.parse(response.body).symbolize!
|
21
|
+
error = SBF::Client::ErrorEntity.new(parsed_response_body)
|
22
|
+
end
|
23
|
+
|
24
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'stbaldricks/endpoints/lib/entity'
|
2
|
+
|
3
|
+
module SBF
|
4
|
+
module Client
|
5
|
+
class UserEndpoint < EntityEndpoint
|
6
|
+
# Logs in a user and configures the client library to use user credentials for subsequent requests.
|
7
|
+
# Returns the access token for the user that should be held onto to configure the client library in
|
8
|
+
# future requests that are outside of this scope.
|
9
|
+
#
|
10
|
+
# @param username [string]
|
11
|
+
# @param password [string]
|
12
|
+
# @return [string]
|
13
|
+
def login!(username, password)
|
14
|
+
response = SBF::Client::Api::Request.public_post_request(
|
15
|
+
"/#{SBF::Client::Api::VERSION}/security/login",
|
16
|
+
username: username,
|
17
|
+
password: password
|
18
|
+
)
|
19
|
+
parsed_response = JSON.parse(response.body).symbolize!
|
20
|
+
|
21
|
+
if ok?(response)
|
22
|
+
SBF::Client::Configuration.user_token = parsed_response[:token]
|
23
|
+
data = parsed_response.merge(user: target_class.new(parsed_response[:user]))
|
24
|
+
else
|
25
|
+
SBF::Client::Configuration.user_token = nil
|
26
|
+
error = SBF::Client::ErrorEntity.new(parsed_response)
|
27
|
+
end
|
28
|
+
|
29
|
+
SBF::Client::LOG.info { "SBF::Client - User Login: #{username}, Token: #{parsed_response[:token]}" }
|
30
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
31
|
+
end
|
32
|
+
|
33
|
+
# Returns array of entity hash info for the entities logged in user has access to for requested permission.
|
34
|
+
#
|
35
|
+
# @raise [SBFClientError]
|
36
|
+
def list_entities_user_has_permission(permission_id, event_years)
|
37
|
+
raise SBF::Client::Error, 'User not logged in' if SBF::Client::Configuration.user_token.nil?
|
38
|
+
|
39
|
+
event_years = [event_years] if event_years.is_a? Fixnum
|
40
|
+
|
41
|
+
response = SBF::Client::Api::Request.post_request(
|
42
|
+
"/#{SBF::Client::Api::VERSION}/security/list_entities_user_has_permission",
|
43
|
+
permission_id: permission_id,
|
44
|
+
event_years: event_years
|
45
|
+
)
|
46
|
+
parsed_response = JSON.parse(response.body).symbolize!
|
47
|
+
|
48
|
+
if ok?(response)
|
49
|
+
data = parsed_response
|
50
|
+
else
|
51
|
+
error = SBF::Client::ErrorEntity.new(parsed_response)
|
52
|
+
end
|
53
|
+
|
54
|
+
SBF::Client::LOG.info { "SBF::Client - User List Entities User Has Permission: #{permission_id}, #{event_years}, Entities: #{data}" }
|
55
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: data, error: error)
|
56
|
+
end
|
57
|
+
|
58
|
+
# Changes the password of the user associated with the given profile_id
|
59
|
+
#
|
60
|
+
# @raise [SBFClientError]
|
61
|
+
def change_password(profile_id, password)
|
62
|
+
raise SBF::Client::Error, 'User not logged in' if SBF::Client::Configuration.user_token.nil?
|
63
|
+
|
64
|
+
response = SBF::Client::Api::Request.post_request(
|
65
|
+
"/#{SBF::Client::Api::VERSION}/security/change_password",
|
66
|
+
profile_id: profile_id,
|
67
|
+
password: password
|
68
|
+
)
|
69
|
+
|
70
|
+
if ok?(response)
|
71
|
+
SBF::Client::Configuration.user_token = nil
|
72
|
+
else
|
73
|
+
SBF::Client::Configuration.user_token = nil
|
74
|
+
parsed_response = JSON.parse(response.body).symbolize!
|
75
|
+
error = SBF::Client::ErrorEntity.new(parsed_response)
|
76
|
+
end
|
77
|
+
|
78
|
+
SBF::Client::LOG.info { "SB::Client - Change Password for user with profile_id: #{profile_id}" }
|
79
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
80
|
+
end
|
81
|
+
|
82
|
+
# Removes the Facebook user of the given profile_id
|
83
|
+
#
|
84
|
+
# @raise [SBFClientError]
|
85
|
+
def disconnect_facebook(profile_id)
|
86
|
+
raise SBF::Client::Error, 'User not logged in' if SBF::Client::Configuration.user_token.nil?
|
87
|
+
|
88
|
+
response = SBF::Client::Api::Request.post_request(
|
89
|
+
"/#{SBF::Client::Api::VERSION}/user/disconnect_facebook",
|
90
|
+
profile_id: profile_id
|
91
|
+
)
|
92
|
+
|
93
|
+
if ok?(response)
|
94
|
+
SBF::Client::Configuration.user_token = nil
|
95
|
+
else
|
96
|
+
SBF::Client::Configuration.user_token = nil
|
97
|
+
parsed_response = JSON.parse(response.body).symbolize!
|
98
|
+
error = SBF::Client::ErrorEntity.new(parsed_response)
|
99
|
+
end
|
100
|
+
|
101
|
+
SBF::Client::LOG.info { "SB::Client - Disconnecting Facebook user with profile_id: #{profile_id}" }
|
102
|
+
SBF::Client::Api::Response.new(http_code: response.code, data: nil, error: error)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'stbaldricks/entities/donation'
|
2
|
+
require 'stbaldricks/entities/lib/top_level'
|
3
|
+
require 'stbaldricks/entities/lib/payment'
|
4
|
+
|
5
|
+
module SBF
|
6
|
+
module Client
|
7
|
+
class Batch < SBF::Client::TopLevelEntity
|
8
|
+
actions DEFAULT_CRUD_ACTIONS
|
9
|
+
|
10
|
+
module Type
|
11
|
+
IMPORTED = 'imported'
|
12
|
+
PROCESSED = 'processed'
|
13
|
+
end
|
14
|
+
|
15
|
+
attr_accessor :id
|
16
|
+
attr_accessor :type
|
17
|
+
multitype_attr_accessor(
|
18
|
+
:payment_details, [
|
19
|
+
[->(v) { v[:type] == SBF::Client::Payment::Type::CREDIT_CARD }, 'SBF::Client::Payment::CreditCardDetails'],
|
20
|
+
[->(v) { v[:type] == SBF::Client::Payment::Type::NONCE }, 'SBF::Client::Payment::NonceDetails']
|
21
|
+
]
|
22
|
+
)
|
23
|
+
attr_accessor :amount
|
24
|
+
attr_accessor :filename
|
25
|
+
attr_accessor :created_at, :modified_at, :processed_at, :submitted_by
|
26
|
+
entity_collection_attr_accessor :donations, 'SBF::Client::FullDonation', 'SBF::Client::PartialDonation'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'stbaldricks/entities/lib/fundraising_page'
|
2
|
+
require 'stbaldricks/entities/lib/base'
|
3
|
+
require 'stbaldricks/entities/lib/top_level'
|
4
|
+
|
5
|
+
module SBF
|
6
|
+
module Client
|
7
|
+
class Campaign < SBF::Client::TopLevelEntity
|
8
|
+
action :get
|
9
|
+
action :find
|
10
|
+
|
11
|
+
disallow_instantiation
|
12
|
+
|
13
|
+
class Totals < SBF::Client::BaseEntity
|
14
|
+
attr_reader :current_year_amount_raised
|
15
|
+
attr_reader :previous_year_amount_raised
|
16
|
+
attr_reader :all_years_amount_raised
|
17
|
+
attr_reader :participants
|
18
|
+
attr_reader :shavees
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
class PartialCampaign < Campaign
|
23
|
+
attr_accessor :id
|
24
|
+
end
|
25
|
+
|
26
|
+
class FullCampaign < Campaign
|
27
|
+
attr_accessor :id
|
28
|
+
attr_accessor :name
|
29
|
+
attr_accessor :website_url
|
30
|
+
|
31
|
+
entity_attr_reader :totals, 'SBF::Client::Campaign::Totals', nil, true
|
32
|
+
entity_attr_accessor :web_page, 'SBF::Client::WebPage', nil, true
|
33
|
+
|
34
|
+
entity_attr_accessor :photo, 'SBF::Client::Photo', nil, true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|