correos_chile 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 0ea7e783d634794f48554e006273d0c06b1ff2d2
4
+ data.tar.gz: 71f300beeaf538c8d2069c38b2d0dceb2ebfbaf0
5
+ SHA512:
6
+ metadata.gz: 476e882b425bc4de599fba08baffa54a591e8164debc7349d2100f814b19cb0c153285d9f59bee3bc1a418b94e5d6dd4cbcbf9fe918a7bdc9b6da5e80d151c3d
7
+ data.tar.gz: 35eb97dee69ec11840836032a7eabd6223d21d12c1e3055c9777a2fac1079cdd624a4f7f1ba620bb31cac0694e32e54b16a7f6fcb8499e1fbdfefffccd774f64
@@ -0,0 +1,9 @@
1
+ # This is a constructor class for orders
2
+ class Order
3
+ attr_reader :status, :datetime
4
+
5
+ def initialize(attributes)
6
+ @status = attributes[:status]
7
+ @datetime = attributes[:datetime]
8
+ end
9
+ end
@@ -0,0 +1,44 @@
1
+ # This class will retreive some information according to param
2
+ module CorreosChile
3
+ require 'correos_chile/order'
4
+ require 'httparty'
5
+ require 'nokogiri'
6
+
7
+ def self.extract_useless_spaces(str)
8
+ composed_word = ''
9
+ partial_word = str.gsub(/[[:space:]]/, '')
10
+ length = partial_word.length
11
+ str.split(partial_word[length]).each_with_index do |word, i|
12
+ next if word.nil? || word.strip.gsub(/[[:space:]]/, '').empty?
13
+ composed_word += i + 1 == length ? word : "#{word} "
14
+ end
15
+ composed_word
16
+ end
17
+
18
+ def self.search_order(tracking_number)
19
+ form_url = 'http://seguimientoweb.correos.cl/ConEnvCorreos.aspx'
20
+ form_data = {
21
+ obj_key: 'Cor398-cc',
22
+ obj_env: tracking_number
23
+ }
24
+ response = HTTParty.post(form_url, body: form_data, options: { headers: { 'Content-Type' => 'application/x-www-form-urlencoded' } } )
25
+ doc = Nokogiri::HTML.parse(response)
26
+ return "The order doesn't exist" unless doc.css('.titulo').text.include?('Numero de envio')
27
+ attributes = shipping_info(doc)
28
+ Order.new(attributes)
29
+ end
30
+
31
+ def self.shipping_info(html_doc)
32
+ table = html_doc.css('.tracking')[0]
33
+ tr = table.css('tr')[1]
34
+ return "Website's structure has change" unless tr
35
+ tr_status = tr.css('td')[0].text.to_s.strip.gsub(/\A\p{Space}*/, '')
36
+ tr_datetime = tr.css('td')[1].text.to_s.strip.gsub(/\A\p{Space}*/, '')
37
+ {
38
+ status: extract_useless_spaces(tr_status).strip,
39
+ datetime: extract_useless_spaces(tr_datetime).strip
40
+ }
41
+ rescue
42
+ "Website's structure has change"
43
+ end
44
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: correos_chile
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Zetahawke
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.6'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.6'
27
+ - !ruby/object:Gem::Dependency
28
+ name: httparty
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.9'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.9'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '10.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '10.0'
69
+ description: This gem will give some tracking information
70
+ email: michel.szinavel@gmail.com
71
+ executables: []
72
+ extensions: []
73
+ extra_rdoc_files: []
74
+ files:
75
+ - lib/correos_chile.rb
76
+ - lib/correos_chile/order.rb
77
+ homepage: http://rubygems.org/gems/correos_chile
78
+ licenses:
79
+ - MIT
80
+ metadata: {}
81
+ post_install_message:
82
+ rdoc_options: []
83
+ require_paths:
84
+ - lib
85
+ required_ruby_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '2.2'
90
+ required_rubygems_version: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ requirements: []
96
+ rubyforge_project:
97
+ rubygems_version: 2.6.10
98
+ signing_key:
99
+ specification_version: 4
100
+ summary: retreive tracking info
101
+ test_files: []