Method: CdekClient::Client#call_courier

Defined in:
lib/cdek_client/client.rb

#call_courier(params) ⇒ Object



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