infobipapi 0.5.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.
@@ -0,0 +1,277 @@
1
+ # vim: set sw=4 ts=4 et :
2
+
3
+ require_relative 'objects'
4
+
5
+ # ----------------------------------------------------------------------------------------------------
6
+ # Generic:
7
+ # ----------------------------------------------------------------------------------------------------
8
+
9
+ module InfobipApi
10
+
11
+
12
+ class InfobipApiError < InfobipApiModel
13
+
14
+ infobipapi_attr_accessor :message_id, FieldConversionRule.new('requestError.serviceException.messageId | requestError.policyException.messageId')
15
+ infobipapi_attr_accessor :text, FieldConversionRule.new('requestError.serviceException.text | requestError.policyException.text')
16
+ infobipapi_attr_accessor :variables, FieldConversionRule.new('requestError.serviceException.variables | requestError.policyException.variables')
17
+
18
+ end
19
+
20
+ class GenericObject < InfobipApiModel
21
+
22
+ # FIXME: WIthout this it is not a valid model
23
+ infobipapi_attr_accessor :ignore, FieldConversionRule.new(:ignore)
24
+
25
+ end
26
+
27
+ # ----------------------------------------------------------------------------------------------------
28
+ # Messaging:
29
+ # ----------------------------------------------------------------------------------------------------
30
+
31
+
32
+ class AuthenticationAnswer < InfobipApiModel
33
+
34
+ infobipapi_attr_accessor :token, FieldConversionRule.new
35
+
36
+ end
37
+
38
+ class Language < InfobipApiModel
39
+
40
+ infobipapi_attr_accessor :language_code, FieldConversionRule.new(:languageCode)
41
+ infobipapi_attr_accessor :use_single_shift, FieldConversionRule.new(:useSingleShift)
42
+ infobipapi_attr_accessor :use_locking_shift, FieldConversionRule.new(:useLockingShift)
43
+
44
+ end
45
+
46
+ class StatusAnswer < InfobipApiModel
47
+
48
+ infobipapi_attr_accessor :group_id, FieldConversionRule.new(:groupId)
49
+ infobipapi_attr_accessor :group_name, FieldConversionRule.new(:groupName)
50
+ infobipapi_attr_accessor :id, FieldConversionRule.new()
51
+ infobipapi_attr_accessor :name, FieldConversionRule.new()
52
+ infobipapi_attr_accessor :descripton, FieldConversionRule.new()
53
+
54
+ end
55
+
56
+ class MessageAnswer < InfobipApiModel
57
+
58
+ infobipapi_attr_accessor :to, FieldConversionRule.new()
59
+ infobipapi_attr_accessor :status, ObjectFieldConverter.new(StatusAnswer, 'status')
60
+ infobipapi_attr_accessor :sms_count, FieldConversionRule.new(:smsCount)
61
+ infobipapi_attr_accessor :message_id, FieldConversionRule.new(:messageId)
62
+
63
+ end
64
+
65
+ class SimpleTextSMSRequest < InfobipApiModel
66
+
67
+ infobipapi_attr_accessor :from, FieldConversionRule.new()
68
+ infobipapi_attr_accessor :to, FieldConversionRule.new()
69
+ infobipapi_attr_accessor :text, FieldConversionRule.new()
70
+
71
+ end
72
+
73
+ class SimpleSMSAnswer < InfobipApiModel
74
+ infobipapi_attr_accessor :bulk_id, FieldConversionRule.new(:bulkId)
75
+ infobipapi_attr_accessor :messages, ObjectArrayConversionRule.new(MessageAnswer, 'messages')
76
+ end
77
+
78
+ class AdvancedTextSMSRequest < SimpleTextSMSRequest
79
+
80
+ infobipapi_attr_accessor :bulk_id, FieldConversionRule.new(:bulkId)
81
+ infobipapi_attr_accessor :message_id, FieldConversionRule.new(:messageId)
82
+ infobipapi_attr_accessor :flash, FieldConversionRule.new()
83
+ infobipapi_attr_accessor :transliteration, FieldConversionRule.new()
84
+ infobipapi_attr_accessor :language_code, FieldConversionRule.new(:languageCode)
85
+ infobipapi_attr_accessor :intermediate_report, FieldConversionRule.new(:intermediateReport)
86
+ infobipapi_attr_accessor :notify_url, FieldConversionRule.new(:notifyUrl)
87
+ infobipapi_attr_accessor :notify_content_type, FieldConversionRule.new(:notifyContentType)
88
+ infobipapi_attr_accessor :callback_data, FieldConversionRule.new(:callbackData)
89
+ infobipapi_attr_accessor :language, ObjectFieldConverter.new(Language,'language')
90
+
91
+ end
92
+
93
+ class ResourceReference < InfobipApiModel
94
+
95
+ infobipapi_attr_accessor :client_correlator, PartOfUrlFieldConversionRule.new('resourceReference.resourceURL',-2)
96
+
97
+ end
98
+
99
+ class DeliveryInfo < InfobipApiModel
100
+
101
+ infobipapi_attr_accessor :address, FieldConversionRule.new(:address)
102
+ infobipapi_attr_accessor :delivery_status, FieldConversionRule.new(:deliveryStatus)
103
+
104
+ end
105
+
106
+ class DeliveryInfoList < InfobipApiModel
107
+
108
+ infobipapi_attr_accessor :delivery_info, ObjectArrayConversionRule.new(DeliveryInfo, 'deliveryInfoList.deliveryInfo')
109
+
110
+ end
111
+
112
+ class DeliveryInfoNotification < InfobipApiModel
113
+
114
+ infobipapi_attr_accessor :delivery_info, ObjectFieldConverter.new(DeliveryInfo, 'deliveryInfoNotification.deliveryInfo')
115
+ infobipapi_attr_accessor :callback_data, FieldConversionRule.new('deliveryInfoNotification.callbackData')
116
+
117
+ end
118
+
119
+ # ----------------------------------------------------------------------------------------------------
120
+ # HLR:
121
+ # ----------------------------------------------------------------------------------------------------
122
+
123
+ class ServingMccMnc < InfobipApiModel
124
+
125
+ infobipapi_attr_accessor :mcc, FieldConversionRule.new(:mcc)
126
+ infobipapi_attr_accessor :mnc, FieldConversionRule.new(:mnc)
127
+
128
+ end
129
+
130
+ class TerminalRoamingExtendedData < InfobipApiModel
131
+
132
+ infobipapi_attr_accessor :destination_address, FieldConversionRule.new('destinationAddress')
133
+ infobipapi_attr_accessor :status_id, FieldConversionRule.new('statusId')
134
+ infobipapi_attr_accessor :done_time, FieldConversionRule.new('doneTime')
135
+ infobipapi_attr_accessor :price_per_message, FieldConversionRule.new('pricePerMessage')
136
+ infobipapi_attr_accessor :mcc_mnc, FieldConversionRule.new('mccMnc')
137
+ infobipapi_attr_accessor :serving_msc, FieldConversionRule.new('servingMsc')
138
+ infobipapi_attr_accessor :censored_serving_msc, FieldConversionRule.new('censoredServingMsc')
139
+ infobipapi_attr_accessor :gsm_error_code, FieldConversionRule.new('gsmErrorCode')
140
+ infobipapi_attr_accessor :original_network_name, FieldConversionRule.new('originalNetworkName')
141
+ infobipapi_attr_accessor :ported_network_name, FieldConversionRule.new('portedNetworkName')
142
+ infobipapi_attr_accessor :serving_hlr, FieldConversionRule.new('servingHlr')
143
+ infobipapi_attr_accessor :imsi, FieldConversionRule.new('imsi')
144
+ infobipapi_attr_accessor :original_network_prefix, FieldConversionRule.new('originalNetworkPrefix')
145
+ infobipapi_attr_accessor :original_country_prefix, FieldConversionRule.new('originalCountryPrefix')
146
+ infobipapi_attr_accessor :original_country_name, FieldConversionRule.new('originalCountryName')
147
+ infobipapi_attr_accessor :is_number_ported, FieldConversionRule.new('isNumberPorted')
148
+ infobipapi_attr_accessor :ported_network_prefix, FieldConversionRule.new('portedNetworkPrefix')
149
+ infobipapi_attr_accessor :ported_country_prefix, FieldConversionRule.new('portedCountryPrefix')
150
+ infobipapi_attr_accessor :ported_country_name, FieldConversionRule.new('portedCountryName')
151
+ infobipapi_attr_accessor :number_in_roaming, FieldConversionRule.new('numberInRoaming')
152
+
153
+ end
154
+
155
+ class TerminalRoamingStatus < InfobipApiModel
156
+
157
+ infobipapi_attr_accessor :servingMccMnc, ObjectFieldConverter.new(ServingMccMnc, 'servingMccMnc')
158
+ infobipapi_attr_accessor :address, FieldConversionRule.new()
159
+ infobipapi_attr_accessor :currentRoaming, FieldConversionRule.new('currentRoaming')
160
+ infobipapi_attr_accessor :resourceURL, FieldConversionRule.new('resourceURL')
161
+ infobipapi_attr_accessor :retrievalStatus, FieldConversionRule.new('retrievalStatus')
162
+ infobipapi_attr_accessor :callbackData, FieldConversionRule.new('callbackData')
163
+ infobipapi_attr_accessor :extendedData, ObjectFieldConverter.new(TerminalRoamingExtendedData, 'extendedData')
164
+
165
+ end
166
+
167
+
168
+ class TerminalRoamingStatusNotification < InfobipApiModel
169
+
170
+ infobipapi_attr_accessor :delivery_info, ObjectFieldConverter.new(TerminalRoamingStatus, 'terminalRoamingStatusList.roaming')
171
+ infobipapi_attr_accessor :callback_data, FieldConversionRule.new('terminalRoamingStatusList.roaming.callbackData')
172
+
173
+ end
174
+
175
+ # ----------------------------------------------------------------------------------------------------
176
+ # Customer profile:
177
+ # ----------------------------------------------------------------------------------------------------
178
+
179
+ class CustomerProfile < InfobipApiModel
180
+
181
+ infobipapi_attr_accessor :id, FieldConversionRule.new()
182
+ infobipapi_attr_accessor :username, FieldConversionRule.new()
183
+ infobipapi_attr_accessor :forename, FieldConversionRule.new()
184
+ infobipapi_attr_accessor :surname, FieldConversionRule.new()
185
+ infobipapi_attr_accessor :street, FieldConversionRule.new()
186
+ infobipapi_attr_accessor :city, FieldConversionRule.new()
187
+ infobipapi_attr_accessor :zip_code, FieldConversionRule.new('zipCode')
188
+ infobipapi_attr_accessor :telephone, FieldConversionRule.new()
189
+ infobipapi_attr_accessor :gsm, FieldConversionRule.new()
190
+ infobipapi_attr_accessor :fax, FieldConversionRule.new()
191
+ infobipapi_attr_accessor :email, FieldConversionRule.new()
192
+ infobipapi_attr_accessor :msn, FieldConversionRule.new()
193
+ infobipapi_attr_accessor :skype, FieldConversionRule.new()
194
+ infobipapi_attr_accessor :country_id, FieldConversionRule.new('countryId')
195
+ infobipapi_attr_accessor :timezone_id, FieldConversionRule.new('timezoneId')
196
+ infobipapi_attr_accessor :primary_language_id, FieldConversionRule.new('primaryLanguageId')
197
+ infobipapi_attr_accessor :secondary_language_id, FieldConversionRule.new('secondaryLanguageId')
198
+
199
+ end
200
+
201
+ class Currency < InfobipApiModel
202
+
203
+ infobipapi_attr_accessor :id, FieldConversionRule.new()
204
+ infobipapi_attr_accessor :currency_name, FieldConversionRule.new('currencyName')
205
+ infobipapi_attr_accessor :symbol, FieldConversionRule.new()
206
+
207
+ end
208
+
209
+ class Currency < InfobipApiModel
210
+
211
+ infobipapi_attr_accessor :id, FieldConversionRule.new()
212
+ infobipapi_attr_accessor :currency_name, FieldConversionRule.new('currencyName')
213
+ infobipapi_attr_accessor :symbol, FieldConversionRule.new()
214
+
215
+ end
216
+
217
+ class AccountBalance < InfobipApiModel
218
+
219
+ infobipapi_attr_accessor :balance, FieldConversionRule.new()
220
+ infobipapi_attr_accessor :currency, ObjectFieldConverter.new(Currency)
221
+
222
+ end
223
+
224
+ # ----------------------------------------------------------------------------------------------------
225
+ # Message delivery reports:
226
+ # ----------------------------------------------------------------------------------------------------
227
+
228
+ class DeliveryReportPrice < InfobipApiModel
229
+
230
+ infobipapi_attr_accessor :price_per_message, FieldConversionRule.new('pricePerMessage')
231
+ infobipapi_attr_accessor :currency, FieldConversionRule.new()
232
+
233
+ end
234
+
235
+ class DeliveryReportStatus < InfobipApiModel
236
+
237
+ infobipapi_attr_accessor :id, FieldConversionRule.new()
238
+ infobipapi_attr_accessor :group_id, FieldConversionRule.new('groupId')
239
+ infobipapi_attr_accessor :group_name, FieldConversionRule.new('groupName')
240
+ infobipapi_attr_accessor :name, FieldConversionRule.new()
241
+ infobipapi_attr_accessor :description, FieldConversionRule.new()
242
+
243
+ end
244
+
245
+ class DeliveryReportError < InfobipApiModel
246
+
247
+ infobipapi_attr_accessor :group_id, FieldConversionRule.new('groupId')
248
+ infobipapi_attr_accessor :group_name, FieldConversionRule.new('groupName')
249
+ infobipapi_attr_accessor :id, FieldConversionRule.new()
250
+ infobipapi_attr_accessor :name, FieldConversionRule.new()
251
+ infobipapi_attr_accessor :description, FieldConversionRule.new()
252
+ infobipapi_attr_accessor :permanent, FieldConversionRule.new()
253
+
254
+ end
255
+
256
+ class DeliveryReport < InfobipApiModel
257
+
258
+ infobipapi_attr_accessor :bulk_id, FieldConversionRule.new('bulkId')
259
+ infobipapi_attr_accessor :message_id, FieldConversionRule.new('messageId')
260
+ infobipapi_attr_accessor :to, FieldConversionRule.new()
261
+ infobipapi_attr_accessor :sent_at, FieldConversionRule.new('sentAt')
262
+ infobipapi_attr_accessor :done_at, FieldConversionRule.new('doneAt')
263
+ infobipapi_attr_accessor :sms_count, FieldConversionRule.new('smsCount')
264
+ infobipapi_attr_accessor :mcc_mnc, FieldConversionRule.new('mccMnc')
265
+ infobipapi_attr_accessor :price, ObjectFieldConverter.new(DeliveryReportPrice, 'price')
266
+ infobipapi_attr_accessor :status, ObjectFieldConverter.new(DeliveryReportStatus, 'status')
267
+ infobipapi_attr_accessor :error, ObjectFieldConverter.new(DeliveryReportError, 'error')
268
+
269
+ end
270
+
271
+ class DeliveryReportList < InfobipApiModel
272
+
273
+ infobipapi_attr_accessor :results, ObjectArrayConversionRule.new(DeliveryReport, 'results')
274
+ end
275
+
276
+
277
+ end
@@ -0,0 +1,198 @@
1
+ # vim: set sw=4 ts=4 et :
2
+
3
+ =begin
4
+ require_relative 'rubygems'
5
+ require_relative 'ruby-debug'
6
+ =end
7
+
8
+ require_relative 'utils'
9
+
10
+ module InfobipApi
11
+
12
+ class FieldConversionRule
13
+
14
+ attr_accessor :object_field_name
15
+ attr_accessor :json_field_name
16
+
17
+ def initialize(json_field_name=nil)
18
+ @json_field_name = json_field_name
19
+ @object_field_name = nil
20
+ end
21
+
22
+ def from_json(value)
23
+ value
24
+ end
25
+
26
+ def to_json(value)
27
+ value
28
+ end
29
+
30
+ end
31
+
32
+
33
+ class ObjectFieldConverter < FieldConversionRule
34
+
35
+ def initialize(classs, json_field_name=nil)
36
+ super(json_field_name)
37
+ @classs = classs
38
+ end
39
+
40
+ def from_json(value)
41
+ if value == nil
42
+ return nil
43
+ end
44
+
45
+ return Conversions.from_json(@classs, value, nil)
46
+ end
47
+
48
+ def to_json(value)
49
+
50
+ # TODO
51
+ end
52
+
53
+ end
54
+
55
+ class ObjectArrayConversionRule < FieldConversionRule
56
+
57
+ def initialize(classs, json_field_name = nil)
58
+ super(json_field_name)
59
+ @classs = classs
60
+ end
61
+
62
+ def from_json(values)
63
+ if not values
64
+ return []
65
+ end
66
+
67
+ result = []
68
+
69
+ for value in values
70
+ result.push(Conversions.from_json(@classs, value, nil))
71
+ end
72
+
73
+ return result
74
+ end
75
+
76
+ def to_json(value)
77
+ # TODO
78
+ end
79
+
80
+ end
81
+
82
+ class LastPartOfUrlFieldConversionRule < FieldConversionRule
83
+
84
+ def initialize(json_field_name: nil)
85
+ super(json_field_name)
86
+ end
87
+
88
+ def from_json(value)
89
+ if ! value
90
+ return nil
91
+ end
92
+
93
+ parts = value.split('/')
94
+
95
+ parts[-1]
96
+ end
97
+
98
+ def to_json(value)
99
+ value
100
+ end
101
+
102
+ end
103
+
104
+ class PartOfUrlFieldConversionRule < FieldConversionRule
105
+ def initialize(json_field_name=nil, part_index=nil)
106
+ super(json_field_name)
107
+ @part_index = part_index;
108
+ end
109
+
110
+ def from_json(value)
111
+ if ! value
112
+ return nil
113
+ end
114
+
115
+ parts = value.split('/')
116
+
117
+ parts[@part_index]
118
+ end
119
+
120
+ def to_json(value)
121
+ value
122
+ end
123
+
124
+ end
125
+
126
+
127
+ class Conversions
128
+
129
+ def self.from_json(classs, json, is_error = nil)
130
+ object = classs.new
131
+
132
+ Conversions.fill_from_json(object, json, is_error)
133
+ end
134
+
135
+ def self.fill_from_json(object, json, is_error = nil)
136
+ if is_error
137
+ return Conversions.from_json(InfobipApiError, json, false)
138
+ end
139
+
140
+ json = JSONUtils.get_json(json)
141
+ conversion_rules = InfobipApiAccessorModifier.get_field_conversion_rules(object.class)
142
+ for conversion_rule in conversion_rules
143
+ json_value = JSONUtils.get(json, conversion_rule.json_field_name)
144
+ value = conversion_rule.from_json(json_value)
145
+ object.instance_variable_set("@#{conversion_rule.object_field_name}", value)
146
+ end
147
+ object
148
+ end
149
+
150
+ def self.to_json
151
+ # TODO(TK)
152
+ end
153
+
154
+ end
155
+
156
+ module InfobipApiAccessorModifier
157
+
158
+ @@field_conversion_rules = {}
159
+
160
+ def infobipapi_attr_accessor(attr, field_conversion_rule)
161
+ attr_accessor attr
162
+
163
+ field_conversion_rule.object_field_name = attr
164
+
165
+ if Utils.empty(field_conversion_rule.json_field_name)
166
+ field_conversion_rule.json_field_name = attr
167
+ end
168
+
169
+ if not @@field_conversion_rules.has_key? self then
170
+ @@field_conversion_rules[self] = []
171
+ end
172
+
173
+ @@field_conversion_rules[self].push field_conversion_rule
174
+ #puts "field_conversion_rules is now #{@@field_conversion_rules}"
175
+ end
176
+
177
+ def InfobipApiAccessorModifier.get_field_conversion_rules(classs)
178
+ @@field_conversion_rules[classs]
179
+ end
180
+
181
+ end
182
+
183
+ class InfobipApiModel
184
+
185
+ extend InfobipApiAccessorModifier
186
+
187
+ attr_accessor :exception
188
+
189
+ def initialize
190
+ end
191
+
192
+ def is_success
193
+ return @exception == nil
194
+ end
195
+
196
+ end
197
+
198
+ end