perka 1.0.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 (79) hide show
  1. data/.gitignore +7 -0
  2. data/Gemfile +12 -0
  3. data/LICENSE.txt +201 -0
  4. data/README.md +17 -0
  5. data/Rakefile +70 -0
  6. data/lib/perka/client_api.rb +260 -0
  7. data/lib/perka/model/abstract_reward_confirmation.rb +15 -0
  8. data/lib/perka/model/abstract_user.rb +37 -0
  9. data/lib/perka/model/api_description.rb +22 -0
  10. data/lib/perka/model/base_entity_global.rb +27 -0
  11. data/lib/perka/model/bounce_back_target.rb +33 -0
  12. data/lib/perka/model/canned_email_outbound_message.rb +14 -0
  13. data/lib/perka/model/clerk.rb +41 -0
  14. data/lib/perka/model/composite_target.rb +22 -0
  15. data/lib/perka/model/console_message.rb +16 -0
  16. data/lib/perka/model/coupon.rb +52 -0
  17. data/lib/perka/model/coupon_campaign.rb +26 -0
  18. data/lib/perka/model/coupon_redemption.rb +26 -0
  19. data/lib/perka/model/coupon_target.rb +30 -0
  20. data/lib/perka/model/coupon_visibility.rb +29 -0
  21. data/lib/perka/model/customer.rb +41 -0
  22. data/lib/perka/model/customer_device.rb +23 -0
  23. data/lib/perka/model/endpoint_description.rb +49 -0
  24. data/lib/perka/model/entity_annotation.rb +33 -0
  25. data/lib/perka/model/entity_description.rb +31 -0
  26. data/lib/perka/model/everybody_target.rb +15 -0
  27. data/lib/perka/model/feedback_item.rb +28 -0
  28. data/lib/perka/model/first_visit_target.rb +16 -0
  29. data/lib/perka/model/idle_customer_target.rb +20 -0
  30. data/lib/perka/model/integrator_user.rb +16 -0
  31. data/lib/perka/model/internal_user.rb +15 -0
  32. data/lib/perka/model/like_to_unlock_target.rb +14 -0
  33. data/lib/perka/model/list_target.rb +17 -0
  34. data/lib/perka/model/merchant.rb +42 -0
  35. data/lib/perka/model/merchant_capability.rb +16 -0
  36. data/lib/perka/model/merchant_device.rb +29 -0
  37. data/lib/perka/model/merchant_location.rb +46 -0
  38. data/lib/perka/model/merchant_user.rb +29 -0
  39. data/lib/perka/model/nobody_target.rb +15 -0
  40. data/lib/perka/model/outbound_message.rb +14 -0
  41. data/lib/perka/model/parameter_description.rb +29 -0
  42. data/lib/perka/model/participation_target.rb +34 -0
  43. data/lib/perka/model/physical_redemption_target.rb +17 -0
  44. data/lib/perka/model/points_activity.rb +34 -0
  45. data/lib/perka/model/points_activity_confirmation.rb +24 -0
  46. data/lib/perka/model/points_catalog_item.rb +41 -0
  47. data/lib/perka/model/program.rb +35 -0
  48. data/lib/perka/model/program_tier.rb +30 -0
  49. data/lib/perka/model/program_type.rb +27 -0
  50. data/lib/perka/model/property.rb +65 -0
  51. data/lib/perka/model/punch_reward_confirmation.rb +43 -0
  52. data/lib/perka/model/push_message.rb +17 -0
  53. data/lib/perka/model/redemption_coupon_confirmation.rb +26 -0
  54. data/lib/perka/model/redemption_reward_confirmation.rb +26 -0
  55. data/lib/perka/model/reward.rb +38 -0
  56. data/lib/perka/model/reward_advancement.rb +30 -0
  57. data/lib/perka/model/reward_grant.rb +37 -0
  58. data/lib/perka/model/sms_message.rb +15 -0
  59. data/lib/perka/model/sms_outbound_message.rb +14 -0
  60. data/lib/perka/model/social_list_target.rb +14 -0
  61. data/lib/perka/model/social_service_subscription.rb +26 -0
  62. data/lib/perka/model/street_address.rb +27 -0
  63. data/lib/perka/model/tier_target.rb +24 -0
  64. data/lib/perka/model/tier_traversal.rb +30 -0
  65. data/lib/perka/model/tier_traversal_confirmation.rb +28 -0
  66. data/lib/perka/model/type.rb +33 -0
  67. data/lib/perka/model/user_credentials.rb +28 -0
  68. data/lib/perka/model/visit.rb +59 -0
  69. data/lib/perka/model/visit_confirmation.rb +47 -0
  70. data/lib/perka/model/weather_target.rb +27 -0
  71. data/lib/perka/model/yield_management_target.rb +23 -0
  72. data/lib/perka/perka_api.rb +89 -0
  73. data/lib/perka/version.rb +3 -0
  74. data/lib/perka.rb +6 -0
  75. data/lib/perka_fast.rb +68 -0
  76. data/perka.gemspec +20 -0
  77. data/spec/api_integrator_spec.rb +210 -0
  78. data/spec/model_spec.rb +24 -0
  79. metadata +178 -0
@@ -0,0 +1,37 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'flatpack_core'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Encapsulates one or more <entityReference payloadName='abstractRewardConfirmation'>
9
+ # AbstractRewardConfirmation</entityReference> objects to be given to a customer.
10
+ # <p> This differs from a <entityReference payloadName='visitConfirmation'>
11
+ # VisitConfirmation</entityReference> in that there's no previously-created
12
+ # Visit object to confirm. Instead, a RewardGrant will create a confirmed Visit
13
+ # and possibly create a Customer object based on an email address or SMS phone
14
+ # number. The UUID of the Visit object will be set to the RewardGrant's UUID
15
+ # to allow post-grant correlation. <p> Exactly one of <entityReference payloadName='rewardGrant'>
16
+ # #getCustomerEmail()</entityReference>, <entityReference payloadName='rewardGrant'>
17
+ # #getCustomerPhone()</entityReference>, or <entityReference payloadName='rewardGrant'>
18
+ # #getCustomerUuid()</entityReference> must be provided to identify the customer.
19
+ class RewardGrant < Flatpack::Core::BaseHasUuid
20
+
21
+ PROPERTY_NAMES = [
22
+ :customer,
23
+
24
+ # At least one <entityReference payloadName='abstractRewardConfirmation'>
25
+ # AbstractRewardConfirmation</entityReference> must be given.
26
+ :reward_confirmations
27
+ ]
28
+ attr_accessor *PROPERTY_NAMES
29
+
30
+ require 'perka/model/customer'
31
+ TYPE_MAP = {
32
+ :customer => Perka::Model::Customer
33
+ }
34
+
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,15 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Records the receipt of an SMS message.
9
+ class SmsMessage < BaseEntityGlobal
10
+
11
+
12
+
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/outbound_message'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ class SmsOutboundMessage < OutboundMessage
9
+
10
+
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/list_target'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ class SocialListTarget < ListTarget
9
+
10
+
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,26 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents a customer's preference to have a specific social event posted
9
+ # to a specific social backend.
10
+ class SocialServiceSubscription < BaseEntityGlobal
11
+
12
+ PROPERTY_NAMES = [
13
+ :customer,
14
+ :social_action,
15
+ :social_service
16
+ ]
17
+ attr_accessor *PROPERTY_NAMES
18
+
19
+ require 'perka/model/customer'
20
+ TYPE_MAP = {
21
+ :customer => Perka::Model::Customer
22
+ }
23
+
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,27 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'flatpack_core'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A simple representation of a mailing address. It is intended to be used as
9
+ # a payload carrier object or as an embeddable JPA object. <p> All of the properties
10
+ # in this object are marked as PermitAll because access to the StreetAddress
11
+ # itself is controlled by the enclosing object.
12
+ class StreetAddress < Flatpack::Core::BaseHasUuid
13
+
14
+ PROPERTY_NAMES = [
15
+ :address_2,
16
+ :city,
17
+ :zip,
18
+ :address,
19
+ :state,
20
+ :country
21
+ ]
22
+ attr_accessor *PROPERTY_NAMES
23
+
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,24 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/coupon_target'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Makes coupons available to customers who are members of a given <entityReference
9
+ # payloadName='programTier'> ProgramTier</entityReference>.
10
+ class TierTarget < CouponTarget
11
+
12
+ PROPERTY_NAMES = [
13
+ :program_tier
14
+ ]
15
+ attr_accessor *PROPERTY_NAMES
16
+
17
+ require 'perka/model/program_tier'
18
+ TYPE_MAP = {
19
+ :program_tier => Perka::Model::ProgramTier
20
+ }
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,30 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Maps a <entityReference payloadName='customer'> Customer</entityReference>
9
+ # to a <entityReference payloadName='programTier'> ProgramTier</entityReference>
10
+ # and provides the total number of validated visits to the associated <entityReference
11
+ # payloadName='merchant'> Merchant</entityReference>.
12
+ class TierTraversal < BaseEntityGlobal
13
+
14
+ PROPERTY_NAMES = [
15
+ :customer,
16
+ :program_tier,
17
+ :visit_count
18
+ ]
19
+ attr_accessor *PROPERTY_NAMES
20
+
21
+ require 'perka/model/program_tier'
22
+ require 'perka/model/customer'
23
+ TYPE_MAP = {
24
+ :program_tier => Perka::Model::ProgramTier,
25
+ :customer => Perka::Model::Customer
26
+ }
27
+
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,28 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/abstract_reward_confirmation'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Allows a customer to be placed in an arbitrary program tier. This confirmation
9
+ # type may be used to demote a customer to a lower tier if the customer does
10
+ # not meet the visit count requirement for membership in its current tier.
11
+ class TierTraversalConfirmation < AbstractRewardConfirmation
12
+
13
+ PROPERTY_NAMES = [
14
+
15
+ # The ProgramTier that the customer associated with the visit should be
16
+ # moved into.
17
+ :program_tier
18
+ ]
19
+ attr_accessor *PROPERTY_NAMES
20
+
21
+ require 'perka/model/program_tier'
22
+ TYPE_MAP = {
23
+ :program_tier => Perka::Model::ProgramTier
24
+ }
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,33 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'flatpack_core'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A simple JSON type description.
9
+ class Type < Flatpack::Core::BaseHasUuid
10
+
11
+ PROPERTY_NAMES = [
12
+ :json_kind,
13
+ :enum_values,
14
+ :list_element,
15
+ :map_key,
16
+ :map_value,
17
+ :type_hint,
18
+ :name
19
+ ]
20
+ attr_accessor *PROPERTY_NAMES
21
+
22
+ require 'perka/model/type'
23
+ require 'perka/model/type'
24
+ require 'perka/model/type'
25
+ TYPE_MAP = {
26
+ :map_key => Perka::Model::Type,
27
+ :list_element => Perka::Model::Type,
28
+ :map_value => Perka::Model::Type
29
+ }
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,28 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'flatpack_core'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # A transfer object used to hold data related to account creation and maintenance.
9
+ class UserCredentials < Flatpack::Core::BaseHasUuid
10
+
11
+ PROPERTY_NAMES = [
12
+ :email,
13
+ :first_name,
14
+ :last_name,
15
+ :new_password,
16
+ :new_password_confirmation,
17
+ :phone,
18
+ :phone_confirmation_code,
19
+ :current_password,
20
+ :hmac,
21
+ :user_uuid
22
+ ]
23
+ attr_accessor *PROPERTY_NAMES
24
+
25
+
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,59 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/base_entity_global'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Represents a check-in at a <entityReference payloadName='merchantLocation'>
9
+ # MerchantLocation</entityReference> by a <entityReference payloadName='customer'>
10
+ # Customer</entityReference>.
11
+ class Visit < BaseEntityGlobal
12
+
13
+ PROPERTY_NAMES = [
14
+ :customer,
15
+
16
+ # Where the Visit occurred.
17
+ :merchant_location,
18
+
19
+ # Indicates that the Visit was created via the SMS endpoint and not from
20
+ # an app.
21
+ :sms,
22
+
23
+ # The latest <entityReference payloadName='pointsActivity'> PointsActivity</entityReference>
24
+ # for the Visit's <entityReference payloadName='customer'> Customer</entityReference>
25
+ # at the <entityReference payloadName='merchantLocation'> MerchantLocation</entityReference>.
26
+ # This may be null if the customer has no previous points activity at the
27
+ # merchant.
28
+ :current_points_activity,
29
+
30
+ # The punches earned during the Visit, broken out by <entityReference payloadName='reward'>
31
+ # Reward</entityReference>.
32
+ :reward_advancements,
33
+
34
+ # The time at which the visit was confirmed by the clerk.
35
+ :validated_at,
36
+
37
+ # The <entityReference payloadName='coupon'> Coupons</entityReference> that
38
+ # were redeemed during the visit.
39
+ :coupon_redemptions,
40
+
41
+ # Any feedback left by the Customer after the Visit was validated.
42
+ :feedback_item
43
+ ]
44
+ attr_accessor *PROPERTY_NAMES
45
+
46
+ require 'perka/model/feedback_item'
47
+ require 'perka/model/points_activity'
48
+ require 'perka/model/merchant_location'
49
+ require 'perka/model/customer'
50
+ TYPE_MAP = {
51
+ :feedback_item => Perka::Model::FeedbackItem,
52
+ :current_points_activity => Perka::Model::PointsActivity,
53
+ :merchant_location => Perka::Model::MerchantLocation,
54
+ :customer => Perka::Model::Customer
55
+ }
56
+
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,47 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'flatpack_core'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ # Confirms a previously-created <entityReference payloadName='visit'> Visit</entityReference>
9
+ # that was the result of a <entityReference payloadName='customer'> Customer</entityReference>
10
+ # checking into a location.
11
+ class VisitConfirmation < Flatpack::Core::BaseHasUuid
12
+
13
+ PROPERTY_NAMES = [
14
+
15
+ # The <entityReference payloadName='customer'> Customer</entityReference>
16
+ # associated with the <entityReference payloadName='visit'> Visit</entityReference>.
17
+ # This property is usually inferred from the associated <entityReference
18
+ # payloadName='visit'> Visit</entityReference>.
19
+ :customer,
20
+
21
+ # The <entityReference payloadName='merchant'> Merchant</entityReference>
22
+ # associated with the <entityReference payloadName='visit'> Visit</entityReference>.
23
+ # This property is usually inferred from the associated <entityReference
24
+ # payloadName='visit'> Visit</entityReference>.
25
+ :merchant,
26
+
27
+ # The previously-created <entityReference payloadName='visit'> Visit</entityReference>
28
+ # that is associated with a customer checkin.
29
+ :visit,
30
+
31
+ # The rewards associated with the visit (e.g. punches earned, coupons redeemed).
32
+ :reward_confirmations
33
+ ]
34
+ attr_accessor *PROPERTY_NAMES
35
+
36
+ require 'perka/model/merchant'
37
+ require 'perka/model/visit'
38
+ require 'perka/model/customer'
39
+ TYPE_MAP = {
40
+ :merchant => Perka::Model::Merchant,
41
+ :visit => Perka::Model::Visit,
42
+ :customer => Perka::Model::Customer
43
+ }
44
+
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/list_target'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ class WeatherTarget < ListTarget
9
+
10
+ PROPERTY_NAMES = [
11
+ :operation,
12
+ :metric,
13
+ :threshold,
14
+
15
+ # The local minutes-of-day after which the availability of the coupon will
16
+ # not change for the remainder of the day.
17
+ :local_decision_at,
18
+
19
+ # The time of day for which the metric threshold must be met.
20
+ :local_metric_at
21
+ ]
22
+ attr_accessor *PROPERTY_NAMES
23
+
24
+
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,23 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require 'perka/model/coupon_target'
4
+
5
+ module Perka
6
+ module Model
7
+
8
+ class YieldManagementTarget < CouponTarget
9
+
10
+ PROPERTY_NAMES = [
11
+
12
+ # Returns the minutes-of-day that the redemption window closes.
13
+ :local_redemption_end_at,
14
+
15
+ # Returns the minutes-of-day that the redemption window opens.
16
+ :local_redemption_start_at
17
+ ]
18
+ attr_accessor *PROPERTY_NAMES
19
+
20
+
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,89 @@
1
+ require 'flatpack_core'
2
+
3
+ module Perka
4
+ class PerkaApi < Perka::ClientApi
5
+
6
+ include Flatpack::Core::MapInitialize
7
+
8
+ attr_accessor :access_token, :access_expiration, :refresh_token, :user_uuid
9
+
10
+ # our session is considered active if we've never received an access
11
+ # token, or our token expiration as after now
12
+ def session_active?
13
+ !@access_token or @access_expiration > Time.now
14
+ end
15
+
16
+ def refresh_session
17
+ oauth_refresh_token
18
+ end
19
+
20
+ # Concrete implementations that require authentication should implement
21
+ # this method if authenticated requests require custom request headers
22
+ def auth_headers
23
+ @access_token ? {'Authorization' => "Bearer #{@access_token}"} : {}
24
+ end
25
+
26
+ # Grants an integrator access token
27
+ def oauth_integrator_login(integrator_id, integrator_secret)
28
+ @integrator_id = integrator_id
29
+ @integrator_secret = integrator_secret
30
+ payload =
31
+ "grant_type=password"\
32
+ "&username=#{integrator_id}"\
33
+ "&client_id=#{integrator_id}"\
34
+ "&password=#{URI::encode(integrator_secret)}"\
35
+ "&scope=INTEGRATOR";
36
+
37
+ execute_token_request(self, payload);
38
+ end
39
+
40
+ # returns a new PerkaApi authorized as the given role and user
41
+ def oauth_integrator_become(role, uuid)
42
+ role = role
43
+ payload = "grant_type=client_credentials&scope=#{URI::encode(role)}:#{uuid}"
44
+ new_api = PerkaApi.new({
45
+ :server_base => @server_base,
46
+ :flatpack => @flatpack,
47
+ :access_token => @access_token,
48
+ :access_expiration => @access_expiration,
49
+ :verbose => @verbose,
50
+ })
51
+ execute_token_request(new_api, payload)
52
+ new_api
53
+ end
54
+
55
+ # Obtain a new access token using integrator credentials and a refresh token.
56
+ def oauth_refresh_token
57
+ payload = "grant_type=refresh_token"\
58
+ "&client_id=#{@integrator_id}"\
59
+ "&client_secret=#{URI::encode(@integrator_secret)}"\
60
+ "&refresh_token=#{@refresh_token}"
61
+
62
+ execute_token_request(self, payload);
63
+ end
64
+
65
+ private
66
+
67
+ def execute_token_request(api, payload)
68
+ json = TokenRequest.new(api, payload).execute
69
+ status = json['status_code']
70
+ expires = json['expires_in']
71
+ api.access_expiration = Time.now + expires.to_i if expires
72
+ api.access_token = json['access_token']
73
+ api.refresh_token = json['refresh_token']
74
+ uuid = json['uuid']
75
+ api.user_uuid = uuid if uuid
76
+ end
77
+
78
+ class TokenRequest < Flatpack::Client::JsonRequest
79
+ attr_accessor :payload
80
+
81
+ def initialize(api, payload)
82
+ @payload = payload
83
+ super(api, "POST", "/api/2/auth/token");
84
+ header("Content-Type", "application/x-www-form-urlencoded");
85
+ end
86
+ end
87
+
88
+ end
89
+ end
@@ -0,0 +1,3 @@
1
+ module Perka
2
+ VERSION = "1.0.pre"
3
+ end
data/lib/perka.rb ADDED
@@ -0,0 +1,6 @@
1
+ require "perka_fast"
2
+ require "perka/perka_api"
3
+
4
+ module Perka
5
+ # Your code goes here...
6
+ end
data/lib/perka_fast.rb ADDED
@@ -0,0 +1,68 @@
1
+ # Generated File - DO NOT EDIT
2
+
3
+ require "perka/client_api"
4
+ require "perka/model/points_activity"
5
+ require "perka/model/base_entity_global"
6
+ require "perka/model/property"
7
+ require "perka/model/api_description"
8
+ require "perka/model/entity_annotation"
9
+ require "perka/model/user_credentials"
10
+ require "perka/model/customer"
11
+ require "perka/model/merchant"
12
+ require "perka/model/abstract_user"
13
+ require "perka/model/clerk"
14
+ require "perka/model/integrator_user"
15
+ require "perka/model/internal_user"
16
+ require "perka/model/merchant_user"
17
+ require "perka/model/merchant_location"
18
+ require "perka/model/reward"
19
+ require "perka/model/reward_grant"
20
+ require "perka/model/visit"
21
+ require "perka/model/visit_confirmation"
22
+ require "perka/model/points_catalog_item"
23
+ require "perka/model/type"
24
+ require "perka/model/endpoint_description"
25
+ require "perka/model/entity_description"
26
+ require "perka/model/customer_device"
27
+ require "perka/model/sms_message"
28
+ require "perka/model/social_service_subscription"
29
+ require "perka/model/tier_traversal"
30
+ require "perka/model/program_tier"
31
+ require "perka/model/merchant_capability"
32
+ require "perka/model/outbound_message"
33
+ require "perka/model/canned_email_outbound_message"
34
+ require "perka/model/console_message"
35
+ require "perka/model/push_message"
36
+ require "perka/model/sms_outbound_message"
37
+ require "perka/model/coupon_visibility"
38
+ require "perka/model/merchant_device"
39
+ require "perka/model/street_address"
40
+ require "perka/model/program"
41
+ require "perka/model/reward_advancement"
42
+ require "perka/model/abstract_reward_confirmation"
43
+ require "perka/model/points_activity_confirmation"
44
+ require "perka/model/punch_reward_confirmation"
45
+ require "perka/model/redemption_coupon_confirmation"
46
+ require "perka/model/redemption_reward_confirmation"
47
+ require "perka/model/tier_traversal_confirmation"
48
+ require "perka/model/coupon_redemption"
49
+ require "perka/model/feedback_item"
50
+ require "perka/model/parameter_description"
51
+ require "perka/model/coupon"
52
+ require "perka/model/coupon_target"
53
+ require "perka/model/bounce_back_target"
54
+ require "perka/model/composite_target"
55
+ require "perka/model/everybody_target"
56
+ require "perka/model/like_to_unlock_target"
57
+ require "perka/model/first_visit_target"
58
+ require "perka/model/idle_customer_target"
59
+ require "perka/model/list_target"
60
+ require "perka/model/participation_target"
61
+ require "perka/model/social_list_target"
62
+ require "perka/model/weather_target"
63
+ require "perka/model/nobody_target"
64
+ require "perka/model/physical_redemption_target"
65
+ require "perka/model/tier_target"
66
+ require "perka/model/yield_management_target"
67
+ require "perka/model/program_type"
68
+ require "perka/model/coupon_campaign"
data/perka.gemspec ADDED
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/perka/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Joe Stelmach"]
6
+ gem.email = ["joe@getperka.com"]
7
+ gem.description = %q{Write a gem description}
8
+ gem.summary = %q{Write a gem summary}
9
+ gem.homepage = ""
10
+
11
+ gem.files = `git ls-files`.split($\)
12
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
13
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
14
+ gem.name = "perka"
15
+ gem.require_paths = ["lib"]
16
+ gem.version = Perka::VERSION
17
+
18
+ gem.add_development_dependency "rspec", "~> 2.6"
19
+ gem.add_dependency("flatpack_client", "=1.0.pre")
20
+ end