supersaas-api-client 1.1.1 → 2.0.1
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 +4 -4
- data/.github/workflows/actions.yaml +21 -0
- data/.gitignore +3 -1
- data/.rubocop.yml +1 -0
- data/.rubocop_todo.yml +296 -0
- data/Gemfile +5 -3
- data/Gemfile.lock +31 -4
- data/README.md +108 -54
- data/Rakefile +8 -6
- data/bin/console +4 -3
- data/examples/appointments.rb +70 -42
- data/examples/forms.rb +20 -22
- data/examples/groups.rb +20 -0
- data/examples/promotions.rb +32 -0
- data/examples/schedules.rb +23 -11
- data/examples/users.rb +31 -23
- data/lib/supersaas-api-client/api/appointments.rb +38 -25
- data/lib/supersaas-api-client/api/base_api.rb +69 -23
- data/lib/supersaas-api-client/api/forms.rb +16 -9
- data/lib/supersaas-api-client/api/groups.rb +12 -0
- data/lib/supersaas-api-client/api/promotions.rb +29 -0
- data/lib/supersaas-api-client/api/schedules.rb +14 -4
- data/lib/supersaas-api-client/api/users.rb +28 -15
- data/lib/supersaas-api-client/client.rb +101 -35
- data/lib/supersaas-api-client/exception.rb +3 -1
- data/lib/supersaas-api-client/models/appointment.rb +9 -12
- data/lib/supersaas-api-client/models/base_model.rb +4 -1
- data/lib/supersaas-api-client/models/field_list.rb +12 -0
- data/lib/supersaas-api-client/models/form.rb +5 -2
- data/lib/supersaas-api-client/models/group.rb +7 -0
- data/lib/supersaas-api-client/models/promotion.rb +7 -0
- data/lib/supersaas-api-client/models/resource.rb +3 -1
- data/lib/supersaas-api-client/models/schedule.rb +3 -1
- data/lib/supersaas-api-client/models/slot.rb +4 -6
- data/lib/supersaas-api-client/models/super_form.rb +7 -0
- data/lib/supersaas-api-client/models/user.rb +5 -8
- data/lib/supersaas-api-client/version.rb +4 -2
- data/lib/supersaas-api-client.rb +3 -1
- data/lib/supersaas.rb +23 -15
- data/supersaas-api-client.gemspec +19 -18
- metadata +40 -26
- data/test/appointments_test.rb +0 -99
- data/test/client_test.rb +0 -46
- data/test/forms_test.rb +0 -22
- data/test/schedules_test.rb +0 -19
- data/test/test_helper.rb +0 -23
- data/test/users_test.rb +0 -68
data/Rakefile
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'bundler/gem_tasks'
|
4
|
+
require 'rake/testtask'
|
3
5
|
|
4
6
|
Rake::TestTask.new(:test) do |t|
|
5
|
-
t.libs <<
|
6
|
-
t.libs <<
|
7
|
-
t.test_files = FileList[
|
7
|
+
t.libs << 'test'
|
8
|
+
t.libs << 'lib'
|
9
|
+
t.test_files = FileList['test/**/*_test.rb']
|
8
10
|
end
|
9
11
|
|
10
|
-
task :
|
12
|
+
task default: :test
|
data/bin/console
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
4
|
+
require 'bundler/setup'
|
5
|
+
require 'supersaas-api-client'
|
5
6
|
|
6
7
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
8
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +11,5 @@ require "supersaas-api-client"
|
|
10
11
|
# require "pry"
|
11
12
|
# Pry.start
|
12
13
|
|
13
|
-
require
|
14
|
+
require 'irb'
|
14
15
|
IRB.start(__FILE__)
|
data/examples/appointments.rb
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require "supersaas-api-client"
|
4
|
+
require 'date'
|
5
|
+
require 'supersaas-api-client'
|
6
6
|
|
7
|
-
puts "
|
7
|
+
puts "# SuperSaaS Appointments Example"
|
8
8
|
|
9
9
|
unless Supersaas::Client.instance.account_name && Supersaas::Client.instance.api_key
|
10
|
-
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g
|
11
|
-
puts "
|
10
|
+
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g."
|
11
|
+
puts "SSS_API_ACCOUNT_NAME=<myaccountname> SSS_API_KEY=<api_key> ./examples/appointments.rb"
|
12
12
|
return
|
13
13
|
end
|
14
14
|
|
15
15
|
puts "## Account: #{Supersaas::Client.instance.account_name}"
|
16
|
-
puts "## API Key: #{'*' * Supersaas::Client.instance.api_key.size}
|
16
|
+
puts "## API Key: #{'*' * Supersaas::Client.instance.api_key.size}"
|
17
17
|
|
18
18
|
Supersaas::Client.instance.verbose = true
|
19
19
|
|
@@ -21,64 +21,92 @@ if ENV['SSS_API_SCHEDULE']
|
|
21
21
|
schedule_id = ENV['SSS_API_SCHEDULE']
|
22
22
|
show_slot = ENV['SSS_API_SLOT'] ? true : false
|
23
23
|
else
|
24
|
-
puts "ERROR! Missing schedule id. Rerun the script with your schedule id, e.g
|
25
|
-
puts " SSS_API_SCHEDULE=<scheduleid> ./examples/appointments.rb
|
24
|
+
puts "ERROR! Missing schedule id. Rerun the script with your schedule id, e.g."
|
25
|
+
puts " SSS_API_SCHEDULE=<scheduleid> ./examples/appointments.rb"
|
26
26
|
return
|
27
27
|
end
|
28
28
|
|
29
|
+
# give
|
30
|
+
user_id = ENV.fetch('SSS_API_USER', nil)
|
31
|
+
|
32
|
+
unless user_id
|
33
|
+
puts "User is created and then deleted at the end"
|
34
|
+
params = { full_name: 'Example', name: 'example@example.com', email: 'example@example.com', api_key: 'example' }
|
35
|
+
user = Supersaas::Client.instance.users.create(params)
|
36
|
+
user_id = user.match(/users\/(\d+)\.json/)[1]
|
37
|
+
puts "#New user created #{user_id}"
|
38
|
+
end
|
39
|
+
|
40
|
+
|
29
41
|
description = nil
|
30
|
-
|
31
|
-
user = ENV['SSS_API_USER']
|
32
|
-
if user
|
42
|
+
if user_id
|
33
43
|
description = '1234567890.'
|
34
|
-
params = {full_name: 'Example', description: description, name: 'example@example.com', email: 'example@example.com',
|
44
|
+
params = { full_name: 'Example', description: description, name: 'example@example.com', email: 'example@example.com',
|
45
|
+
mobile: '555-5555', phone: '555-5555', address: 'addr' }
|
35
46
|
if show_slot
|
36
|
-
params[:slot_id] = ENV
|
47
|
+
params[:slot_id] = ENV.fetch('SSS_API_SLOT', nil)
|
37
48
|
else
|
38
|
-
days =
|
49
|
+
days = rand(1..30)
|
39
50
|
params[:start] = Time.now + (days * 24 * 60 * 60)
|
40
51
|
params[:finish] = params[:start] + (60 * 60)
|
41
52
|
end
|
42
|
-
puts "
|
43
|
-
puts "
|
44
|
-
Supersaas::Client.instance.appointments.create(schedule_id,
|
53
|
+
puts "creating new appointment..."
|
54
|
+
puts "#### Supersaas::Client.instance.appointments.create(#{schedule_id}, #{user_id}, {...})"
|
55
|
+
Supersaas::Client.instance.appointments.create(schedule_id, user_id, params)
|
45
56
|
else
|
46
|
-
puts "
|
57
|
+
puts "skipping create/update/delete (NO DESTRUCTIVE ACTIONS FOR SCHEDULE DATA)..."
|
47
58
|
end
|
48
59
|
|
49
|
-
puts "
|
50
|
-
puts "
|
60
|
+
puts "listing appointments..."
|
61
|
+
puts "#### Supersaas::Client.instance.appointments.list(#{schedule_id}, nil, nil, 25)"
|
51
62
|
|
52
63
|
appointments = Supersaas::Client.instance.appointments.list(schedule_id, nil, nil, 25)
|
53
|
-
appointments.each do |appointment|
|
54
|
-
puts "#{description} == #{appointment.description}"
|
55
|
-
if description == appointment.description
|
56
|
-
puts "\n\rupdating appointment..."
|
57
|
-
puts "\n\r#### Supersaas::Client.instance.appointments.update(#{schedule_id}, #{new_appointment_id}, {...})\n\r"
|
58
|
-
Supersaas::Client.instance.appointments.update(schedule_id, new_appointment_id, {country: 'FR', address: 'Rue 1'})
|
59
|
-
|
60
|
-
puts "\n\rdeleting appointment..."
|
61
|
-
puts "\n\r#### Supersaas::Client.instance.appointments.delete(#{schedule_id}. #{new_appointment_id})\n\r"
|
62
|
-
Supersaas::Client.instance.appointments.delete(schedule_id, new_appointment_id)
|
63
|
-
break
|
64
|
-
end
|
65
|
-
end
|
66
64
|
|
67
|
-
if appointments.size
|
65
|
+
if appointments.size.positive?
|
68
66
|
appointment_id = appointments.sample.id
|
69
|
-
puts "
|
70
|
-
puts "
|
67
|
+
puts "getting appointment..."
|
68
|
+
puts "#### Supersaas::Client.instance.appointments.get(#{appointment_id})"
|
71
69
|
Supersaas::Client.instance.appointments.get(schedule_id, appointment_id)
|
72
70
|
end
|
73
71
|
|
74
|
-
puts "
|
72
|
+
puts "listing changes..."
|
75
73
|
from = DateTime.now - 120
|
76
|
-
|
74
|
+
to = DateTime.now + 360_000
|
75
|
+
puts "#### Supersaas::Client.instance.appointments.changes(#{schedule_id},
|
76
|
+
'#{from.strftime('%Y-%m-%d %H:%M:%S')}', '#{to.strftime('%Y-%m-%d %H:%M:%S')}', #{show_slot || 'false'})"
|
77
77
|
|
78
78
|
Supersaas::Client.instance.appointments.changes(schedule_id, from, show_slot)
|
79
79
|
|
80
|
-
puts "
|
80
|
+
puts "listing available..."
|
81
81
|
from = DateTime.now
|
82
|
-
puts "
|
82
|
+
puts "#### Supersaas::Client.instance.appointments.available(#{schedule_id},
|
83
|
+
'#{from.strftime('%Y-%m-%d %H:%M:%S')}')"
|
84
|
+
|
85
|
+
Supersaas::Client.instance.appointments.available(schedule_id, from)
|
86
|
+
|
87
|
+
puts "Appointments for a single user..."
|
88
|
+
user = Supersaas::Client.instance.users.list(nil, 1).first
|
89
|
+
from = DateTime.now
|
90
|
+
puts "#### Supersaas::Client.instance.appointments.agenda(#{schedule_id}, user.id,
|
91
|
+
'#{from.strftime('%Y-%m-%d %H:%M:%S')}')"
|
92
|
+
Supersaas::Client.instance.appointments.agenda(schedule_id, user.id, from.strftime('%Y-%m-%d %H:%M:%S'))
|
93
|
+
|
94
|
+
# Update and delete appointments
|
95
|
+
appointments.each do |appointment|
|
96
|
+
puts "#{description} == #{appointment.description}"
|
97
|
+
next unless description == appointment.description
|
98
|
+
|
99
|
+
puts "updating appointment..."
|
100
|
+
puts "#### Supersaas::Client.instance.appointments.update(#{schedule_id}, #{appointment.id}, {...})"
|
101
|
+
Supersaas::Client.instance.appointments.update(schedule_id, appointment.id, { country: 'FR', address: 'Rue 1' })
|
102
|
+
|
103
|
+
puts "deleting appointment..."
|
104
|
+
puts "#### Supersaas::Client.instance.appointments.delete(#{schedule_id}. #{appointment.id})"
|
105
|
+
Supersaas::Client.instance.appointments.delete(schedule_id, appointment.id)
|
106
|
+
break
|
107
|
+
end
|
83
108
|
|
84
|
-
|
109
|
+
# Puts delete user
|
110
|
+
unless ENV.fetch('SSS_API_USER', nil)
|
111
|
+
Supersaas::Client.instance.users.delete(user_id)
|
112
|
+
end
|
data/examples/forms.rb
CHANGED
@@ -1,39 +1,37 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
-
require "supersaas-api-client"
|
4
|
+
require 'supersaas-api-client'
|
5
5
|
|
6
|
-
puts "
|
6
|
+
puts "# SuperSaaS Forms Example"
|
7
7
|
|
8
8
|
unless Supersaas::Client.instance.account_name && Supersaas::Client.instance.api_key
|
9
|
-
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g
|
10
|
-
puts " SSS_API_ACCOUNT_NAME=<myaccountname> SSS_API_KEY=<xxxxxxxxxxxxxxxxxxxxxx> ./examples/appointments.rb
|
9
|
+
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g."
|
10
|
+
puts " SSS_API_ACCOUNT_NAME=<myaccountname> SSS_API_KEY=<xxxxxxxxxxxxxxxxxxxxxx> ./examples/appointments.rb"
|
11
11
|
return
|
12
12
|
end
|
13
13
|
|
14
14
|
puts "## Account: #{Supersaas::Client.instance.account_name}"
|
15
|
-
puts "## API Key: #{'*' * Supersaas::Client.instance.api_key.size}
|
15
|
+
puts "## API Key: #{'*' * Supersaas::Client.instance.api_key.size}"
|
16
16
|
|
17
17
|
Supersaas::Client.instance.verbose = true
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
return
|
25
|
-
end
|
19
|
+
puts "You will need to create a form, and also attach the form to a booking, see documentation on how to do that"
|
20
|
+
puts "The below example will take a form in random, and if it is not attached to something then 404 error will be raised"
|
21
|
+
|
22
|
+
puts "listing forms..."
|
23
|
+
puts "#### Supersaas::Client.instance.forms.forms"
|
26
24
|
|
27
|
-
|
28
|
-
puts "\n\r#### Supersaas::Client.instance.forms.list(#{form_id})\n\r"
|
25
|
+
template_forms = Supersaas::Client.instance.forms.forms
|
29
26
|
|
30
|
-
|
27
|
+
if template_forms.size.positive?
|
28
|
+
template_form_id = template_forms.sample.id
|
31
29
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
puts "\n\r#### Supersaas::Client.instance.forms.get(#{form_id})\n\r"
|
36
|
-
form = Supersaas::Client.instance.forms.get(form_id)
|
30
|
+
puts "listing forms from account"
|
31
|
+
puts "#### Supersaas::Client.instance.forms.list"
|
32
|
+
form_id = Supersaas::Client.instance.forms.list(template_form_id).sample.id
|
37
33
|
end
|
38
34
|
|
39
|
-
puts
|
35
|
+
puts "getting form..."
|
36
|
+
puts "#### Supersaas::Client.instance.forms.get(#{form_id})"
|
37
|
+
Supersaas::Client.instance.forms.get(form_id)
|
data/examples/groups.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'supersaas-api-client'
|
4
|
+
|
5
|
+
puts "# SuperSaaS Groups Example"
|
6
|
+
|
7
|
+
unless Supersaas::Client.instance.account_name && Supersaas::Client.instance.api_key
|
8
|
+
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g."
|
9
|
+
puts "SSS_API_ACCOUNT_NAME=<myaccountname> SSS_API_KEY=<xxxxxxxxxxxxxxxxxxxxxx> ./examples/users.rb"
|
10
|
+
return
|
11
|
+
end
|
12
|
+
|
13
|
+
puts "## Account: #{Supersaas::Client.instance.account_name}"
|
14
|
+
puts "## API KEY: #{'*' * Supersaas::Client.instance.api_key.size}"
|
15
|
+
|
16
|
+
Supersaas::Client.instance.verbose = true
|
17
|
+
|
18
|
+
puts "listing groups..."
|
19
|
+
puts "#### Supersaas::Client.instance.groups.list"
|
20
|
+
Supersaas::Client.instance.groups.list
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'supersaas-api-client'
|
4
|
+
|
5
|
+
puts "# SuperSaaS Promotions Example"
|
6
|
+
|
7
|
+
unless Supersaas::Client.instance.account_name && Supersaas::Client.instance.api_key
|
8
|
+
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g."
|
9
|
+
puts "SSS_API_ACCOUNT_NAME=<myaccountname> SSS_API_KEY=<xxxxxxxxxxxxxxxxxxxxxx> ./examples/users.rb"
|
10
|
+
return
|
11
|
+
end
|
12
|
+
|
13
|
+
puts "## Account: #{Supersaas::Client.instance.account_name}"
|
14
|
+
puts "## API KEY: #{'*' * Supersaas::Client.instance.api_key.size}"
|
15
|
+
|
16
|
+
Supersaas::Client.instance.verbose = true
|
17
|
+
|
18
|
+
puts "listing promotions..."
|
19
|
+
puts "#### Supersaas::Client.instance.promotions.list"
|
20
|
+
promotions = Supersaas::Client.instance.promotions.list
|
21
|
+
|
22
|
+
[10, promotions.size].min&.times do |i|
|
23
|
+
puts "A promotion"
|
24
|
+
puts "#### Supersaas::Client.instance.promotion(#{promotions[i].id})"
|
25
|
+
Supersaas::Client.instance.promotions.promotion(promotions[i].code)
|
26
|
+
end
|
27
|
+
|
28
|
+
# Uncomment to try out duplicating a promotional code
|
29
|
+
# puts "duplicate promotional code"
|
30
|
+
# puts "#### Supersaas::Client.instance.promotions.duplicate_promotion_code('new_id', 'id_to_duplicate')"
|
31
|
+
# Supersaas::Client.instance.promotions.duplicate_promotion_code("pcode#{SecureRandom.hex(4)}", promotions.first.code)
|
32
|
+
# puts
|
data/examples/schedules.rb
CHANGED
@@ -1,27 +1,39 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
+
require 'supersaas-api-client'
|
4
5
|
|
5
|
-
puts "
|
6
|
+
puts "# SuperSaaS Schedules Example"
|
6
7
|
|
7
8
|
unless Supersaas::Client.instance.account_name && Supersaas::Client.instance.api_key
|
8
|
-
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g
|
9
|
-
puts "
|
9
|
+
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g."
|
10
|
+
puts "SSS_API_ACCOUNT_NAME=<myaccountname> SSS_API_KEY=<xxxxxxxxxxxxxxxxxxxxxx> ./examples/users.rb"
|
10
11
|
return
|
11
12
|
end
|
12
13
|
|
13
14
|
puts "## Account: #{Supersaas::Client.instance.account_name}"
|
14
|
-
puts "## API KEY: #{'*' * Supersaas::Client.instance.api_key.size}
|
15
|
+
puts "## API KEY: #{'*' * Supersaas::Client.instance.api_key.size}"
|
15
16
|
|
16
17
|
Supersaas::Client.instance.verbose = true
|
17
18
|
|
18
|
-
puts "
|
19
|
-
puts "
|
19
|
+
puts "listing schedules..."
|
20
|
+
puts "#### Supersaas::Client.instance.schedules.list"
|
20
21
|
schedules = Supersaas::Client.instance.schedules.list
|
21
22
|
|
22
|
-
puts "
|
23
|
-
[10, schedules.size].min
|
24
|
-
puts "
|
23
|
+
puts "listing schedule resources..."
|
24
|
+
[10, schedules.size].min&.times do |i|
|
25
|
+
puts "#### Supersaas::Client.instance.schedules.resources(#{schedules[i].id})"
|
26
|
+
# Capacity schedules bomb
|
27
|
+
begin
|
25
28
|
Supersaas::Client.instance.schedules.resources(schedules[i].id)
|
29
|
+
rescue
|
30
|
+
next
|
31
|
+
end
|
26
32
|
end
|
27
|
-
|
33
|
+
|
34
|
+
puts "puts listing fields..."
|
35
|
+
[10, schedules.size].min&.times do |i|
|
36
|
+
puts "#### Supersaas::Client.instance.schedules.field_list(#{schedules[i].id})"
|
37
|
+
Supersaas::Client.instance.schedules.field_list(schedules[i].id)
|
38
|
+
end
|
39
|
+
puts
|
data/examples/users.rb
CHANGED
@@ -1,51 +1,59 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# frozen_string_literal: true
|
2
3
|
|
3
|
-
require
|
4
|
+
require 'supersaas-api-client'
|
4
5
|
|
5
|
-
puts "
|
6
|
+
puts "# SuperSaaS Users Example"
|
6
7
|
|
7
8
|
unless Supersaas::Client.instance.account_name && Supersaas::Client.instance.api_key
|
8
|
-
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g
|
9
|
-
puts "
|
9
|
+
puts "ERROR! Missing account credentials. Rerun the script with your credentials, e.g."
|
10
|
+
puts "SSS_API_ACCOUNT_NAME=<myaccountname> SSS_API_KEY=<xxxxxxxxxxxxxxxxxxxxxx> ./examples/users.rb"
|
10
11
|
return
|
11
12
|
end
|
12
13
|
|
13
14
|
puts "## Account: #{Supersaas::Client.instance.account_name}"
|
14
|
-
puts "## API Key: #{'*' * Supersaas::Client.instance.api_key.size}
|
15
|
+
puts "## API Key: #{'*' * Supersaas::Client.instance.api_key.size}"
|
15
16
|
|
16
17
|
Supersaas::Client.instance.verbose = true
|
17
18
|
|
18
|
-
puts
|
19
|
-
puts "
|
20
|
-
params = {full_name: 'Example', name: 'example@example.com', email: 'example@example.com', api_key: 'example'}
|
19
|
+
puts 'creating new user...'
|
20
|
+
puts "#### Supersaas::Client.instance.users.create({...})"
|
21
|
+
params = { full_name: 'Example', name: 'example@example.com', email: 'example@example.com', api_key: 'example' }
|
21
22
|
Supersaas::Client.instance.users.create(params)
|
22
23
|
new_user_id = nil
|
23
24
|
|
24
|
-
puts "
|
25
|
-
puts "
|
25
|
+
puts "listing users..."
|
26
|
+
puts "#### Supersaas::Client.instance.users.list(nil, 50)"
|
26
27
|
|
27
28
|
users = Supersaas::Client.instance.users.list(nil, 50)
|
28
29
|
users.each do |user|
|
29
|
-
new_user_id = user.id if user.name == params[:email]
|
30
|
+
new_user_id = user.id if user.name == params[:email]
|
30
31
|
end
|
31
32
|
|
32
33
|
if new_user_id
|
33
|
-
puts "
|
34
|
-
puts "
|
34
|
+
puts "getting user..."
|
35
|
+
puts "#### Supersaas::Client.instance.users.get(#{new_user_id})"
|
35
36
|
user = Supersaas::Client.instance.users.get(new_user_id)
|
36
37
|
|
37
|
-
puts "
|
38
|
-
puts "
|
39
|
-
Supersaas::Client.instance.users.update(new_user_id, {country: 'FR', address: 'Rue 1'})
|
38
|
+
puts "updating user..."
|
39
|
+
puts "#### Supersaas::Client.instance.users.update(#{new_user_id})"
|
40
|
+
Supersaas::Client.instance.users.update(new_user_id, { country: 'FR', address: 'Rue 1' })
|
40
41
|
|
41
|
-
puts "
|
42
|
-
puts "
|
42
|
+
puts "deleting user..."
|
43
|
+
puts "#### Supersaas::Client.instance.users.delete(#{user.id})"
|
43
44
|
Supersaas::Client.instance.users.delete(user.id)
|
44
45
|
else
|
45
|
-
puts "
|
46
|
+
puts "... did not find user in list"
|
46
47
|
end
|
47
48
|
|
48
|
-
puts "
|
49
|
-
puts "
|
50
|
-
|
51
|
-
|
49
|
+
puts "creating user with errors..."
|
50
|
+
puts "#### Supersaas::Client.instance.users.create"
|
51
|
+
begin
|
52
|
+
Supersaas::Client.instance.users.create({ name: 'error' })
|
53
|
+
rescue Supersaas::Exception => e
|
54
|
+
puts "This raises an error #{e.message}"
|
55
|
+
end
|
56
|
+
|
57
|
+
puts "#### Supersaas::Client.instance.users.field_list"
|
58
|
+
Supersaas::Client.instance.users.field_list
|
59
|
+
puts
|
@@ -1,17 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Supersaas
|
2
4
|
# REF: https://www.supersaas.com/info/dev/appointment_api
|
3
5
|
class Appointments < BaseApi
|
4
|
-
def agenda(schedule_id, user_id, from_time=nil)
|
6
|
+
def agenda(schedule_id, user_id, from_time = nil, slot = false)
|
5
7
|
path = "/agenda/#{validate_id(schedule_id)}"
|
6
8
|
params = {
|
7
9
|
user: validate_present(user_id),
|
8
10
|
from: from_time && validate_datetime(from_time)
|
9
11
|
}
|
12
|
+
params.merge!(slot: true) if slot
|
10
13
|
res = client.get(path, params)
|
11
14
|
map_slots_or_bookings(res)
|
12
15
|
end
|
13
16
|
|
14
|
-
def agenda_slots(schedule_id, user_id, from_time=nil)
|
17
|
+
def agenda_slots(schedule_id, user_id, from_time = nil)
|
15
18
|
path = "/agenda/#{validate_id(schedule_id)}"
|
16
19
|
params = {
|
17
20
|
user: validate_present(user_id),
|
@@ -22,7 +25,7 @@ module Supersaas
|
|
22
25
|
map_slots_or_bookings(res, true)
|
23
26
|
end
|
24
27
|
|
25
|
-
def available(schedule_id, from_time, length_minutes=nil, resource=nil, full=nil, limit=nil)
|
28
|
+
def available(schedule_id, from_time, length_minutes = nil, resource = nil, full = nil, limit = nil)
|
26
29
|
path = "/free/#{validate_id(schedule_id)}"
|
27
30
|
params = {
|
28
31
|
length: length_minutes && validate_number(length_minutes),
|
@@ -35,27 +38,27 @@ module Supersaas
|
|
35
38
|
map_slots_or_bookings(res)
|
36
39
|
end
|
37
40
|
|
38
|
-
def list(schedule_id, form=nil, start_time=nil, limit=nil)
|
39
|
-
path =
|
41
|
+
def list(schedule_id, form = nil, start_time = nil, limit = nil)
|
42
|
+
path = '/bookings'
|
40
43
|
params = {
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
44
|
+
schedule_id: validate_id(schedule_id),
|
45
|
+
form: form ? true : nil,
|
46
|
+
start: start_time ? validate_datetime(start_time) : nil,
|
47
|
+
limit: limit && validate_number(limit)
|
45
48
|
}
|
46
49
|
res = client.get(path, params)
|
47
50
|
map_slots_or_bookings(res)
|
48
51
|
end
|
49
52
|
|
50
53
|
def get(schedule_id, appointment_id)
|
51
|
-
params = {schedule_id: validate_id(schedule_id)}
|
54
|
+
params = { schedule_id: validate_id(schedule_id) }
|
52
55
|
path = "/bookings/#{validate_id(appointment_id)}"
|
53
56
|
res = client.get(path, params)
|
54
57
|
Supersaas::Appointment.new(res)
|
55
58
|
end
|
56
59
|
|
57
|
-
def create(schedule_id, user_id, attributes, form=nil, webhook=nil)
|
58
|
-
path =
|
60
|
+
def create(schedule_id, user_id, attributes, form = nil, webhook = nil)
|
61
|
+
path = '/bookings'
|
59
62
|
params = {
|
60
63
|
schedule_id: schedule_id,
|
61
64
|
webhook: webhook,
|
@@ -80,19 +83,18 @@ module Supersaas
|
|
80
83
|
slot_id: attributes[:slot_id]
|
81
84
|
}
|
82
85
|
}
|
86
|
+
params[:booking].compact!
|
83
87
|
client.post(path, params)
|
84
88
|
end
|
85
89
|
|
86
|
-
def update(schedule_id, appointment_id, attributes, form=nil, webhook=nil)
|
90
|
+
def update(schedule_id, appointment_id, attributes, form = nil, webhook = nil)
|
87
91
|
path = "/bookings/#{validate_id(appointment_id)}"
|
88
92
|
params = {
|
89
93
|
schedule_id: schedule_id,
|
90
|
-
webhook: webhook,
|
91
|
-
form: form,
|
92
94
|
booking: {
|
93
95
|
start: attributes[:start],
|
94
96
|
finish: attributes[:finish],
|
95
|
-
name:
|
97
|
+
name: attributes[:name],
|
96
98
|
email: attributes[:email],
|
97
99
|
full_name: attributes[:full_name],
|
98
100
|
address: attributes[:address],
|
@@ -108,33 +110,39 @@ module Supersaas
|
|
108
110
|
slot_id: attributes[:slot_id]
|
109
111
|
}
|
110
112
|
}
|
113
|
+
|
114
|
+
params.merge!(form: form) if form
|
115
|
+
params.merge!(webhook: webhook) if webhook
|
116
|
+
params[:booking].compact!
|
111
117
|
client.put(path, params)
|
112
118
|
end
|
113
119
|
|
114
120
|
def delete(schedule_id, appointment_id)
|
115
121
|
path = "/bookings/#{validate_id(appointment_id)}"
|
116
|
-
params = {schedule_id: validate_id(schedule_id)}
|
122
|
+
params = { schedule_id: validate_id(schedule_id) }
|
117
123
|
client.delete(path, nil, params)
|
118
124
|
end
|
119
125
|
|
120
|
-
def changes(schedule_id, from_time=nil, to=nil, slot=false)
|
126
|
+
def changes(schedule_id, from_time = nil, to = nil, slot = false, user = nil, limit = nil, offset = nil)
|
121
127
|
path = "/changes/#{validate_id(schedule_id)}"
|
122
|
-
params = build_param({}, from_time, to, slot)
|
128
|
+
params = build_param({}, from_time, to, slot, user, limit, offset)
|
123
129
|
res = client.get(path, params)
|
124
130
|
map_slots_or_bookings(res)
|
125
131
|
end
|
126
132
|
|
127
|
-
def range(schedule_id, today=false, from_time=nil, to=nil, slot=false
|
133
|
+
def range(schedule_id, today = false, from_time = nil, to = nil, slot = false, user = nil, resource_id = nil, service_id = nil,
|
134
|
+
limit = nil, offset = nil)
|
128
135
|
path = "/range/#{validate_id(schedule_id)}"
|
129
|
-
params = {}
|
130
|
-
params
|
136
|
+
params = {}
|
137
|
+
params.merge!(today: true) if today
|
138
|
+
params = build_param(params, from_time, to, slot, user, limit, offset, resource_id, service_id)
|
131
139
|
res = client.get(path, params)
|
132
140
|
map_slots_or_bookings(res)
|
133
141
|
end
|
134
142
|
|
135
143
|
private
|
136
144
|
|
137
|
-
def map_slots_or_bookings(obj, slot=false)
|
145
|
+
def map_slots_or_bookings(obj, slot = false)
|
138
146
|
if obj.is_a?(Array) && slot
|
139
147
|
obj.map { |attributes| Supersaas::Slot.new(attributes) }
|
140
148
|
elsif obj.is_a?(Array)
|
@@ -148,11 +156,16 @@ module Supersaas
|
|
148
156
|
end
|
149
157
|
end
|
150
158
|
|
151
|
-
def build_param(params, from_time, to, slot)
|
159
|
+
def build_param(params, from_time, to, slot, user, limit, offset, resource_id = nil, service_id = nil)
|
152
160
|
params.merge!(from: validate_datetime(from_time)) if from_time
|
153
161
|
params.merge!(to: validate_datetime(to)) if to
|
154
162
|
params.merge!(slot: true) if slot
|
163
|
+
params.merge!(user: validate_user(user)) if user
|
164
|
+
params.merge!(limit: validate_number(limit)) if limit
|
165
|
+
params.merge!(offset: validate_number(offset)) if offset
|
166
|
+
params.merge!(resource_id: validate_id(resource_id)) if resource_id
|
167
|
+
params.merge!(service_id: validate_id(service_id)) if service_id
|
155
168
|
params
|
156
169
|
end
|
157
170
|
end
|
158
|
-
end
|
171
|
+
end
|