141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
|
# File 'lib/cdek_client/client.rb', line 141
def call_courier(params)
params = normalize_request_data params
params[:CallCount] = params[:Call].is_a?(Array) ? params[:Call].length : 1
params = { CallCourier: params }
result = authorized_request url_for(:primary, :call_courier), url_for(:secondary, :call_courier), params
if result.errors.any?
result.set_data []
return result
end
normalized_data = []
if result.data[:response].has_key? :CallCourier
Util.array_wrap(result.data[:response][:CallCourier]).each do |error_data|
next unless error_data.has_key?(:ErrorCode)
error = CdekClient.get_api_error error_data[:ErrorCode], error_data[:Msg]
result.add_error error
end
end
if result.data[:response].has_key? :Call
Util.array_wrap(result.data[:response][:Call]).each do |call_data|
if call_data.has_key? :ErrorCode
error = CdekClient.get_api_error call_data[:ErrorCode], call_data[:Msg]
result.add_error error
elsif call_data.has_key? :Number
normalized_call_data = normalize_response_data call_data, response_normalization_rules_for(:call_courier)
normalized_data.push normalized_call_data
end
end
end
result.set_data normalized_data
result
end
|