infobipapi 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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