diMLOrb 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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