diMLOrb 0.1.1 → 0.2.0

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.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm use 1.8.7@diMLOrb
1
+ rvm use 1.9.2@diMLOrb
data/Gemfile CHANGED
@@ -12,4 +12,5 @@ group :development do
12
12
  gem "rcov", ">= 0"
13
13
  end
14
14
 
15
- gem 'nokogiri'
15
+ gem 'nokogiri'
16
+ gem 'httparty'
data/Gemfile.lock CHANGED
@@ -1,8 +1,11 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
+ crack (0.1.8)
4
5
  diff-lcs (1.1.2)
5
6
  git (1.2.5)
7
+ httparty (0.7.8)
8
+ crack (= 0.1.8)
6
9
  jeweler (1.5.2)
7
10
  bundler (~> 1.0.0)
8
11
  git (>= 1.2.5)
@@ -24,6 +27,7 @@ PLATFORMS
24
27
 
25
28
  DEPENDENCIES
26
29
  bundler (~> 1.0.0)
30
+ httparty
27
31
  jeweler (~> 1.5.2)
28
32
  nokogiri
29
33
  rcov
data/README.rdoc CHANGED
@@ -10,8 +10,10 @@ Currently my little website _diMLOya_ supports only 2 stations of all the networ
10
10
 
11
11
  Note that this gems depends on the diMLO website which oftenly tends to be down or not responsive.
12
12
 
13
+ == Installation
14
+ gem install diMLOrb
13
15
 
14
- = Example of Usage
16
+ == Example of Usage
15
17
  require 'diMLOrb'
16
18
  #say I want to go from Pozuelo Oeste station to Colonia Jardín station
17
19
  d = DiMLOrb::DiMLOrb.new(:PozueloOeste, :ColoniaJardin)
data/Rakefile CHANGED
@@ -24,6 +24,7 @@ Jeweler::Tasks.new do |gem|
24
24
  # gem.add_runtime_dependency 'jabber4r', '> 0.1'
25
25
  # gem.add_development_dependency 'rspec', '> 1.2.3'
26
26
  gem.add_runtime_dependency 'nokogiri'
27
+ gem.add_runtime_dependency 'httparty'
27
28
  gem.add_development_dependency 'rspec', '~> 2.3.0'
28
29
  end
29
30
  Jeweler::RubygemsDotOrgTasks.new
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
data/diMLOrb.gemspec CHANGED
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{diMLOrb}
8
- s.version = "0.1.1"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ariera"]
@@ -47,28 +47,34 @@ Gem::Specification.new do |s|
47
47
 
48
48
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
49
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
50
+ s.add_runtime_dependency(%q<httparty>, [">= 0"])
50
51
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
51
52
  s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
52
53
  s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
53
54
  s.add_development_dependency(%q<rcov>, [">= 0"])
54
55
  s.add_runtime_dependency(%q<nokogiri>, [">= 0"])
56
+ s.add_runtime_dependency(%q<httparty>, [">= 0"])
55
57
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
56
58
  else
57
59
  s.add_dependency(%q<nokogiri>, [">= 0"])
60
+ s.add_dependency(%q<httparty>, [">= 0"])
58
61
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
59
62
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
60
63
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
61
64
  s.add_dependency(%q<rcov>, [">= 0"])
62
65
  s.add_dependency(%q<nokogiri>, [">= 0"])
66
+ s.add_dependency(%q<httparty>, [">= 0"])
63
67
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
64
68
  end
65
69
  else
66
70
  s.add_dependency(%q<nokogiri>, [">= 0"])
71
+ s.add_dependency(%q<httparty>, [">= 0"])
67
72
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
68
73
  s.add_dependency(%q<bundler>, ["~> 1.0.0"])
69
74
  s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
70
75
  s.add_dependency(%q<rcov>, [">= 0"])
71
76
  s.add_dependency(%q<nokogiri>, [">= 0"])
77
+ s.add_dependency(%q<httparty>, [">= 0"])
72
78
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
73
79
  end
74
80
  end
data/lib/diMLOrb.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  # encoding: UTF-8
2
- require 'net/http'
3
- require 'uri'
2
+ require 'httparty'
4
3
  require 'nokogiri'
5
- require 'stations'
4
+ require File.join(File.dirname(__FILE__), 'stations')
6
5
 
7
6
  module DiMLOrb
7
+ DIMLO_URI = "http://www.dimlo.es/Informate/calc.aspx"
8
8
  class DiMLOrb
9
- #STATIONS = {:colonia_jardin => "Colonia Jardín|ECJ|ML2", :somosaguas_sur => "Somosaguas Sur|SSU|ML2"}
10
- attr_accessor :uri, :http, :html, :viewstate, :eventvalidation, :proximo, :siguiente, :cookie, :data, :duracion, :from, :to
9
+
10
+ attr_accessor :proximo, :siguiente, :duracion, :from, :to
11
11
 
12
12
  # DiMLOrb.new receives the Metro Ligero Oeste station you are going from and your desired destination
13
13
  # it returns you an object with mainly 3 attributes:
@@ -16,8 +16,6 @@ module DiMLOrb
16
16
  # => duraction = how long should it take to go from one station to the other
17
17
  def initialize(from = :ColoniaJardin, to = :SomosaguasSur)
18
18
  @from, @to = STATIONS[from], STATIONS[to]
19
- @uri = URI.parse("http://www.dimlo.es/Informate/calc.aspx")
20
- @http = Net::HTTP.new(@uri.host, @uri.port)
21
19
  get_validations
22
20
  get_times
23
21
  end
@@ -25,7 +23,7 @@ module DiMLOrb
25
23
  # diMLO website uses cookies and token validations (aka protect from forgery) in its forms
26
24
  # *get_validations* grabs this values, namely: cookie, viewstate and eventvalidation
27
25
  def get_validations
28
- resp = @http.get(@uri.path)
26
+ resp = HTTParty.get(DIMLO_URI)
29
27
  raise "HTTP Error: #{resp.code}" if resp.code.to_i != 200
30
28
 
31
29
  @cookie = resp.response['set-cookie'].split('; ')[0]
@@ -37,12 +35,8 @@ module DiMLOrb
37
35
  # *get_times* asks diMLO website for the next metro timetable and parses the html
38
36
  # to grab the values of _proximo_, _siguiente_ and _duracion_
39
37
  def get_times
40
- #@html = Net::HTTP.post_form(@uri, options)
41
- req = Net::HTTP::Post.new(@uri.request_uri)
42
- req.form_data = options
43
- headers.each{ |k,v| req[k] = v }
44
- @html = @http.start {|http| http.request(req) }
45
- doc = Nokogiri::HTML(@html.body)
38
+ resp = HTTParty.post(DIMLO_URI, {:body => form_options, :headers => headers})
39
+ doc = Nokogiri::HTML(resp.body)
46
40
  @proximo = doc.css('#ProximoTXT').inner_text
47
41
  @siguiente = doc.css('#SiguienteTXT').inner_text
48
42
  @duracion = doc.css('#DuracionTXT').inner_text
@@ -51,7 +45,7 @@ module DiMLOrb
51
45
  protected
52
46
 
53
47
  # options needed in the form to get the timetables
54
- def options
48
+ def form_options
55
49
  {
56
50
  'origenDDL' => @from,
57
51
  'destinoDDL' => @to,
data/lib/stations.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # encoding: UTF-8
1
2
  module DiMLOrb
2
3
 
3
4
  STATIONS = {
metadata CHANGED
@@ -1,139 +1,125 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: diMLOrb
3
- version: !ruby/object:Gem::Version
4
- hash: 25
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
5
  prerelease:
6
- segments:
7
- - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
11
6
  platform: ruby
12
- authors:
7
+ authors:
13
8
  - ariera
14
9
  autorequire:
15
10
  bindir: bin
16
11
  cert_chain: []
17
-
18
- date: 2011-07-17 00:00:00 +02:00
12
+ date: 2011-07-17 00:00:00.000000000 +02:00
19
13
  default_executable:
20
- dependencies:
21
- - !ruby/object:Gem::Dependency
22
- prerelease: false
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: nokogiri
17
+ requirement: &2152966260 !ruby/object:Gem::Requirement
18
+ none: false
19
+ requirements:
20
+ - - ! '>='
21
+ - !ruby/object:Gem::Version
22
+ version: '0'
23
23
  type: :runtime
24
- requirement: &id001 !ruby/object:Gem::Requirement
24
+ prerelease: false
25
+ version_requirements: *2152966260
26
+ - !ruby/object:Gem::Dependency
27
+ name: httparty
28
+ requirement: &2152965780 !ruby/object:Gem::Requirement
25
29
  none: false
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- hash: 3
30
- segments:
31
- - 0
32
- version: "0"
33
- name: nokogiri
34
- version_requirements: *id001
35
- - !ruby/object:Gem::Dependency
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
36
35
  prerelease: false
37
- type: :development
38
- requirement: &id002 !ruby/object:Gem::Requirement
36
+ version_requirements: *2152965780
37
+ - !ruby/object:Gem::Dependency
38
+ name: rspec
39
+ requirement: &2152965300 !ruby/object:Gem::Requirement
39
40
  none: false
40
- requirements:
41
+ requirements:
41
42
  - - ~>
42
- - !ruby/object:Gem::Version
43
- hash: 3
44
- segments:
45
- - 2
46
- - 3
47
- - 0
43
+ - !ruby/object:Gem::Version
48
44
  version: 2.3.0
49
- name: rspec
50
- version_requirements: *id002
51
- - !ruby/object:Gem::Dependency
52
- prerelease: false
53
45
  type: :development
54
- requirement: &id003 !ruby/object:Gem::Requirement
46
+ prerelease: false
47
+ version_requirements: *2152965300
48
+ - !ruby/object:Gem::Dependency
49
+ name: bundler
50
+ requirement: &2152964820 !ruby/object:Gem::Requirement
55
51
  none: false
56
- requirements:
52
+ requirements:
57
53
  - - ~>
58
- - !ruby/object:Gem::Version
59
- hash: 23
60
- segments:
61
- - 1
62
- - 0
63
- - 0
54
+ - !ruby/object:Gem::Version
64
55
  version: 1.0.0
65
- name: bundler
66
- version_requirements: *id003
67
- - !ruby/object:Gem::Dependency
68
- prerelease: false
69
56
  type: :development
70
- requirement: &id004 !ruby/object:Gem::Requirement
57
+ prerelease: false
58
+ version_requirements: *2152964820
59
+ - !ruby/object:Gem::Dependency
60
+ name: jeweler
61
+ requirement: &2152964340 !ruby/object:Gem::Requirement
71
62
  none: false
72
- requirements:
63
+ requirements:
73
64
  - - ~>
74
- - !ruby/object:Gem::Version
75
- hash: 7
76
- segments:
77
- - 1
78
- - 5
79
- - 2
65
+ - !ruby/object:Gem::Version
80
66
  version: 1.5.2
81
- name: jeweler
82
- version_requirements: *id004
83
- - !ruby/object:Gem::Dependency
84
- prerelease: false
85
67
  type: :development
86
- requirement: &id005 !ruby/object:Gem::Requirement
87
- none: false
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- hash: 3
92
- segments:
93
- - 0
94
- version: "0"
68
+ prerelease: false
69
+ version_requirements: *2152964340
70
+ - !ruby/object:Gem::Dependency
95
71
  name: rcov
96
- version_requirements: *id005
97
- - !ruby/object:Gem::Dependency
72
+ requirement: &2152963860 !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ type: :development
98
79
  prerelease: false
80
+ version_requirements: *2152963860
81
+ - !ruby/object:Gem::Dependency
82
+ name: nokogiri
83
+ requirement: &2152963380 !ruby/object:Gem::Requirement
84
+ none: false
85
+ requirements:
86
+ - - ! '>='
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
99
89
  type: :runtime
100
- requirement: &id006 !ruby/object:Gem::Requirement
90
+ prerelease: false
91
+ version_requirements: *2152963380
92
+ - !ruby/object:Gem::Dependency
93
+ name: httparty
94
+ requirement: &2152962900 !ruby/object:Gem::Requirement
101
95
  none: false
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- hash: 3
106
- segments:
107
- - 0
108
- version: "0"
109
- name: nokogiri
110
- version_requirements: *id006
111
- - !ruby/object:Gem::Dependency
96
+ requirements:
97
+ - - ! '>='
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ type: :runtime
112
101
  prerelease: false
113
- type: :development
114
- requirement: &id007 !ruby/object:Gem::Requirement
102
+ version_requirements: *2152962900
103
+ - !ruby/object:Gem::Dependency
104
+ name: rspec
105
+ requirement: &2152962420 !ruby/object:Gem::Requirement
115
106
  none: false
116
- requirements:
107
+ requirements:
117
108
  - - ~>
118
- - !ruby/object:Gem::Version
119
- hash: 3
120
- segments:
121
- - 2
122
- - 3
123
- - 0
109
+ - !ruby/object:Gem::Version
124
110
  version: 2.3.0
125
- name: rspec
126
- version_requirements: *id007
127
- description: This gem acts as an API to the MLO (Metro Ligero Oeste) public transportation of Madrid, allowing the user get ETAs of the next 2 trains
111
+ type: :development
112
+ prerelease: false
113
+ version_requirements: *2152962420
114
+ description: This gem acts as an API to the MLO (Metro Ligero Oeste) public transportation
115
+ of Madrid, allowing the user get ETAs of the next 2 trains
128
116
  email: ariera@gmail.com
129
117
  executables: []
130
-
131
118
  extensions: []
132
-
133
- extra_rdoc_files:
119
+ extra_rdoc_files:
134
120
  - LICENSE.txt
135
121
  - README.rdoc
136
- files:
122
+ files:
137
123
  - .document
138
124
  - .rspec
139
125
  - .rvmrc
@@ -150,38 +136,33 @@ files:
150
136
  - spec/spec_helper.rb
151
137
  has_rdoc: true
152
138
  homepage: http://github.com/ariera/diMLOrb
153
- licenses:
139
+ licenses:
154
140
  - MIT
155
141
  post_install_message:
156
142
  rdoc_options: []
157
-
158
- require_paths:
143
+ require_paths:
159
144
  - lib
160
- required_ruby_version: !ruby/object:Gem::Requirement
145
+ required_ruby_version: !ruby/object:Gem::Requirement
161
146
  none: false
162
- requirements:
163
- - - ">="
164
- - !ruby/object:Gem::Version
165
- hash: 3
166
- segments:
147
+ requirements:
148
+ - - ! '>='
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ segments:
167
152
  - 0
168
- version: "0"
169
- required_rubygems_version: !ruby/object:Gem::Requirement
153
+ hash: 591139527503701248
154
+ required_rubygems_version: !ruby/object:Gem::Requirement
170
155
  none: false
171
- requirements:
172
- - - ">="
173
- - !ruby/object:Gem::Version
174
- hash: 3
175
- segments:
176
- - 0
177
- version: "0"
156
+ requirements:
157
+ - - ! '>='
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
178
160
  requirements: []
179
-
180
161
  rubyforge_project:
181
162
  rubygems_version: 1.6.2
182
163
  signing_key:
183
164
  specification_version: 3
184
165
  summary: Ruby API for the diMLO web timetable service
185
- test_files:
166
+ test_files:
186
167
  - spec/diMLOrb_spec.rb
187
168
  - spec/spec_helper.rb