chilexpress_rails 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d228e1b00d7bf82a2312888d7c9be86e9f19287a
4
+ data.tar.gz: 6538a926777bb0db8d1e1683b2777d3feb32a98a
5
+ SHA512:
6
+ metadata.gz: 2ead6852eb5e7a98fb2507622578aa860adca3e1aeab9268c7e23a73cbf270832c946605f4888cce78071aec1fa4f8770ada325d2b47108546f0eba10a75ace7
7
+ data.tar.gz: ec8e84703f5d6b6b9a0689e8f2beeefbb3ef6148a7370bb18cca01e3dedde19e8f8c3af309787962320ebe9121b478b4baefbd9c884edadb40f1096c72b9439b
@@ -0,0 +1,15 @@
1
+ # This is a constructor class for orders
2
+ class Order
3
+ attr_reader :track_number, :product, :service, :status, :receiver,
4
+ :receiver_name, :datetime
5
+
6
+ def initialize(attributes)
7
+ @track_number = attributes[:track_number]
8
+ @product = attributes[:product]
9
+ @service = attributes[:service]
10
+ @status = attributes[:status]
11
+ @receiver = attributes[:receiver]
12
+ @receiver_name = attributes[:receiver_name]
13
+ @datetime = attributes[:datetime]
14
+ end
15
+ end
@@ -0,0 +1,45 @@
1
+ # This class will retreive some information according to param
2
+ module ChilexpressRails
3
+ require 'chilexpress_rails/order'
4
+ require 'nokogiri'
5
+ require 'open-uri'
6
+
7
+ def self.search_order(tracking_number)
8
+ puts 'hi...'
9
+ url = "http://www.chilexpress.cl/Views/ChilexpressCL/Resultado-busqueda.aspx?DATA=#{tracking_number}"
10
+ doc = Nokogiri::HTML(open(url))
11
+ return 'No se obtuvo respuesta' if doc.at_css('section-title')[0].text.include?('No hemos encontrado')
12
+ attributes = shipping_info(doc).merge!(receiver_info(doc))
13
+ Order.new(attributes)
14
+ end
15
+
16
+ def self.shipping_info(html_doc)
17
+ puts html_doc.at_css('title').text
18
+ widget_content = html_doc.css('.wigdet-content')
19
+ li = widget_content[0].css('li')
20
+ return 'El sitio web parece haber modificado su estructura' unless li
21
+ {
22
+ track_number: li[1].text.to_s.split(':')[1].strip.gsub(/\A\p{Space}*/, ''),
23
+ product: li[2].text.to_s.split(':')[1].strip.gsub(/\A\p{Space}*/, ''),
24
+ service: li[3].text.to_s.split(':')[1].strip.gsub(/\A\p{Space}*/, ''),
25
+ status: li[4].text.to_s.split(':')[1].strip.gsub(/\A\p{Space}*/, '')
26
+ }
27
+ rescue
28
+ 'El sitio web parece haber modificado su estructura'
29
+ end
30
+
31
+ def self.receiver_info(html_doc)
32
+ widget_content = html_doc.css('.wigdet-content')
33
+ li = widget_content[1].css('li')
34
+ return 'El sitio web parece haber modificado su estructura' unless li
35
+ date = li[2].text.to_s.split(':')[1].strip.gsub(/\A\p{Space}*/, '')
36
+ hour = " #{li[3].text.to_s.split(':')[1].strip.gsub(/\A\p{Space}*/, '')}:#{li[3].text.to_s.split(':')[2].strip.gsub(/\A\p{Space}*/, '')}"
37
+ {
38
+ receiver: li[1].text.to_s.split(':')[1].strip.gsub(/\A\p{Space}*/, ''),
39
+ datetime: date + hour,
40
+ receiver_name: li[4].text.to_s.split(':')[1].split(' ').first(2).join(' ').gsub(/\A\p{Space}*/, '')
41
+ }
42
+ rescue
43
+ 'El sitio web parece haber modificado su estructura'
44
+ end
45
+ end
metadata ADDED
@@ -0,0 +1,87 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: chilexpress_rails
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-02-21 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: bundler
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.9'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.9'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.0'
55
+ description: This gem will give some tracking information
56
+ email: michel.szinavel@gmail.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - lib/chilexpress_rails.rb
62
+ - lib/chilexpress_rails/order.rb
63
+ homepage: http://rubygems.org/gems/chilexpress_rails
64
+ licenses:
65
+ - MIT
66
+ metadata: {}
67
+ post_install_message:
68
+ rdoc_options: []
69
+ require_paths:
70
+ - lib
71
+ required_ruby_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ requirements: []
82
+ rubyforge_project:
83
+ rubygems_version: 2.6.10
84
+ signing_key:
85
+ specification_version: 4
86
+ summary: retreive tracking info
87
+ test_files: []