centaman 0.1.13 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a9b3d981b63ed4416c5e333317c28fb04524048e392b7caccee09e8cd6bd495b
4
- data.tar.gz: d8f764ca7575aafff45fcde1304ba845132a3317d150c66a1de0ab016b43ea57
3
+ metadata.gz: ef62880b7fa69d8b383ae13dc7b40232745c6f9809db064fed231227cba33a47
4
+ data.tar.gz: 2ea1531297af8f2ef6cdb0bdc2dae62a77d6942e184c8290a1410b6c7d49501f
5
5
  SHA512:
6
- metadata.gz: 6a4302d1ad1a91ee6170a6181a427af15f8283181fd4755abd6e333ab2f315db8c0c099a9e57373f9e0d812863616226bd1565cd787530a2c46c4ae3d08e175e
7
- data.tar.gz: d7e7b5a72d7bcfef26003fb7895f3a79f4b68d54dd580940f0150dfcf850fb111da9f8c6823136ab799d4b1b7aa288ecdf06110bde36aa05a59589dd33bed555
6
+ metadata.gz: a355d42cce6f5a4a6110db171e57b9a74565b830d45168e4858e329489f97570fecb6242a958dc9693fe4783f8789cf7fd5112d8f215e2162df2b8c4c576c61d
7
+ data.tar.gz: 56ce92944389d33068241021c15cbd4b1fe8e64d6231296729f1c1318a8c1b426922f82dd880e2f2167a23d28033889aae49d1f0e1ead7955ab440b2a918f106
data/lib/centaman.rb CHANGED
@@ -7,6 +7,7 @@ require 'centaman/json_wrapper'
7
7
  require 'centaman/object'
8
8
  require 'centaman/filter'
9
9
  require 'centaman/attribute'
10
+ require 'centaman/service/authenticate_member'
10
11
  require 'centaman/service/booking_time'
11
12
  require 'centaman/service/booking_type'
12
13
  require 'centaman/service/capacity'
@@ -16,6 +17,8 @@ require 'centaman/service/extra'
16
17
  require 'centaman/service/gift_ticket'
17
18
  require 'centaman/service/general_admission_ticket'
18
19
  require 'centaman/service/hold_ticket'
20
+ require 'centaman/service/membership_type'
21
+ require 'centaman/service/package'
19
22
  require 'centaman/service/purchase_ticket'
20
23
  require 'centaman/service/ticket_type'
21
24
  require 'centaman/object/booking_time'
@@ -27,6 +30,9 @@ require 'centaman/object/effect'
27
30
  require 'centaman/object/extra'
28
31
  require 'centaman/object/gift_ticket'
29
32
  require 'centaman/object/general_admission_ticket'
33
+ require 'centaman/object/member'
34
+ require 'centaman/object/membership_type'
35
+ require 'centaman/object/package'
30
36
  require 'centaman/object/purchased_ticket'
31
37
  require 'centaman/object/ticket_type'
32
38
 
@@ -1,13 +1,14 @@
1
1
  module Centaman
2
2
  #:nodoc:
3
3
  class Filter
4
- attr_reader :booking_type_id, :booking_time_id, :start_date, :end_date
4
+ attr_reader :booking_type_id, :booking_time_id, :start_date, :end_date, :membership_type_id
5
5
 
6
6
  def initialize(args = {})
7
7
  @booking_type_id = args[:booking_type_id].try(:to_i)
8
8
  @booking_time_id = args[:booking_time_id].try(:to_i)
9
9
  @start_date = args[:start_date]
10
10
  @end_date = args[:end_date]
11
+ @membership_type_id = args.fetch(:membership_type_id, nil).try(:to_i)
11
12
  end
12
13
 
13
14
  def find_booking_type(booking_type_id)
@@ -42,5 +43,22 @@ module Centaman
42
43
  def capacity
43
44
  @capacity ||= Centaman::Service::Capacity.new(booking_time_id: booking_time_id, start_date: start_date).objects.first
44
45
  end
46
+
47
+ def membership_types
48
+ Centaman::Service::MembershipType.new.objects
49
+ end
50
+
51
+ def find_membership_type(membership_type_id)
52
+ raise "membership_type_id is required for find_membership_type method of #{self.class.name} class" if membership_type_id.nil?
53
+ Centaman::Service::MembershipType.new.find(membership_type_id)
54
+ end
55
+
56
+ def packages
57
+ Centaman::Service::Package.new(membership_type_id: membership_type_id).objects
58
+ end
59
+
60
+ def find_package(id)
61
+ Centaman::Service::Package.new(membership_type_id: membership_type_id).find(id)
62
+ end
45
63
  end
46
64
  end
@@ -27,4 +27,4 @@ module Centaman
27
27
  raise "object_class is required for #{self.class.name}"
28
28
  end
29
29
  end
30
- end
30
+ end
@@ -24,4 +24,4 @@ module Centaman
24
24
  # hook for subclasses
25
25
  end
26
26
  end
27
- end
27
+ end
@@ -18,9 +18,9 @@ module Centaman
18
18
  Centaman::Attribute.new(
19
19
  centaman_key: 'CouponCode',
20
20
  app_key: :coupon_code,
21
- type: :integer
21
+ type: :string
22
22
  ),
23
-
23
+
24
24
  Centaman::Attribute.new(
25
25
  centaman_key: 'LimitedUse',
26
26
  app_key: :limited_use,
@@ -0,0 +1,119 @@
1
+ module Centaman
2
+ class Object::Member < Centaman::Object
3
+ # rubocop:disable Metrics/MethodLength
4
+ attr_reader :id, :package_id
5
+
6
+ def define_variables(args)
7
+ super
8
+ @id = member_code # TODO confirm member code is the centaman defined ID
9
+ end
10
+
11
+ def json
12
+ {
13
+ id: id,
14
+ member_code: member_code,
15
+ member_number: member_number,
16
+ memberships: memberships,
17
+ first_name: first_name,
18
+ last_name: last_name,
19
+ title: title,
20
+ email: email,
21
+ password: password,
22
+ gender: gender,
23
+ date_of_birth: date_of_birth,
24
+ address: address,
25
+ is_primary: is_primary,
26
+ primary_member_id: primary_member_id,
27
+ gift_purchaser_id: gift_purchaser_id,
28
+ concession_card_number: concession_card_number,
29
+ incomplete: incomplete
30
+ }
31
+ end
32
+
33
+ def attributes
34
+ [
35
+ Centaman::Attribute.new(
36
+ centaman_key: 'MemberCode',
37
+ app_key: :member_code,
38
+ type: :integer
39
+ ),
40
+ Centaman::Attribute.new(
41
+ centaman_key: 'MemberNumber',
42
+ app_key: :member_number,
43
+ type: :string
44
+ ),
45
+ Centaman::Attribute.new(
46
+ centaman_key: 'Memberships',
47
+ app_key: :memberships,
48
+ type: :string
49
+ ),
50
+ Centaman::Attribute.new(
51
+ centaman_key: 'FirstName',
52
+ app_key: :first_name,
53
+ type: :string
54
+ ),
55
+ Centaman::Attribute.new(
56
+ centaman_key: 'LastName',
57
+ app_key: :last_name,
58
+ type: :string
59
+ ),
60
+ Centaman::Attribute.new(
61
+ centaman_key: 'Title',
62
+ app_key: :title,
63
+ type: :string
64
+ ),
65
+ Centaman::Attribute.new(
66
+ centaman_key: 'Email',
67
+ app_key: :email,
68
+ type: :string
69
+ ),
70
+ Centaman::Attribute.new(
71
+ centaman_key: 'Password',
72
+ app_key: :password,
73
+ type: :string
74
+ ),
75
+ Centaman::Attribute.new(
76
+ centaman_key: 'Gender',
77
+ app_key: :gender,
78
+ type: :string
79
+ ),
80
+ Centaman::Attribute.new(
81
+ centaman_key: 'DateOfBirth',
82
+ app_key: :date_of_birth,
83
+ type: :datetime
84
+ ),
85
+ Centaman::Attribute.new(
86
+ centaman_key: 'HomeAddress',
87
+ app_key: :address,
88
+ type: :string
89
+ ),
90
+ Centaman::Attribute.new(
91
+ centaman_key: 'IsPrimary',
92
+ app_key: :is_primary,
93
+ type: :boolean
94
+ ),
95
+ Centaman::Attribute.new(
96
+ centaman_key: 'PrimaryMemberId',
97
+ app_key: :primary_member_id,
98
+ type: :integer
99
+ ),
100
+ Centaman::Attribute.new(
101
+ centaman_key: 'GiftPurchaserId',
102
+ app_key: :gift_purchaser_id,
103
+ type: :integer
104
+ ),
105
+ Centaman::Attribute.new(
106
+ centaman_key: 'ConcessionCardNumber',
107
+ app_key: :concession_card_number,
108
+ type: :integer # TODO confirm this is integer and what it's used for
109
+ ),
110
+ Centaman::Attribute.new(
111
+ centaman_key: 'Incomplete',
112
+ app_key: :incomplete,
113
+ type: :boolean
114
+ )
115
+ ]
116
+ end
117
+ # rubocop:enable Metrics/MethodLength
118
+ end
119
+ end
@@ -0,0 +1,120 @@
1
+ module Centaman
2
+ class Object::MembershipType < Centaman::Object
3
+ attr_reader :id, :package_id
4
+
5
+ def define_variables(args)
6
+ super
7
+ @id = membership_code
8
+ @package_id = is_membership_package ? membership_code : nil
9
+ end
10
+
11
+ def json
12
+ {
13
+ id: id,
14
+ node_no: node_no,
15
+ membership_code: membership_code,
16
+ package_id: package_id,
17
+ membership_class: membership_class,
18
+ department_description: department_description,
19
+ is_membership_package: is_membership_package,
20
+ join_fee_button_id: join_fee_button_id,
21
+ sort_sequence_number: sort_sequence_number,
22
+ cost: cost,
23
+ minimum_age: minimum_age,
24
+ maximum_age: maximum_age,
25
+ membership_description: membership_description,
26
+ is_age_based: is_age_based,
27
+ sale_price: sale_price,
28
+ is_tax_inclusive: is_tax_inclusive,
29
+ tax_percentage: tax_percentage,
30
+ package_only: package_only
31
+ }
32
+ end
33
+
34
+ # rubocop:disable Metrics/MethodLength
35
+ def attributes
36
+ [
37
+ Centaman::Attribute.new(
38
+ centaman_key: 'NodeNo',
39
+ app_key: :node_no,
40
+ type: :integer
41
+ ),
42
+ Centaman::Attribute.new(
43
+ centaman_key: 'DepartmentDescription',
44
+ app_key: :department_description,
45
+ type: :string
46
+ ),
47
+ Centaman::Attribute.new(
48
+ centaman_key: 'IsMemberShipPackage',
49
+ app_key: :is_membership_package,
50
+ type: :boolean
51
+ ),
52
+ Centaman::Attribute.new(
53
+ centaman_key: 'JoinFeeButtonId',
54
+ app_key: :join_fee_button_id,
55
+ type: :integer
56
+ ),
57
+ Centaman::Attribute.new(
58
+ centaman_key: 'SortSequenceNumber',
59
+ app_key: :sort_sequence_number,
60
+ type: :integer
61
+ ),
62
+ Centaman::Attribute.new(
63
+ centaman_key: 'MembershipCode',
64
+ app_key: :membership_code,
65
+ type: :integer
66
+ ),
67
+ Centaman::Attribute.new(
68
+ centaman_key: 'MembershipClass',
69
+ app_key: :membership_class,
70
+ type: :string
71
+ ),
72
+ Centaman::Attribute.new(
73
+ centaman_key: 'Cost',
74
+ app_key: :cost,
75
+ type: :float
76
+ ),
77
+ Centaman::Attribute.new(
78
+ centaman_key: 'MinimumAgeRequired',
79
+ app_key: :minimum_age,
80
+ type: :integer
81
+ ),
82
+ Centaman::Attribute.new(
83
+ centaman_key: 'MaximumAgeRequirement',
84
+ app_key: :maximum_age,
85
+ type: :integer
86
+ ),
87
+ Centaman::Attribute.new(
88
+ centaman_key: 'MembershipDescription',
89
+ app_key: :membership_description,
90
+ type: :string
91
+ ),
92
+ Centaman::Attribute.new(
93
+ centaman_key: 'IsMembershipAgeBased',
94
+ app_key: :is_age_based,
95
+ type: :boolean
96
+ ),
97
+ Centaman::Attribute.new(
98
+ centaman_key: 'SalePrice',
99
+ app_key: :sale_price,
100
+ type: :float
101
+ ),
102
+ Centaman::Attribute.new(
103
+ centaman_key: 'IsPriceTaxInclusive',
104
+ app_key: :is_tax_inclusive,
105
+ type: :boolean
106
+ ),
107
+ Centaman::Attribute.new(
108
+ centaman_key: 'TaxPercentage',
109
+ app_key: :tax_percentage,
110
+ type: :float
111
+ ),
112
+ Centaman::Attribute.new(
113
+ centaman_key: 'PackageOnly',
114
+ app_key: :package_only,
115
+ type: :boolean
116
+ )
117
+ ]
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,89 @@
1
+ module Centaman
2
+ class Object::Package < Centaman::Object
3
+ attr_reader :id, :membership_type_id
4
+
5
+ def define_variables(args)
6
+ super
7
+ @id = membership_code
8
+ @membership_type_id = args.fetch(:membership_type_id, nil)
9
+ end
10
+
11
+ def json
12
+ {
13
+ id: id,
14
+ membership_type_id: membership_type_id,
15
+ membership_code: membership_code,
16
+ membership_class: membership_class,
17
+ cost: cost,
18
+ minimum_age: minimum_age,
19
+ maximum_age: maximum_age,
20
+ membership_description: membership_description,
21
+ sale_price: sale_price,
22
+ is_tax_inclusive: is_tax_inclusive,
23
+ tax_percentage: tax_percentage,
24
+ package_only: package_only
25
+ }
26
+ end
27
+
28
+ # rubocop:disable Metrics/MethodLength
29
+ def attributes
30
+ [
31
+ Centaman::Attribute.new(
32
+ centaman_key: 'MembershipCode',
33
+ app_key: :membership_code,
34
+ type: :integer
35
+ ),
36
+ Centaman::Attribute.new(
37
+ centaman_key: 'MembershipClass',
38
+ app_key: :membership_class,
39
+ type: :string
40
+ ),
41
+ Centaman::Attribute.new(
42
+ centaman_key: 'Cost',
43
+ app_key: :cost,
44
+ type: :float
45
+ ),
46
+ Centaman::Attribute.new(
47
+ centaman_key: 'MinimumAgeRequired',
48
+ app_key: :minimum_age,
49
+ type: :integer
50
+ ),
51
+ Centaman::Attribute.new(
52
+ centaman_key: 'MaximumAgeRequirement',
53
+ app_key: :maximum_age,
54
+ type: :integer
55
+ ),
56
+ Centaman::Attribute.new(
57
+ centaman_key: 'MembershipDescription',
58
+ app_key: :membership_description,
59
+ type: :string
60
+ ),
61
+ Centaman::Attribute.new(
62
+ centaman_key: 'IsMembershipAgeBased',
63
+ app_key: :is_age_based,
64
+ type: :boolean
65
+ ),
66
+ Centaman::Attribute.new(
67
+ centaman_key: 'SalePrice',
68
+ app_key: :sale_price,
69
+ type: :float
70
+ ),
71
+ Centaman::Attribute.new(
72
+ centaman_key: 'IsPriceTaxInclusive',
73
+ app_key: :is_tax_inclusive,
74
+ type: :boolean
75
+ ),
76
+ Centaman::Attribute.new(
77
+ centaman_key: 'TaxPercentage',
78
+ app_key: :tax_percentage,
79
+ type: :float
80
+ ),
81
+ Centaman::Attribute.new(
82
+ centaman_key: 'PackageOnly',
83
+ app_key: :package_only,
84
+ type: :boolean
85
+ )
86
+ ]
87
+ end
88
+ end
89
+ end
@@ -57,4 +57,4 @@ module Centaman
57
57
  request_type == :get ? :query : :body
58
58
  end
59
59
  end
60
- end
60
+ end
@@ -0,0 +1,44 @@
1
+ module Centaman
2
+ class Service::AuthenticateMember < Centaman::Service
3
+ include Centaman::JsonWrapper
4
+
5
+ attr_reader :member_code, :last_name, :email, :password
6
+
7
+ def after_init(args)
8
+ @member_code = args.fetch(:member_code, nil).try(:to_i)
9
+ @last_name = args.fetch(:last_name, nil)
10
+ @email = args.fetch(:email, nil)
11
+ @password = args.fetch(:password, nil)
12
+ end
13
+
14
+ def endpoint
15
+ '/member_services/Authentication'
16
+ end
17
+
18
+ def object_class
19
+ Centaman::Object::Member
20
+ end
21
+
22
+ def build_object(resp)
23
+ return build_objects(resp) if resp.respond_to?(:map)
24
+
25
+ return auth_error(resp) unless resp.respond_to?(:merge)
26
+ @build_object ||= object_class.new(resp.merge(additional_hash_to_serialize_after_response))
27
+ end
28
+
29
+ def options_hash
30
+ {
31
+ 'MemberNumber' => member_code,
32
+ 'Surname' => last_name,
33
+ 'Email' => email,
34
+ 'Password' => password
35
+ }.to_json
36
+ end
37
+
38
+ private
39
+
40
+ def auth_error(resp)
41
+ { error: resp.parsed_response ? resp.parsed_response : 'Authentication Failed. Invalid credentials.' }
42
+ end
43
+ end
44
+ end
@@ -1,6 +1,7 @@
1
1
  module Centaman
2
2
  class Service::BookingType < Centaman::Service
3
3
  include Centaman::JsonWrapper
4
+
4
5
  def endpoint
5
6
  '/ticket_services/TimedTicket'
6
7
  end
@@ -17,11 +18,7 @@ module Centaman
17
18
  end
18
19
 
19
20
  def self.find(booking_type_id, date)
20
- obj = new(
21
- start_date: date,
22
- end_date: date
23
- )
24
- obj.objects.detect {|obj| obj.booking_type_id == booking_type_id }
21
+ new.objects.detect {|obj| obj.booking_type_id == booking_type_id }
25
22
  end
26
23
  end
27
24
  end
@@ -0,0 +1,17 @@
1
+ module Centaman
2
+ class Service::MembershipType < Centaman::Service
3
+ include Centaman::JsonWrapper
4
+
5
+ def endpoint
6
+ '/member_services/MembershipType'
7
+ end
8
+
9
+ def object_class
10
+ Centaman::Object::MembershipType
11
+ end
12
+
13
+ def find(id)
14
+ objects.detect {|obj| obj.id == id }
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,33 @@
1
+ module Centaman
2
+ class Service::Package < Centaman::Service
3
+ include Centaman::JsonWrapper
4
+
5
+ attr_reader :membership_type_id
6
+
7
+ def after_init(args)
8
+ @membership_type_id = args.fetch(:membership_type_id, nil).try(:to_i)
9
+ end
10
+
11
+ def endpoint
12
+ "/member_services/MembershipType?PackageID=#{membership_type_id}"
13
+ end
14
+
15
+ def object_class
16
+ Centaman::Object::Package
17
+ end
18
+
19
+ def find(id)
20
+ objects.detect {|obj| obj.id == id }
21
+ end
22
+
23
+ def additional_hash_to_serialize_after_response
24
+ { membership_type_id: membership_type_id }
25
+ end
26
+
27
+ # def options_hash
28
+ # {
29
+ # 'PackageID' => membership_type_id
30
+ # }.to_json
31
+ # end
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module Centaman
2
- VERSION = "0.1.13"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -2,17 +2,17 @@ module Centaman
2
2
  #:nodoc:
3
3
  class Wrapper
4
4
  include HTTParty
5
-
5
+
6
6
  if ENV['FIXIE_URL']
7
7
  FIXIE = URI.parse(ENV['FIXIE_URL'])
8
8
  http_proxy FIXIE.host, FIXIE.port, FIXIE.user, FIXIE.password
9
9
  end
10
-
10
+
11
11
  attr_reader :api_username, :api_password, :api_token
12
12
 
13
13
  def initialize(args = {})
14
14
  @api_username = ENV['CENTAMAN_API_USERNAME']
15
- @api_password = ENV['CENTAMAN_API_PASSWORD']
15
+ @api_password = ENV['CENTAMAN_API_PASSWORD']
16
16
  @api_token = ENV.fetch('CENTAMAN_API_TOKEN', generate_token)
17
17
  self.class.base_uri ENV['CENTAMAN_API_URL']
18
18
  after_init(args)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: centaman
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - francirp
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2018-01-15 00:00:00.000000000 Z
12
+ date: 2018-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -101,9 +101,13 @@ files:
101
101
  - lib/centaman/object/extra.rb
102
102
  - lib/centaman/object/general_admission_ticket.rb
103
103
  - lib/centaman/object/gift_ticket.rb
104
+ - lib/centaman/object/member.rb
105
+ - lib/centaman/object/membership_type.rb
106
+ - lib/centaman/object/package.rb
104
107
  - lib/centaman/object/purchased_ticket.rb
105
108
  - lib/centaman/object/ticket_type.rb
106
109
  - lib/centaman/service.rb
110
+ - lib/centaman/service/authenticate_member.rb
107
111
  - lib/centaman/service/booking_time.rb
108
112
  - lib/centaman/service/booking_type.rb
109
113
  - lib/centaman/service/capacity.rb
@@ -113,6 +117,8 @@ files:
113
117
  - lib/centaman/service/general_admission_ticket.rb
114
118
  - lib/centaman/service/gift_ticket.rb
115
119
  - lib/centaman/service/hold_ticket.rb
120
+ - lib/centaman/service/membership_type.rb
121
+ - lib/centaman/service/package.rb
116
122
  - lib/centaman/service/purchase_ticket.rb
117
123
  - lib/centaman/service/ticket_type.rb
118
124
  - lib/centaman/version.rb