Sha256: 606f8dc6eac7f65d4cff9764b84f1c63bcfa365d10f42d4bf0fcf3ece6beab55

Contents?: true

Size: 1014 Bytes

Versions: 1

Compression:

Stored size: 1014 Bytes

Contents

require 'json'
require 'typhoeus'

module Ocar

  extend self

  TYPES = ["cartas", "paquetes", "dni", "partidas" ]
  $hydra = Typhoeus::Hydra.new

  def get_package track_id
    requests = setup_request track_id
    run_request
    get_response requests
  end

  private
  def setup_request track_id
    requests = TYPES.map { |type|
      request = Typhoeus::Request.new("http://www.oca.com.ar",
        method: :get,
        params: { q: "package-locator",
        type: type,
        number: track_id },
        headers: { Accept: "text/html" }
      )
      $hydra.queue(request)
      request
    }
  end

  def run_request
    $hydra.run
  end

  def get_response requests
    results = []
    responses = requests.map do |request|
      parsed = JSON.parse request.response.body
      results << parsed if parsed['success'] == true
    end
    return check_response results
  end


  def check_response results
    if results.any?
      Ocar::Status.new(results.first)
    else
      nil
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ocar-0.2.0 lib/ocar/client.rb