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