Sha256: 2b03173edf4ae12b65a0f69d2a3b07ff55f5b85437de82bc78d30a5d5753a568

Contents?: true

Size: 1.19 KB

Versions: 7

Compression:

Stored size: 1.19 KB

Contents

require 'open-uri'
require 'faraday'
require 'nokogiri'

module TakuhaiStatus
	class UPS
		attr_reader :key, :time, :state
		@@conn = nil

		def initialize(key)
			@key = key.gsub(/[^a-zA-Z0-9]/, '')
			@time, @state = check
		end

		def finish?
			return !!(@state =~ /配達済み/)
		end

	private
		def check
			@@conn = Faraday.new(url: 'https://wwwapps.ups.com/'){|builder|
				builder.use :cookie_jar
				builder.request :url_encoded
				builder.adapter :net_http
			} unless @@conn
			@@conn.get('/WebTracking/track?loc=ja_JP') # once access to set cookie
			res = @@conn.post('/WebTracking/track?loc=ja_JP', {
				HTMLVersion: '5.0',
				loc: 'ja',
				trackNums: @key,
				'track.x' => 'Track'
			})
			doc = Nokogiri::HTML.parse(res.body)

			begin
				state = doc.css('.newstatus h3')[0].text.strip
				begin
					time = "#{doc.css('#fontControlButtons li li').text.match(/\d{4}\/\d\d\/\d\d \d{1,2}:\d\d/)[0]}+0500)"
				rescue NoMethodError
					time = "#{doc.css('#fontControlButtons li').text.match(/\d{4}\/\d\d\/\d\d/)[0]} 00:00:00+0500)"
				end
				return Time.parse(time).localtime, state
			rescue NoMethodError
				raise NotMyKey
			rescue ArgumentError
				return Time.now, ''
			end
		end
	end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
takuhai_status-1.7.4 lib/takuhai_status/ups.rb
takuhai_status-1.7.3 lib/takuhai_status/ups.rb
takuhai_status-1.7.2 lib/takuhai_status/ups.rb
takuhai_status-1.7.1 lib/takuhai_status/ups.rb
takuhai_status-1.7.0 lib/takuhai_status/ups.rb
takuhai_status-1.6.0 lib/takuhai_status/ups.rb
takuhai_status-1.5.5 lib/takuhai_status/ups.rb