servizehub 1.0.0 → 1.0.2
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/lib/servizehub/client.rb +65 -6
- data/lib/servizehub/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fa03e8c0c5f26ea1c781e58515d2c829a6703fffeec1fa7f9b4653b67dc32943
|
|
4
|
+
data.tar.gz: 48d3161c5c993ce33b114e604306ca26f90aa0c7dad0b4af6bdb62688eaa8c2e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 00a65a937a2b0a8013211ca48fe060a6a59a4e3e60bf2b3133a2dd3c7cd16808512e8a9782889f27cd650da9a1e63a27960ef6be01371d9706182b2fcda8618b
|
|
7
|
+
data.tar.gz: 2369cf93af7ff906b1ca1993dab07fbd0cef1bcd38c01450ca12c4d17d3c32f36c18d4c9bdcc983aa7094b207bc15d01e6341f3b4afb62656a6d2c35d2977728
|
data/lib/servizehub/client.rb
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
require 'net/http'
|
|
2
2
|
require 'uri'
|
|
3
3
|
require 'json'
|
|
4
|
+
require 'date'
|
|
4
5
|
|
|
5
6
|
module Servizehub
|
|
6
7
|
class Client
|
|
@@ -11,31 +12,89 @@ module Servizehub
|
|
|
11
12
|
@api_key = api_key
|
|
12
13
|
end
|
|
13
14
|
|
|
15
|
+
# Validate date format YYYY-MM-DD
|
|
16
|
+
def valid_date?(date)
|
|
17
|
+
Date.strptime(date, '%Y-%m-%d')
|
|
18
|
+
true
|
|
19
|
+
rescue ArgumentError
|
|
20
|
+
false
|
|
21
|
+
end
|
|
22
|
+
|
|
14
23
|
def send_booking(date:, service_type:, status:)
|
|
15
|
-
|
|
24
|
+
return "All booking details are required" if date.nil? || service_type.nil? || status.nil?
|
|
25
|
+
return "Invalid date format, expected YYYY-MM-DD" unless valid_date?(date)
|
|
16
26
|
|
|
17
27
|
valid_statuses = ["available", "unavailable"]
|
|
18
|
-
|
|
28
|
+
return "Invalid status value" unless valid_statuses.include?(status)
|
|
19
29
|
|
|
20
30
|
uri = URI.parse("#{BASE_URL}/external/capture-availability")
|
|
31
|
+
|
|
21
32
|
request = Net::HTTP::Post.new(uri)
|
|
22
33
|
request["Content-Type"] = "application/json"
|
|
23
34
|
request["servizhub-api-key"] = @api_key
|
|
35
|
+
|
|
24
36
|
request.body = {
|
|
25
37
|
date: date,
|
|
26
38
|
serviceType: service_type,
|
|
27
39
|
status: status
|
|
28
40
|
}.to_json
|
|
29
41
|
|
|
30
|
-
response = Net::HTTP.start(
|
|
42
|
+
response = Net::HTTP.start(
|
|
43
|
+
uri.hostname,
|
|
44
|
+
uri.port,
|
|
45
|
+
use_ssl: uri.scheme == "https"
|
|
46
|
+
) do |http|
|
|
31
47
|
http.request(request)
|
|
32
48
|
end
|
|
33
49
|
|
|
34
|
-
|
|
35
|
-
|
|
50
|
+
begin
|
|
51
|
+
data = JSON.parse(response.body)
|
|
52
|
+
rescue JSON::ParserError
|
|
53
|
+
data = { "message" => "Invalid response from server" }
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
{
|
|
57
|
+
statusCode: response.code.to_i,
|
|
58
|
+
data: data
|
|
59
|
+
}
|
|
60
|
+
rescue => e
|
|
61
|
+
e.message
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def send_multiple_bookings(bookings)
|
|
65
|
+
return "Bookings array is required" unless bookings.is_a?(Array) && !bookings.empty?
|
|
66
|
+
|
|
67
|
+
failed_bookings = []
|
|
68
|
+
successful_bookings = []
|
|
69
|
+
|
|
70
|
+
bookings.each do |booking|
|
|
71
|
+
result = send_booking(
|
|
72
|
+
date: booking[:date],
|
|
73
|
+
service_type: booking[:serviceType],
|
|
74
|
+
status: booking[:status]
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
# local validation / network errors
|
|
78
|
+
if result.is_a?(String)
|
|
79
|
+
failed_bookings << booking.merge(error: result)
|
|
80
|
+
next
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# API error response
|
|
84
|
+
if !result[:statusCode] || result[:statusCode] >= 400
|
|
85
|
+
failed_bookings << booking.merge(error: result)
|
|
86
|
+
else
|
|
87
|
+
successful_bookings << result
|
|
88
|
+
end
|
|
36
89
|
end
|
|
37
90
|
|
|
38
|
-
{
|
|
91
|
+
{
|
|
92
|
+
message: failed_bookings.empty? ?
|
|
93
|
+
"All bookings sent successfully" :
|
|
94
|
+
"Some bookings failed",
|
|
95
|
+
successfulBookings: successful_bookings,
|
|
96
|
+
failedBookings: failed_bookings
|
|
97
|
+
}
|
|
39
98
|
end
|
|
40
99
|
end
|
|
41
100
|
end
|
data/lib/servizehub/version.rb
CHANGED