Class: EnviopackApi::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/enviopack_api/client.rb

Instance Method Summary collapse

Constructor Details

#initialize(access_token = nil) ⇒ Client

Returns a new instance of Client.



3
4
5
6
# 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

Instance Method Details

#delete(params) ⇒ Object

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



116
117
118
119
120
121
# 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) ⇒ Object

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



10
11
12
13
14
# 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 = {}) ⇒ Object

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)



55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# 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) ⇒ Object

GET /resource_name



17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 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) ⇒ Object

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



102
103
104
105
106
107
108
109
110
# 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 tickets Pass Array of ids: ids = [1,2…9]



139
140
141
142
143
144
145
146
147
148
149
# File 'lib/enviopack_api/client.rb', line 139

def print_batch(ids)
  timenow      = Time.current.strftime("%Y%m%d_-_%H%M")
  ids_string   = ids.to_csv.delete("\n")
  resource_url = "#{@base_uri}/envios/etiquetas?access_token=#{@access_token}&ids=#{ids_string}"
  begin
    response = RestClient.get resource_url
    send_data(response, :filename => "etiquetas_-_#{timenow}.pdf", :disposition => "attachment", :type => "application/pdf")
  rescue e
    return JSON.parse(e.response, object_class: OpenStruct)
  end
end

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



126
127
128
129
130
131
132
133
134
135
# File 'lib/enviopack_api/client.rb', line 126

def print_single(id, output = "pdf")
  timenow      = Time.current.strftime("%Y%m%d_-_%H%M")
  resource_url = "#{@base_uri}/envios/#{id}/etiqueta?access_token=#{@access_token}&formato=#{output}"
  begin
    response = RestClient.get resource_url
    send_data(response, :filename => "etiqueta_-_#{timenow}.pdf", :disposition => "attachment", :type => "application/pdf")
  rescue e
    return JSON.parse(e.response, object_class: OpenStruct)
  end
end

#validate_zipcode(province_id, zipcode) ⇒ Object

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



45
46
47
48
49
50
# 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