kapso-client-ruby 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.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +81 -81
  3. data/CHANGELOG.md +262 -91
  4. data/Gemfile +20 -20
  5. data/RAILS_INTEGRATION.md +477 -477
  6. data/README.md +1053 -752
  7. data/Rakefile +40 -40
  8. data/TEMPLATE_TOOLS_GUIDE.md +120 -120
  9. data/WHATSAPP_24_HOUR_GUIDE.md +133 -133
  10. data/examples/advanced_features.rb +352 -349
  11. data/examples/advanced_messaging.rb +241 -0
  12. data/examples/basic_messaging.rb +139 -136
  13. data/examples/enhanced_interactive.rb +400 -0
  14. data/examples/flows_usage.rb +307 -0
  15. data/examples/interactive_messages.rb +343 -0
  16. data/examples/media_management.rb +256 -253
  17. data/examples/rails/jobs.rb +387 -387
  18. data/examples/rails/models.rb +239 -239
  19. data/examples/rails/notifications_controller.rb +226 -226
  20. data/examples/template_management.rb +393 -390
  21. data/kapso-ruby-logo.jpg +0 -0
  22. data/lib/kapso_client_ruby/client.rb +321 -316
  23. data/lib/kapso_client_ruby/errors.rb +348 -329
  24. data/lib/kapso_client_ruby/rails/generators/install_generator.rb +75 -75
  25. data/lib/kapso_client_ruby/rails/generators/templates/env.erb +20 -20
  26. data/lib/kapso_client_ruby/rails/generators/templates/initializer.rb.erb +32 -32
  27. data/lib/kapso_client_ruby/rails/generators/templates/message_service.rb.erb +137 -137
  28. data/lib/kapso_client_ruby/rails/generators/templates/webhook_controller.rb.erb +61 -61
  29. data/lib/kapso_client_ruby/rails/railtie.rb +54 -54
  30. data/lib/kapso_client_ruby/rails/service.rb +188 -188
  31. data/lib/kapso_client_ruby/rails/tasks.rake +166 -166
  32. data/lib/kapso_client_ruby/resources/calls.rb +172 -172
  33. data/lib/kapso_client_ruby/resources/contacts.rb +190 -190
  34. data/lib/kapso_client_ruby/resources/conversations.rb +103 -103
  35. data/lib/kapso_client_ruby/resources/flows.rb +382 -0
  36. data/lib/kapso_client_ruby/resources/media.rb +205 -205
  37. data/lib/kapso_client_ruby/resources/messages.rb +760 -380
  38. data/lib/kapso_client_ruby/resources/phone_numbers.rb +85 -85
  39. data/lib/kapso_client_ruby/resources/templates.rb +283 -283
  40. data/lib/kapso_client_ruby/types.rb +348 -262
  41. data/lib/kapso_client_ruby/version.rb +5 -5
  42. data/lib/kapso_client_ruby.rb +75 -74
  43. data/scripts/.env.example +17 -17
  44. data/scripts/kapso_template_finder.rb +91 -91
  45. data/scripts/sdk_setup.rb +404 -404
  46. data/scripts/test.rb +60 -60
  47. metadata +12 -3
@@ -1,86 +1,86 @@
1
- # frozen_string_literal: true
2
-
3
- module KapsoClientRuby
4
- module Resources
5
- class PhoneNumbers
6
- def initialize(client)
7
- @client = client
8
- end
9
-
10
- # Request verification code
11
- def request_code(phone_number_id:, code_method:, language: 'en_US')
12
- validate_code_method(code_method)
13
-
14
- payload = {
15
- code_method: code_method.upcase,
16
- language: language
17
- }
18
-
19
- response = @client.request(:post, "#{phone_number_id}/request_code",
20
- body: payload.to_json, response_type: :json)
21
- Types::GraphSuccessResponse.new(response)
22
- end
23
-
24
- # Verify the received code
25
- def verify_code(phone_number_id:, code:)
26
- raise ArgumentError, 'Verification code cannot be empty' if code.nil? || code.strip.empty?
27
-
28
- payload = { code: code.to_s }
29
-
30
- response = @client.request(:post, "#{phone_number_id}/verify_code",
31
- body: payload.to_json, response_type: :json)
32
- Types::GraphSuccessResponse.new(response)
33
- end
34
-
35
- # Register phone number
36
- def register(phone_number_id:, pin:, data_localization_region: nil)
37
- raise ArgumentError, 'PIN cannot be empty' if pin.nil? || pin.strip.empty?
38
-
39
- payload = { pin: pin.to_s }
40
- payload[:data_localization_region] = data_localization_region if data_localization_region
41
-
42
- response = @client.request(:post, "#{phone_number_id}/register",
43
- body: payload.to_json, response_type: :json)
44
- Types::GraphSuccessResponse.new(response)
45
- end
46
-
47
- # Deregister phone number
48
- def deregister(phone_number_id:)
49
- response = @client.request(:post, "#{phone_number_id}/deregister",
50
- body: {}.to_json, response_type: :json)
51
- Types::GraphSuccessResponse.new(response)
52
- end
53
-
54
- # Update phone number settings
55
- def update_settings(phone_number_id:, messaging_product: 'whatsapp',
56
- webhooks: nil, application: nil)
57
- payload = { messaging_product: messaging_product }
58
- payload[:webhooks] = webhooks if webhooks
59
- payload[:application] = application if application
60
-
61
- response = @client.request(:post, phone_number_id,
62
- body: payload.to_json, response_type: :json)
63
- Types::GraphSuccessResponse.new(response)
64
- end
65
-
66
- # Get phone number info
67
- def get(phone_number_id:, fields: nil)
68
- query_params = {}
69
- query_params[:fields] = fields if fields
70
-
71
- response = @client.request(:get, phone_number_id,
72
- query: query_params, response_type: :json)
73
- response
74
- end
75
-
76
- private
77
-
78
- def validate_code_method(method)
79
- valid_methods = %w[SMS VOICE]
80
- unless valid_methods.include?(method.to_s.upcase)
81
- raise ArgumentError, "Invalid code method '#{method}'. Must be one of: #{valid_methods.join(', ')}"
82
- end
83
- end
84
- end
85
- end
1
+ # frozen_string_literal: true
2
+
3
+ module KapsoClientRuby
4
+ module Resources
5
+ class PhoneNumbers
6
+ def initialize(client)
7
+ @client = client
8
+ end
9
+
10
+ # Request verification code
11
+ def request_code(phone_number_id:, code_method:, language: 'en_US')
12
+ validate_code_method(code_method)
13
+
14
+ payload = {
15
+ code_method: code_method.upcase,
16
+ language: language
17
+ }
18
+
19
+ response = @client.request(:post, "#{phone_number_id}/request_code",
20
+ body: payload.to_json, response_type: :json)
21
+ Types::GraphSuccessResponse.new(response)
22
+ end
23
+
24
+ # Verify the received code
25
+ def verify_code(phone_number_id:, code:)
26
+ raise ArgumentError, 'Verification code cannot be empty' if code.nil? || code.strip.empty?
27
+
28
+ payload = { code: code.to_s }
29
+
30
+ response = @client.request(:post, "#{phone_number_id}/verify_code",
31
+ body: payload.to_json, response_type: :json)
32
+ Types::GraphSuccessResponse.new(response)
33
+ end
34
+
35
+ # Register phone number
36
+ def register(phone_number_id:, pin:, data_localization_region: nil)
37
+ raise ArgumentError, 'PIN cannot be empty' if pin.nil? || pin.strip.empty?
38
+
39
+ payload = { pin: pin.to_s }
40
+ payload[:data_localization_region] = data_localization_region if data_localization_region
41
+
42
+ response = @client.request(:post, "#{phone_number_id}/register",
43
+ body: payload.to_json, response_type: :json)
44
+ Types::GraphSuccessResponse.new(response)
45
+ end
46
+
47
+ # Deregister phone number
48
+ def deregister(phone_number_id:)
49
+ response = @client.request(:post, "#{phone_number_id}/deregister",
50
+ body: {}.to_json, response_type: :json)
51
+ Types::GraphSuccessResponse.new(response)
52
+ end
53
+
54
+ # Update phone number settings
55
+ def update_settings(phone_number_id:, messaging_product: 'whatsapp',
56
+ webhooks: nil, application: nil)
57
+ payload = { messaging_product: messaging_product }
58
+ payload[:webhooks] = webhooks if webhooks
59
+ payload[:application] = application if application
60
+
61
+ response = @client.request(:post, phone_number_id,
62
+ body: payload.to_json, response_type: :json)
63
+ Types::GraphSuccessResponse.new(response)
64
+ end
65
+
66
+ # Get phone number info
67
+ def get(phone_number_id:, fields: nil)
68
+ query_params = {}
69
+ query_params[:fields] = fields if fields
70
+
71
+ response = @client.request(:get, phone_number_id,
72
+ query: query_params, response_type: :json)
73
+ response
74
+ end
75
+
76
+ private
77
+
78
+ def validate_code_method(method)
79
+ valid_methods = %w[SMS VOICE]
80
+ unless valid_methods.include?(method.to_s.upcase)
81
+ raise ArgumentError, "Invalid code method '#{method}'. Must be one of: #{valid_methods.join(', ')}"
82
+ end
83
+ end
84
+ end
85
+ end
86
86
  end