class EnviopackApi::Client

Public Class Methods

new(access_token = nil) click to toggle source
# File lib/enviopack_api/client.rb, line 3
def initialize(access_token = nil)
  @access_token = access_token || ENV["ENVIPACK_API_TOKEN"]
  @base_uri = "https://api.enviopack.com"
end

Public Instance Methods

delete(params) click to toggle source

DELETE resource www.enviopack.com/documentacion/ req: params (comma separated list of IDs) Client.delete(params)

# File lib/enviopack_api/client.rb, line 116
def delete(params)
  url = "/pedidos/descartar-envios"
  to_query = "ids=#{params}"

  delete_request(url, to_query)
end
get(resource, options = nil) click to toggle source

GET any available resource with or withoud ID ex.: get(“localidades/ID”)

# File lib/enviopack_api/client.rb, line 10
def get(resource, options = nil)
  params = options
  url = "/#{resource}"
  get_response(url, params)
end
get_quote(options = {}) click to toggle source

Obtener el costo que abona el VENDEDOR por el envío www.enviopack.com/documentacion/cotiza-un-envio Client.get_quote(provincia: “C”, codigo_postal: 1407, peso: 0.5, etc: etc)

# File lib/enviopack_api/client.rb, line 55
def get_quote(options = {})
  ################### Optionals
  # will be removed from code
  # Ej: 20x2x10,20x2x10 indica que se envian 2 paquetes y cada uno tiene 20 cm de alto x 2 cm de ancho x 10 cm de largo.
  paquetes = options[:paquetes]
  correo = options[:correo]  # ID, e.: "oca"

  # For, :despacho & :modalidad
  # - D: retiro por domicilio
  # - S: despacho desde sucursa
  despacho = options[:despacho] || "D"
  modalidad = options[:modalidad] || "D"

  # - N: para el servicio estándar
  # - P: para el servicio prioritario
  # - X: para el servicio express
  # - R: para el servicio de devoluciones
  servicio = options[:servicio] || "N"

  # Shipping dispatch address
  # Client.get('mis-direcciones')
  direccion_envio = options[:direccion_envio]

  # - valor: para ordenar por precio (Default)
  # - horas_entrega: para ordenar por velocidad de envío
  # - cumplimiento: para ordenar por porcentaje de cumplimiento en envios de similares caracteristicas
  # - anomalos: para ordenar por porcentaje de anómalos en envios de similares caracteristicas
  orden_columna = options[:orden_columna]

  # - asc: para orden ascendente (Default)
  # - desc: para orden descendente
  orden_sentido = options[:orden_sentido]

  ################### Required params
  provincia     = options[:provincia] || "C"
  codigo_postal = options[:codigo_postal] || ""
  peso          = options[:peso] || 1.0

  url = "/cotizar/costo"
  query = options.to_query
  get_response(url, query)
end
get_resource(resource, options = nil) click to toggle source

GET /resource_name

# File lib/enviopack_api/client.rb, line 17
def get_resource(resource, options = nil)
  # Prevent resource to be miss spelled
  case resource
  when "correos", "couriers"
    resource_name = "correos"
  when "sucursales"
    resource_name = "sucursales"
  when "provincias", "states"
    resource_name = "provincias"
  when "localidades", "barrios"
    resource_name = "localidades"
  when "paquetes", "packaging", "boxes", "embalaje"
    resource_name = "tipos-de-paquetes"
  when "mis-direcciones", "mi-dreccion", "addresses", "remitiente"
    resource_name = "mis-direcciones"
  when "direcciones-de-envio", "direcciones", "destination"
    resource_name = "direcciones-de-envio"
  else
    resource_name = resource
  end

  # build request
  url = "/#{resource}"
  get_response(url, nil)
end
post(resource, params) click to toggle source

POST resource www.enviopack.com/documentacion/realiza-un-envio req: resource, params Client.post(“pedidos”, params)

# File lib/enviopack_api/client.rb, line 102
def post(resource, params)
  case resource
  when "pedidos", "place_order", "new_order" then url = "/pedidos"
  when "envios", "shipping" then url = "/envios"
  else url = "/#{resource}"
  end

  post_request(url, params)
end
print_batch(ids) click to toggle source

Print batch tickets Pass Array of ids: ids = [1,2…9]

print_single(id, output = "pdf") click to toggle source

Print shipping ticket ID = ticket ID Output: PDF or JPG

validate_zipcode(province_id, zipcode) click to toggle source

GET /provincia/ID/validar-codigo-postal returns param 'valido' true or false

# File lib/enviopack_api/client.rb, line 45
def validate_zipcode(province_id, zipcode)
  zipcode = zipcode.to_i
  url = "/provincia/#{province_id}/validar-codigo-postal"
  query = "codigo_postal=#{zipcode}"
  get_response(url, query)
end

Private Instance Methods

delete_request(url, params) click to toggle source

DELETE

# File lib/enviopack_api/client.rb, line 180
def delete_request(url, params)
  begin
    resource_url = "#{@base_uri}#{url}?access_token=#{@access_token}&#{params}"
    response = RestClient.delete resource_url, {content_type: :json, accept: :json}

    #result = JSON.parse(response, object_class: OpenStruct)
    return response
  rescue => e
    return JSON.parse(e.response, object_class: OpenStruct)
  end
end
get_response(url, query = nil) click to toggle source

GET

# File lib/enviopack_api/client.rb, line 154
def get_response(url, query = nil)
  query = "&#{query}" if query != nil || query != ""
  resource_url = "#{@base_uri}#{url}?access_token=#{@access_token}#{query}"

  begin
    response = RestClient.get(resource_url)
    result = JSON.parse(response, object_class: OpenStruct)
    return result
  rescue => e
    return JSON.parse(e.response, object_class: OpenStruct)
  end
end
post_request(url, params) click to toggle source

POST

# File lib/enviopack_api/client.rb, line 168
def post_request(url, params)
  begin
    resource_url = "#{@base_uri}#{url}?access_token=#{@access_token}"
    response = RestClient.post resource_url, params.to_json, {content_type: :json, accept: :json}
    result = JSON.parse(response, object_class: OpenStruct)
    return result
  rescue => e
    return JSON.parse(e.response, object_class: OpenStruct)
  end
end