mailhub-sdk 0.1.0

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 (151) hide show
  1. checksums.yaml +7 -0
  2. data/.fern/metadata.json +11 -0
  3. data/.fernignore +3 -0
  4. data/.rubocop.yml +103 -0
  5. data/CONTRIBUTING.md +120 -0
  6. data/README.md +159 -0
  7. data/Rakefile +20 -0
  8. data/custom.gemspec.rb +18 -0
  9. data/lib/Mailhub/campaign/client.rb +730 -0
  10. data/lib/Mailhub/campaign/types/add_campaign_media_by_code_request.rb +13 -0
  11. data/lib/Mailhub/campaign/types/cancel_campaign_request.rb +11 -0
  12. data/lib/Mailhub/campaign/types/catch_up_campaign_request.rb +11 -0
  13. data/lib/Mailhub/campaign/types/create_campaign_by_code_request.rb +27 -0
  14. data/lib/Mailhub/campaign/types/delete_campaign_request.rb +11 -0
  15. data/lib/Mailhub/campaign/types/get_campaign_activity_request.rb +11 -0
  16. data/lib/Mailhub/campaign/types/get_campaign_analytics_request.rb +11 -0
  17. data/lib/Mailhub/campaign/types/get_campaign_link_stats_request.rb +11 -0
  18. data/lib/Mailhub/campaign/types/get_campaign_media_request.rb +11 -0
  19. data/lib/Mailhub/campaign/types/get_campaign_rendered_preview_by_code_request.rb +21 -0
  20. data/lib/Mailhub/campaign/types/get_campaign_request.rb +11 -0
  21. data/lib/Mailhub/campaign/types/get_campaigns_request.rb +19 -0
  22. data/lib/Mailhub/campaign/types/pause_campaign_request.rb +11 -0
  23. data/lib/Mailhub/campaign/types/preview_campaign_request.rb +11 -0
  24. data/lib/Mailhub/campaign/types/remove_campaign_media_request.rb +13 -0
  25. data/lib/Mailhub/campaign/types/schedule_campaign_request.rb +11 -0
  26. data/lib/Mailhub/campaign/types/send_campaign_request.rb +11 -0
  27. data/lib/Mailhub/campaign/types/test_campaign_by_code_request.rb +23 -0
  28. data/lib/Mailhub/campaign/types/update_campaign_by_code_request.rb +29 -0
  29. data/lib/Mailhub/client.rb +55 -0
  30. data/lib/Mailhub/contact/client.rb +385 -0
  31. data/lib/Mailhub/contact/types/block_contact_request.rb +11 -0
  32. data/lib/Mailhub/contact/types/block_contacts_by_guid_request.rb +11 -0
  33. data/lib/Mailhub/contact/types/create_contact_request.rb +15 -0
  34. data/lib/Mailhub/contact/types/delete_contact_request.rb +11 -0
  35. data/lib/Mailhub/contact/types/delete_contacts_by_guid_request.rb +11 -0
  36. data/lib/Mailhub/contact/types/get_contact_request.rb +11 -0
  37. data/lib/Mailhub/contact/types/get_contacts_request.rb +21 -0
  38. data/lib/Mailhub/contact/types/get_import_job_request.rb +11 -0
  39. data/lib/Mailhub/contact/types/import_contacts_request.rb +9 -0
  40. data/lib/Mailhub/contact/types/update_contact_request.rb +17 -0
  41. data/lib/Mailhub/custom_field/client.rb +188 -0
  42. data/lib/Mailhub/custom_field/types/create_custom_field_request.rb +15 -0
  43. data/lib/Mailhub/custom_field/types/delete_custom_field_request.rb +11 -0
  44. data/lib/Mailhub/custom_field/types/get_custom_field_request.rb +11 -0
  45. data/lib/Mailhub/custom_field/types/update_custom_field_request.rb +15 -0
  46. data/lib/Mailhub/errors/api_error.rb +8 -0
  47. data/lib/Mailhub/errors/client_error.rb +17 -0
  48. data/lib/Mailhub/errors/redirect_error.rb +8 -0
  49. data/lib/Mailhub/errors/response_error.rb +42 -0
  50. data/lib/Mailhub/errors/server_error.rb +11 -0
  51. data/lib/Mailhub/errors/timeout_error.rb +8 -0
  52. data/lib/Mailhub/internal/errors/constraint_error.rb +10 -0
  53. data/lib/Mailhub/internal/errors/type_error.rb +10 -0
  54. data/lib/Mailhub/internal/http/base_request.rb +51 -0
  55. data/lib/Mailhub/internal/http/raw_client.rb +248 -0
  56. data/lib/Mailhub/internal/iterators/cursor_item_iterator.rb +28 -0
  57. data/lib/Mailhub/internal/iterators/cursor_page_iterator.rb +63 -0
  58. data/lib/Mailhub/internal/iterators/item_iterator.rb +65 -0
  59. data/lib/Mailhub/internal/iterators/offset_item_iterator.rb +30 -0
  60. data/lib/Mailhub/internal/iterators/offset_page_iterator.rb +103 -0
  61. data/lib/Mailhub/internal/json/request.rb +41 -0
  62. data/lib/Mailhub/internal/json/serializable.rb +25 -0
  63. data/lib/Mailhub/internal/multipart/multipart_encoder.rb +141 -0
  64. data/lib/Mailhub/internal/multipart/multipart_form_data.rb +78 -0
  65. data/lib/Mailhub/internal/multipart/multipart_form_data_part.rb +51 -0
  66. data/lib/Mailhub/internal/multipart/multipart_request.rb +40 -0
  67. data/lib/Mailhub/internal/types/array.rb +47 -0
  68. data/lib/Mailhub/internal/types/boolean.rb +34 -0
  69. data/lib/Mailhub/internal/types/enum.rb +56 -0
  70. data/lib/Mailhub/internal/types/hash.rb +36 -0
  71. data/lib/Mailhub/internal/types/model/field.rb +38 -0
  72. data/lib/Mailhub/internal/types/model.rb +208 -0
  73. data/lib/Mailhub/internal/types/type.rb +35 -0
  74. data/lib/Mailhub/internal/types/union.rb +161 -0
  75. data/lib/Mailhub/internal/types/unknown.rb +15 -0
  76. data/lib/Mailhub/internal/types/utils.rb +116 -0
  77. data/lib/Mailhub/media/client.rb +241 -0
  78. data/lib/Mailhub/media/types/delete_media_request.rb +11 -0
  79. data/lib/Mailhub/media/types/download_media_request.rb +11 -0
  80. data/lib/Mailhub/media/types/get_media_request.rb +11 -0
  81. data/lib/Mailhub/media/types/get_medias_request.rb +19 -0
  82. data/lib/Mailhub/media/types/update_media_request.rb +13 -0
  83. data/lib/Mailhub/media/types/upload_media_request.rb +9 -0
  84. data/lib/Mailhub/message/client.rb +201 -0
  85. data/lib/Mailhub/message/types/cancel_message_request.rb +11 -0
  86. data/lib/Mailhub/message/types/get_message_events_request.rb +11 -0
  87. data/lib/Mailhub/message/types/get_message_request.rb +11 -0
  88. data/lib/Mailhub/message/types/get_messages_request.rb +21 -0
  89. data/lib/Mailhub/message/types/send_message_request.rb +23 -0
  90. data/lib/Mailhub/segment/client.rb +377 -0
  91. data/lib/Mailhub/segment/types/create_segment_request.rb +13 -0
  92. data/lib/Mailhub/segment/types/delete_segment_request.rb +11 -0
  93. data/lib/Mailhub/segment/types/delete_segments_by_code_request.rb +13 -0
  94. data/lib/Mailhub/segment/types/get_segment_contacts_request.rb +15 -0
  95. data/lib/Mailhub/segment/types/get_segment_preview_request.rb +11 -0
  96. data/lib/Mailhub/segment/types/get_segment_request.rb +11 -0
  97. data/lib/Mailhub/segment/types/get_segments_request.rb +19 -0
  98. data/lib/Mailhub/segment/types/get_segments_union_preview_by_code_request.rb +11 -0
  99. data/lib/Mailhub/segment/types/sync_segment_request.rb +11 -0
  100. data/lib/Mailhub/segment/types/update_segment_request.rb +15 -0
  101. data/lib/Mailhub/template/client.rb +301 -0
  102. data/lib/Mailhub/template/types/create_template_request.rb +13 -0
  103. data/lib/Mailhub/template/types/delete_template_request.rb +11 -0
  104. data/lib/Mailhub/template/types/get_template_rendered_preview_request.rb +11 -0
  105. data/lib/Mailhub/template/types/get_template_request.rb +11 -0
  106. data/lib/Mailhub/template/types/get_templates_request.rb +19 -0
  107. data/lib/Mailhub/template/types/preview_template_request.rb +11 -0
  108. data/lib/Mailhub/template/types/update_template_request.rb +15 -0
  109. data/lib/Mailhub/types/api_error.rb +16 -0
  110. data/lib/Mailhub/types/api_error_detail.rb +12 -0
  111. data/lib/Mailhub/types/campaign_activity_point_model.rb +18 -0
  112. data/lib/Mailhub/types/campaign_analytics_model.rb +30 -0
  113. data/lib/Mailhub/types/campaign_link_stat_model.rb +14 -0
  114. data/lib/Mailhub/types/campaign_media_model.rb +24 -0
  115. data/lib/Mailhub/types/campaign_model.rb +52 -0
  116. data/lib/Mailhub/types/campaign_model_paged_result.rb +16 -0
  117. data/lib/Mailhub/types/campaign_segment_model.rb +14 -0
  118. data/lib/Mailhub/types/campaign_status.rb +17 -0
  119. data/lib/Mailhub/types/campaign_type.rb +12 -0
  120. data/lib/Mailhub/types/contact_import_job_model.rb +22 -0
  121. data/lib/Mailhub/types/contact_import_model.rb +10 -0
  122. data/lib/Mailhub/types/contact_import_status.rb +14 -0
  123. data/lib/Mailhub/types/contact_model.rb +26 -0
  124. data/lib/Mailhub/types/contact_model_cursor_paged_result.rb +18 -0
  125. data/lib/Mailhub/types/contact_model_paged_result.rb +16 -0
  126. data/lib/Mailhub/types/contact_segment_model.rb +14 -0
  127. data/lib/Mailhub/types/contact_status.rb +13 -0
  128. data/lib/Mailhub/types/custom_field_model.rb +20 -0
  129. data/lib/Mailhub/types/custom_field_type.rb +14 -0
  130. data/lib/Mailhub/types/import_contact_error_model.rb +12 -0
  131. data/lib/Mailhub/types/media_model.rb +28 -0
  132. data/lib/Mailhub/types/media_model_paged_result.rb +16 -0
  133. data/lib/Mailhub/types/message_event_model.rb +16 -0
  134. data/lib/Mailhub/types/message_event_type.rb +18 -0
  135. data/lib/Mailhub/types/message_model.rb +36 -0
  136. data/lib/Mailhub/types/message_model_cursor_paged_result.rb +18 -0
  137. data/lib/Mailhub/types/preview_segment_model.rb +10 -0
  138. data/lib/Mailhub/types/running_campaign_stats_model.rb +32 -0
  139. data/lib/Mailhub/types/segment_filter_group_model.rb +12 -0
  140. data/lib/Mailhub/types/segment_filter_model.rb +10 -0
  141. data/lib/Mailhub/types/segment_filter_rule_model.rb +14 -0
  142. data/lib/Mailhub/types/segment_model.rb +32 -0
  143. data/lib/Mailhub/types/segment_model_paged_result.rb +16 -0
  144. data/lib/Mailhub/types/segment_sync_status.rb +14 -0
  145. data/lib/Mailhub/types/template_expression_model.rb +14 -0
  146. data/lib/Mailhub/types/template_model.rb +20 -0
  147. data/lib/Mailhub/types/template_model_paged_result.rb +16 -0
  148. data/lib/Mailhub/version.rb +5 -0
  149. data/lib/Mailhub.rb +145 -0
  150. data/reference.md +3691 -0
  151. metadata +193 -0
@@ -0,0 +1,116 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Internal
5
+ module Types
6
+ # Utilities for dealing with and checking types
7
+ module Utils
8
+ # Wraps a type into a type function
9
+ #
10
+ # @param type [Proc, Object]
11
+ # @return [Proc]
12
+ def self.wrap_type(type)
13
+ case type
14
+ when Proc
15
+ type
16
+ else
17
+ -> { type }
18
+ end
19
+ end
20
+
21
+ # Resolves a type or type function into a type
22
+ #
23
+ # @param type [Proc, Object]
24
+ # @return [Object]
25
+ def self.unwrap_type(type)
26
+ type.is_a?(Proc) ? type.call : type
27
+ end
28
+
29
+ def self.coerce(target, value, strict: false)
30
+ type = unwrap_type(target)
31
+
32
+ case type
33
+ in Array
34
+ case value
35
+ when ::Array
36
+ return type.coerce(value, strict: strict)
37
+ when Set, ::Hash
38
+ return coerce(type, value.to_a)
39
+ end
40
+ in Hash
41
+ case value
42
+ when ::Hash
43
+ return type.coerce(value, strict: strict)
44
+ when ::Array
45
+ return coerce(type, value.to_h)
46
+ end
47
+ in ->(t) { t <= NilClass }
48
+ return nil
49
+ in ->(t) { t <= String }
50
+ case value
51
+ when String, Symbol, Numeric, TrueClass, FalseClass
52
+ return value.to_s
53
+ end
54
+ in ->(t) { t <= Symbol }
55
+ case value
56
+ when Symbol, String
57
+ return value.to_sym
58
+ end
59
+ in ->(t) { t <= Integer }
60
+ case value
61
+ when Numeric, String, Time
62
+ return value.to_i
63
+ end
64
+ in ->(t) { t <= Float }
65
+ case value
66
+ when Numeric, Time, String
67
+ return value.to_f
68
+ end
69
+ in ->(t) { t <= Model }
70
+ case value
71
+ when type
72
+ return value
73
+ when ::Hash
74
+ return type.coerce(value, strict: strict)
75
+ end
76
+ in Module
77
+ case type
78
+ in ->(t) {
79
+ t.singleton_class.included_modules.include?(Enum) ||
80
+ t.singleton_class.included_modules.include?(Union)
81
+ }
82
+ return type.coerce(value, strict: strict)
83
+ else
84
+ value # rubocop:disable Lint/Void
85
+ end
86
+ else
87
+ value # rubocop:disable Lint/Void
88
+ end
89
+
90
+ raise Errors::TypeError, "cannot coerce value of type `#{value.class}` to `#{target}`" if strict
91
+
92
+ value
93
+ end
94
+
95
+ def self.symbolize_keys(hash)
96
+ hash.transform_keys(&:to_sym)
97
+ end
98
+
99
+ # Converts camelCase keys to snake_case symbols
100
+ # This allows SDK methods to accept both snake_case and camelCase keys
101
+ # e.g., { refundMethod: ... } becomes { refund_method: ... }
102
+ #
103
+ # @param hash [Hash]
104
+ # @return [Hash]
105
+ def self.normalize_keys(hash)
106
+ hash.transform_keys do |key|
107
+ key_str = key.to_s
108
+ # Convert camelCase to snake_case
109
+ snake_case = key_str.gsub(/([a-z\d])([A-Z])/, '\1_\2').downcase
110
+ snake_case.to_sym
111
+ end
112
+ end
113
+ end
114
+ end
115
+ end
116
+ end
@@ -0,0 +1,241 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Media
5
+ class Client
6
+ # @param client [Mailhub::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # @param request_options [Hash]
14
+ # @param params [Hash]
15
+ # @option request_options [String] :base_url
16
+ # @option request_options [Hash{String => Object}] :additional_headers
17
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
18
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
19
+ # @option request_options [Integer] :timeout_in_seconds
20
+ # @option params [String, nil] :search
21
+ # @option params [String, nil] :sort_by
22
+ # @option params [String, nil] :sort_direction
23
+ # @option params [Integer, nil] :page_size
24
+ # @option params [Integer, nil] :page_index
25
+ #
26
+ # @example
27
+ # client.media.get_medias
28
+ #
29
+ # @return [Mailhub::Types::MediaModelPagedResult]
30
+ def get_medias(request_options: {}, **params)
31
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
32
+ query_params = {}
33
+ query_params["search"] = params[:search] if params.key?(:search)
34
+ query_params["sortBy"] = params[:sort_by] if params.key?(:sort_by)
35
+ query_params["sortDirection"] = params[:sort_direction] if params.key?(:sort_direction)
36
+ query_params["pageSize"] = params[:page_size] if params.key?(:page_size)
37
+ query_params["pageIndex"] = params[:page_index] if params.key?(:page_index)
38
+
39
+ request = Mailhub::Internal::JSON::Request.new(
40
+ base_url: request_options[:base_url],
41
+ method: "GET",
42
+ path: "v1/media",
43
+ query: query_params,
44
+ request_options: request_options
45
+ )
46
+ begin
47
+ response = @client.send(request)
48
+ rescue Net::HTTPRequestTimeout
49
+ raise Mailhub::Errors::TimeoutError
50
+ end
51
+ code = response.code.to_i
52
+ if code.between?(200, 299)
53
+ Mailhub::Types::MediaModelPagedResult.load(response.body)
54
+ else
55
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
56
+ raise error_class.new(response.body, code: code)
57
+ end
58
+ end
59
+
60
+ # @param request_options [Hash]
61
+ # @param params [void]
62
+ # @option request_options [String] :base_url
63
+ # @option request_options [Hash{String => Object}] :additional_headers
64
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
65
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
66
+ # @option request_options [Integer] :timeout_in_seconds
67
+ #
68
+ # @example
69
+ # client.media.upload_media
70
+ #
71
+ # @return [Mailhub::Types::MediaModel]
72
+ def upload_media(request_options: {}, **params)
73
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
74
+ body = Internal::Multipart::FormData.new
75
+
76
+ body.add_part(params[:file].to_form_data_part(name: "file")) if params[:file]
77
+
78
+ request = Mailhub::Internal::Multipart::Request.new(
79
+ base_url: request_options[:base_url],
80
+ method: "POST",
81
+ path: "v1/media",
82
+ body: body,
83
+ request_options: request_options
84
+ )
85
+ begin
86
+ response = @client.send(request)
87
+ rescue Net::HTTPRequestTimeout
88
+ raise Mailhub::Errors::TimeoutError
89
+ end
90
+ code = response.code.to_i
91
+ if code.between?(200, 299)
92
+ Mailhub::Types::MediaModel.load(response.body)
93
+ else
94
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
95
+ raise error_class.new(response.body, code: code)
96
+ end
97
+ end
98
+
99
+ # @param request_options [Hash]
100
+ # @param params [Hash]
101
+ # @option request_options [String] :base_url
102
+ # @option request_options [Hash{String => Object}] :additional_headers
103
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
104
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
105
+ # @option request_options [Integer] :timeout_in_seconds
106
+ # @option params [String] :code
107
+ #
108
+ # @example
109
+ # client.media.get_media(code: "code")
110
+ #
111
+ # @return [Mailhub::Types::MediaModel]
112
+ def get_media(request_options: {}, **params)
113
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
114
+ request = Mailhub::Internal::JSON::Request.new(
115
+ base_url: request_options[:base_url],
116
+ method: "GET",
117
+ path: "v1/media/#{URI.encode_uri_component(params[:code].to_s)}",
118
+ request_options: request_options
119
+ )
120
+ begin
121
+ response = @client.send(request)
122
+ rescue Net::HTTPRequestTimeout
123
+ raise Mailhub::Errors::TimeoutError
124
+ end
125
+ code = response.code.to_i
126
+ if code.between?(200, 299)
127
+ Mailhub::Types::MediaModel.load(response.body)
128
+ else
129
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
130
+ raise error_class.new(response.body, code: code)
131
+ end
132
+ end
133
+
134
+ # @param request_options [Hash]
135
+ # @param params [Mailhub::Media::Types::UpdateMediaRequest]
136
+ # @option request_options [String] :base_url
137
+ # @option request_options [Hash{String => Object}] :additional_headers
138
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
139
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
140
+ # @option request_options [Integer] :timeout_in_seconds
141
+ # @option params [String] :code
142
+ #
143
+ # @example
144
+ # client.media.update_media(code: "code")
145
+ #
146
+ # @return [Mailhub::Types::MediaModel]
147
+ def update_media(request_options: {}, **params)
148
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
149
+ request_data = Mailhub::Media::Types::UpdateMediaRequest.new(params).to_h
150
+ non_body_param_names = %w[code]
151
+ body = request_data.except(*non_body_param_names)
152
+
153
+ request = Mailhub::Internal::JSON::Request.new(
154
+ base_url: request_options[:base_url],
155
+ method: "PUT",
156
+ path: "v1/media/#{URI.encode_uri_component(params[:code].to_s)}",
157
+ body: body,
158
+ request_options: request_options
159
+ )
160
+ begin
161
+ response = @client.send(request)
162
+ rescue Net::HTTPRequestTimeout
163
+ raise Mailhub::Errors::TimeoutError
164
+ end
165
+ code = response.code.to_i
166
+ if code.between?(200, 299)
167
+ Mailhub::Types::MediaModel.load(response.body)
168
+ else
169
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
170
+ raise error_class.new(response.body, code: code)
171
+ end
172
+ end
173
+
174
+ # @param request_options [Hash]
175
+ # @param params [Hash]
176
+ # @option request_options [String] :base_url
177
+ # @option request_options [Hash{String => Object}] :additional_headers
178
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
179
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
180
+ # @option request_options [Integer] :timeout_in_seconds
181
+ # @option params [String] :code
182
+ #
183
+ # @example
184
+ # client.media.delete_media(code: "code")
185
+ #
186
+ # @return [untyped]
187
+ def delete_media(request_options: {}, **params)
188
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
189
+ request = Mailhub::Internal::JSON::Request.new(
190
+ base_url: request_options[:base_url],
191
+ method: "DELETE",
192
+ path: "v1/media/#{URI.encode_uri_component(params[:code].to_s)}",
193
+ request_options: request_options
194
+ )
195
+ begin
196
+ response = @client.send(request)
197
+ rescue Net::HTTPRequestTimeout
198
+ raise Mailhub::Errors::TimeoutError
199
+ end
200
+ code = response.code.to_i
201
+ return if code.between?(200, 299)
202
+
203
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
204
+ raise error_class.new(response.body, code: code)
205
+ end
206
+
207
+ # @param request_options [Hash]
208
+ # @param params [Hash]
209
+ # @option request_options [String] :base_url
210
+ # @option request_options [Hash{String => Object}] :additional_headers
211
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
212
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
213
+ # @option request_options [Integer] :timeout_in_seconds
214
+ # @option params [String] :code
215
+ #
216
+ # @example
217
+ # client.media.download_media(code: "code")
218
+ #
219
+ # @return [untyped]
220
+ def download_media(request_options: {}, **params)
221
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
222
+ request = Mailhub::Internal::JSON::Request.new(
223
+ base_url: request_options[:base_url],
224
+ method: "GET",
225
+ path: "v1/media/#{URI.encode_uri_component(params[:code].to_s)}/download",
226
+ request_options: request_options
227
+ )
228
+ begin
229
+ response = @client.send(request)
230
+ rescue Net::HTTPRequestTimeout
231
+ raise Mailhub::Errors::TimeoutError
232
+ end
233
+ code = response.code.to_i
234
+ return if code.between?(200, 299)
235
+
236
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
237
+ raise error_class.new(response.body, code: code)
238
+ end
239
+ end
240
+ end
241
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Media
5
+ module Types
6
+ class DeleteMediaRequest < Internal::Types::Model
7
+ field :code, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Media
5
+ module Types
6
+ class DownloadMediaRequest < Internal::Types::Model
7
+ field :code, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Media
5
+ module Types
6
+ class GetMediaRequest < Internal::Types::Model
7
+ field :code, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Media
5
+ module Types
6
+ class GetMediasRequest < Internal::Types::Model
7
+ field :search, -> { String }, optional: true, nullable: false
8
+
9
+ field :sort_by, -> { String }, optional: true, nullable: false, api_name: "sortBy"
10
+
11
+ field :sort_direction, -> { String }, optional: true, nullable: false, api_name: "sortDirection"
12
+
13
+ field :page_size, -> { Integer }, optional: true, nullable: false, api_name: "pageSize"
14
+
15
+ field :page_index, -> { Integer }, optional: true, nullable: false, api_name: "pageIndex"
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Media
5
+ module Types
6
+ class UpdateMediaRequest < Internal::Types::Model
7
+ field :code, -> { String }, optional: false, nullable: false
8
+
9
+ field :original_file_name, -> { String }, optional: true, nullable: false, api_name: "originalFileName"
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Media
5
+ module Types
6
+ class UploadMediaRequest < Internal::Types::Model; end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,201 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Message
5
+ class Client
6
+ # @param client [Mailhub::Internal::Http::RawClient]
7
+ #
8
+ # @return [void]
9
+ def initialize(client:)
10
+ @client = client
11
+ end
12
+
13
+ # @param request_options [Hash]
14
+ # @param params [Hash]
15
+ # @option request_options [String] :base_url
16
+ # @option request_options [Hash{String => Object}] :additional_headers
17
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
18
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
19
+ # @option request_options [Integer] :timeout_in_seconds
20
+ # @option params [String, nil] :search
21
+ # @option params [String, nil] :status
22
+ # @option params [String, nil] :sort_by
23
+ # @option params [String, nil] :sort_direction
24
+ # @option params [Integer, nil] :page_size
25
+ # @option params [String, nil] :cursor
26
+ #
27
+ # @example
28
+ # client.message.get_messages
29
+ #
30
+ # @return [Mailhub::Types::MessageModelCursorPagedResult]
31
+ def get_messages(request_options: {}, **params)
32
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
33
+ query_params = {}
34
+ query_params["search"] = params[:search] if params.key?(:search)
35
+ query_params["status"] = params[:status] if params.key?(:status)
36
+ query_params["sortBy"] = params[:sort_by] if params.key?(:sort_by)
37
+ query_params["sortDirection"] = params[:sort_direction] if params.key?(:sort_direction)
38
+ query_params["pageSize"] = params[:page_size] if params.key?(:page_size)
39
+ query_params["cursor"] = params[:cursor] if params.key?(:cursor)
40
+
41
+ request = Mailhub::Internal::JSON::Request.new(
42
+ base_url: request_options[:base_url],
43
+ method: "GET",
44
+ path: "v1/messages",
45
+ query: query_params,
46
+ request_options: request_options
47
+ )
48
+ begin
49
+ response = @client.send(request)
50
+ rescue Net::HTTPRequestTimeout
51
+ raise Mailhub::Errors::TimeoutError
52
+ end
53
+ code = response.code.to_i
54
+ if code.between?(200, 299)
55
+ Mailhub::Types::MessageModelCursorPagedResult.load(response.body)
56
+ else
57
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
58
+ raise error_class.new(response.body, code: code)
59
+ end
60
+ end
61
+
62
+ # @param request_options [Hash]
63
+ # @param params [Hash]
64
+ # @option request_options [String] :base_url
65
+ # @option request_options [Hash{String => Object}] :additional_headers
66
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
67
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
68
+ # @option request_options [Integer] :timeout_in_seconds
69
+ # @option params [String] :guid
70
+ #
71
+ # @example
72
+ # client.message.get_message(guid: "guid")
73
+ #
74
+ # @return [Mailhub::Types::MessageModel]
75
+ def get_message(request_options: {}, **params)
76
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
77
+ request = Mailhub::Internal::JSON::Request.new(
78
+ base_url: request_options[:base_url],
79
+ method: "GET",
80
+ path: "v1/messages/#{URI.encode_uri_component(params[:guid].to_s)}",
81
+ request_options: request_options
82
+ )
83
+ begin
84
+ response = @client.send(request)
85
+ rescue Net::HTTPRequestTimeout
86
+ raise Mailhub::Errors::TimeoutError
87
+ end
88
+ code = response.code.to_i
89
+ if code.between?(200, 299)
90
+ Mailhub::Types::MessageModel.load(response.body)
91
+ else
92
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
93
+ raise error_class.new(response.body, code: code)
94
+ end
95
+ end
96
+
97
+ # @param request_options [Hash]
98
+ # @param params [Hash]
99
+ # @option request_options [String] :base_url
100
+ # @option request_options [Hash{String => Object}] :additional_headers
101
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
102
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
103
+ # @option request_options [Integer] :timeout_in_seconds
104
+ # @option params [String] :guid
105
+ #
106
+ # @example
107
+ # client.message.get_message_events(guid: "guid")
108
+ #
109
+ # @return [Array[Mailhub::Types::MessageEventModel]]
110
+ def get_message_events(request_options: {}, **params)
111
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
112
+ request = Mailhub::Internal::JSON::Request.new(
113
+ base_url: request_options[:base_url],
114
+ method: "GET",
115
+ path: "v1/messages/#{URI.encode_uri_component(params[:guid].to_s)}/events",
116
+ request_options: request_options
117
+ )
118
+ begin
119
+ response = @client.send(request)
120
+ rescue Net::HTTPRequestTimeout
121
+ raise Mailhub::Errors::TimeoutError
122
+ end
123
+ code = response.code.to_i
124
+ return if code.between?(200, 299)
125
+
126
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
127
+ raise error_class.new(response.body, code: code)
128
+ end
129
+
130
+ # @param request_options [Hash]
131
+ # @param params [Mailhub::Message::Types::SendMessageRequest]
132
+ # @option request_options [String] :base_url
133
+ # @option request_options [Hash{String => Object}] :additional_headers
134
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
135
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
136
+ # @option request_options [Integer] :timeout_in_seconds
137
+ #
138
+ # @example
139
+ # client.message.send_message
140
+ #
141
+ # @return [Mailhub::Types::MessageModel]
142
+ def send_message(request_options: {}, **params)
143
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
144
+ request = Mailhub::Internal::JSON::Request.new(
145
+ base_url: request_options[:base_url],
146
+ method: "POST",
147
+ path: "v1/messages/send",
148
+ body: Mailhub::Message::Types::SendMessageRequest.new(params).to_h,
149
+ request_options: request_options
150
+ )
151
+ begin
152
+ response = @client.send(request)
153
+ rescue Net::HTTPRequestTimeout
154
+ raise Mailhub::Errors::TimeoutError
155
+ end
156
+ code = response.code.to_i
157
+ if code.between?(200, 299)
158
+ Mailhub::Types::MessageModel.load(response.body)
159
+ else
160
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
161
+ raise error_class.new(response.body, code: code)
162
+ end
163
+ end
164
+
165
+ # @param request_options [Hash]
166
+ # @param params [Hash]
167
+ # @option request_options [String] :base_url
168
+ # @option request_options [Hash{String => Object}] :additional_headers
169
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
170
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
171
+ # @option request_options [Integer] :timeout_in_seconds
172
+ # @option params [String] :guid
173
+ #
174
+ # @example
175
+ # client.message.cancel_message(guid: "guid")
176
+ #
177
+ # @return [Mailhub::Types::MessageModel]
178
+ def cancel_message(request_options: {}, **params)
179
+ params = Mailhub::Internal::Types::Utils.normalize_keys(params)
180
+ request = Mailhub::Internal::JSON::Request.new(
181
+ base_url: request_options[:base_url],
182
+ method: "PUT",
183
+ path: "v1/messages/#{URI.encode_uri_component(params[:guid].to_s)}/cancel",
184
+ request_options: request_options
185
+ )
186
+ begin
187
+ response = @client.send(request)
188
+ rescue Net::HTTPRequestTimeout
189
+ raise Mailhub::Errors::TimeoutError
190
+ end
191
+ code = response.code.to_i
192
+ if code.between?(200, 299)
193
+ Mailhub::Types::MessageModel.load(response.body)
194
+ else
195
+ error_class = Mailhub::Errors::ResponseError.subclass_for_code(code)
196
+ raise error_class.new(response.body, code: code)
197
+ end
198
+ end
199
+ end
200
+ end
201
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Message
5
+ module Types
6
+ class CancelMessageRequest < Internal::Types::Model
7
+ field :guid, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Message
5
+ module Types
6
+ class GetMessageEventsRequest < Internal::Types::Model
7
+ field :guid, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Mailhub
4
+ module Message
5
+ module Types
6
+ class GetMessageRequest < Internal::Types::Model
7
+ field :guid, -> { String }, optional: false, nullable: false
8
+ end
9
+ end
10
+ end
11
+ end