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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2ad17f2598f80495edfdc88c5acca9ef84abd40efb3ff7aec36e37d0d4bfeb10
4
- data.tar.gz: e847a02b64d205c7c72287894b9d95848395c88f1e62ae63c4ee133558e72d9e
3
+ metadata.gz: fa03e8c0c5f26ea1c781e58515d2c829a6703fffeec1fa7f9b4653b67dc32943
4
+ data.tar.gz: 48d3161c5c993ce33b114e604306ca26f90aa0c7dad0b4af6bdb62688eaa8c2e
5
5
  SHA512:
6
- metadata.gz: 997207dfc4ebeae33e0859e393ee5a3ee98ab3cf471afababbfc2a080e823c956f5711c75159c29fc25d5c00e75555fa488be8381ec7d318758b287c48b0a2fc
7
- data.tar.gz: 1339cfffc7b1d878c6b4099a60626d7f88c903e200d3ff1d703d2b5038a96c0ccf33c648e14ef4477541094d6802648864af77b5004bd6278026d50b26a25c7d
6
+ metadata.gz: 00a65a937a2b0a8013211ca48fe060a6a59a4e3e60bf2b3133a2dd3c7cd16808512e8a9782889f27cd650da9a1e63a27960ef6be01371d9706182b2fcda8618b
7
+ data.tar.gz: 2369cf93af7ff906b1ca1993dab07fbd0cef1bcd38c01450ca12c4d17d3c32f36c18d4c9bdcc983aa7094b207bc15d01e6341f3b4afb62656a6d2c35d2977728
@@ -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
- raise ArgumentError, "All booking details are required" if date.nil? || service_type.nil? || status.nil?
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
- raise ArgumentError, "Invalid status value" unless valid_statuses.include?(status)
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(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
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
- unless response.code.to_i < 400
35
- raise "Booking failed: #{response.body}"
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
- { message: "Booking availability sent successfully" }
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
@@ -1,3 +1,3 @@
1
1
  module Servizehub
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.2"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: servizehub
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hariraghav S