centaman 0.1.13 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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