Skip to content

Instantly share code, notes, and snippets.

@mariusbutuc
Last active August 29, 2015 14:18
Show Gist options
  • Save mariusbutuc/df1e8a0a5c05305c0395 to your computer and use it in GitHub Desktop.
Save mariusbutuc/df1e8a0a5c05305c0395 to your computer and use it in GitHub Desktop.
class CorreiosRequest
# ...
def build_params(package)
@params.merge(package.params)
end
def hash_query_string(params)
{
'nCdEmpresa' => params[:company_id],
'sDsSenha' => params[:password],
'nCdServico' => params[:service_type],
'sCepOrigem' => params[:origin_zip],
'sCepDestino' => params[:destination_zip],
'nVlPeso' => params[:weight],
'nCdFormato' => params[:format],
'nVlComprimento' => params[:length],
'nVlAltura' => params[:height],
'nVlLargura' => params[:width],
'nVlDiametro' => params[:diameter],
'sCdMaoPropria' => params[:mao_propria_extra],
'nVlValorDeclarado' => params[:declared_value_extra],
'sCdAvisoRecebimento' => params[:delivery_notice_extra],
'nIndicaCalculo' => params[:return_information],
'StrRetorno' => params[:return_type]
}
end
def query_string(package)
params = build_params(package)
hash_query_string(params).map { |key, value| "#{CGI.escape(key)}=#{CGI.escape(value.to_s)}" }.join('&')
end
def create_url(package)
"#{URL}?#{query_string(package)}"
end
# ...
end
##------------------------------------------------------------------------------
##------------------------------------------------------------------------------
class CorreiosRequest
# ...
def hash_query_string(package: package)
params = @params.merge(package.params)
{
'nCdEmpresa' => params[:company_id],
'sDsSenha' => params[:password],
'nCdServico' => params[:service_type],
'sCepOrigem' => params[:origin_zip],
'sCepDestino' => params[:destination_zip],
'nVlPeso' => params[:weight],
'nCdFormato' => params[:format],
'nVlComprimento' => params[:length],
'nVlAltura' => params[:height],
'nVlLargura' => params[:width],
'nVlDiametro' => params[:diameter],
'sCdMaoPropria' => params[:mao_propria_extra],
'nVlValorDeclarado' => params[:declared_value_extra],
'sCdAvisoRecebimento' => params[:delivery_notice_extra],
'nIndicaCalculo' => params[:return_information],
'StrRetorno' => params[:return_type]
}
end
def create_url(package)
scheme, userinfo, host, port, registry, path, opaque, query, fragment = URI::split(URL)
query = Rack::Utils.parse_nested_query(query)
.merge(hash_query_string(package: package))
.to_query
URI::HTTP.new(scheme, userinfo, host, port, registry, path, opaque, query, fragment)
end
# ...
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment