emt_api 0.0.0.3 → 0.0.0.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d3b77f18b216d98f73993b02edf6f45f84d001f
4
- data.tar.gz: c5061c3114296e4d10e4be3e6e34b921733ad455
3
+ metadata.gz: 2b88a0c69df58eb8e5ff9341922dd3e1f8c14ec7
4
+ data.tar.gz: f11991b1767a9987246224a3eda5dd94c9103b48
5
5
  SHA512:
6
- metadata.gz: 1e2273bad226346c5dacab29d2e74cab75d136b0d0ddfabe872301ea1661ea11eac6369fc93231404a2a6aa7658f892863c64507a39406ed62f7500e83aaed69
7
- data.tar.gz: 7b47fe118f183e75654223bc07c266c7cd2c63c2e9126580e35f726a450de62f86a10d916882c402d430f639454782198a3db175a0ba9dd167ecb4972620ba40
6
+ metadata.gz: e459255a76deaee063239de730c8896bdf731467964435aca5e1d89835fcdd67133097df178d9c70af8d145d06da447e0e829caf21daa3b98e78459236194de3
7
+ data.tar.gz: 01292adaf66ac1a4ba31dde2f077e9b6591ea63a8b613c478b3f2854f5a2e6a38aee7c0e9717645636c027e3f1cca5fd22027445ce4b8b5a0e119fb83f8f0db0
data/README.md CHANGED
@@ -1,9 +1,10 @@
1
1
  # EmtApi
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/emt_api.svg)](https://badge.fury.io/rb/emt_api)
3
4
  [![Build Status](https://travis-ci.org/amiedes/emt_api.svg?branch=master)](https://travis-ci.org/amiedes/emt_api)
4
5
  [![Coverage Status](https://coveralls.io/repos/github/amiedes/emt_api/badge.svg)](https://coveralls.io/github/amiedes/emt_api)
5
6
 
6
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/emt_api`. To experiment with that code, run `bin/console` for an interactive prompt.
7
+ `EmtApi` is a Ruby wrapper around the Madrid [EMT](http://www.emtmadrid.es/Home) API which provides an easier and more ruby-like access to the information related to Madrid city urban buses.
7
8
 
8
9
  ## Installation
9
10
 
@@ -16,7 +17,7 @@ gem 'emt_api'
16
17
  And then execute:
17
18
 
18
19
  ```
19
- $ bundle
20
+ $ bundle install
20
21
  ```
21
22
 
22
23
  Or install it yourself as:
@@ -25,9 +26,61 @@ Or install it yourself as:
25
26
  $ gem install emt_api
26
27
  ```
27
28
 
29
+ The EMT API requires you to have a `idClient` and `passKey` (called `EMT_CLIENT` and `EMT_SECRET` respectively from now on) to authenticate your requests. You can get these freely by filling [this form](http://opendata.emtmadrid.es/Formulario).
30
+
31
+ `emt_api` expects them to be accessible as environment variables. To do this on Mac OS X you'll have to edit your `.bash_profile` and add the following lines:
32
+
33
+ ```bash
34
+ # ~/.bash_profile
35
+ export EMT_CLIENT="your idClient"
36
+ export EMT_SECRET="your passKey"
37
+ ```
38
+
28
39
  ## Usage
29
40
 
30
- TODO: Write usage instructions here
41
+ ### Get basic info about bus lines
42
+
43
+ ```ruby
44
+ require 'emt_api'
45
+
46
+ line = EmtApi::Line.find(1)
47
+
48
+ line.id # => "001"
49
+ line.label # => "1"
50
+ line.date_first # => #<Date: 2017-01-09 ((2457763j,0s,0n),+0s,2299161j)>
51
+ line.date_end # => #<Date: 2999-12-31 ((2816787j,0s,0n),+0s,2299161j)>
52
+ line.origin # => "Cristo Rey"
53
+ line.destination # => "Prosperidad"
54
+
55
+ all_lines = EmtApi::Line.all
56
+
57
+ all_lines.size # => 208
58
+
59
+ all_lines.first.id # => "001"
60
+ # etc.
61
+ ```
62
+
63
+ ### Get basic info about bus stops
64
+
65
+ ```ruby
66
+ require 'emt_api'
67
+
68
+ stop = EmtApi::Stop.find(1)
69
+
70
+ stop.id # => 1
71
+ stop.name # => "Av. Valdemarin - Altair"
72
+ stop.lines # => ["", "161/1/1"]
73
+ stop.wifi? # => false
74
+ stop.latitude # => 40.47004454502
75
+ stop.longitude # => -3.782887713069
76
+
77
+ all_stops = EmtApi::Stop.all
78
+
79
+ all_stops.size # => 4677
80
+
81
+ all_stops.first.id # => 1
82
+ # etc.
83
+ ```
31
84
 
32
85
  ## Development
33
86
 
@@ -37,8 +90,10 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
37
90
 
38
91
  ## Contributing
39
92
 
40
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/emt_api.
93
+ Bug reports and pull requests are welcome on GitHub at [https://github.com/amiedes/emt_api](https://github.com/amiedes/emt_api).
41
94
 
42
95
  ## License
43
96
 
97
+ *Powered by EMT Madrid* - [Terms & Conditions](http://opendata.emtmadrid.es/Documentos/terminosycondiciones.aspx?lang=es-ES)
98
+
44
99
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
@@ -1,6 +1,7 @@
1
1
  require 'emt_api/version'
2
2
  require 'emt_api/api'
3
3
  require 'emt_api/line'
4
+ require 'emt_api/stop'
4
5
 
5
6
  module EmtApi
6
7
  # Your code goes here...
@@ -1,9 +1,10 @@
1
1
  require 'http'
2
- require_relative 'response'
2
+ require 'emt_api/response'
3
3
 
4
4
  module EmtApi
5
5
  class Api
6
6
  GET_LIST_LINES_URL = 'https://openbus.emtmadrid.es:9443/emt-proxy-server/last/bus/GetListLines.php'
7
+ GET_NODE_LINES_URL = 'https://openbus.emtmadrid.es:9443/emt-proxy-server/last/bus/GetNodesLines.php'
7
8
  EMT_CLIENT = ENV['EMT_CLIENT']
8
9
  EMT_SECRET = ENV['EMT_SECRET']
9
10
 
@@ -21,5 +22,20 @@ module EmtApi
21
22
  emt_response.valid_data? ? emt_response.data : nil
22
23
  end
23
24
 
25
+ # Recupera todos los identificadores de parada, junto con su coordenada UTM,
26
+ # nombre y la relación de líneas/sentido que pasan por cada uno de ellos.
27
+ def self.get_nodes_lines(stop_id = nil)
28
+
29
+ http_response = HTTP.post(GET_NODE_LINES_URL, form: {
30
+ idClient: EMT_CLIENT,
31
+ passKey: EMT_SECRET,
32
+ Nodes: stop_id
33
+ })
34
+
35
+ emt_response = EmtApi::Response.new(http_response)
36
+
37
+ emt_response.valid_data? ? emt_response.data : nil
38
+ end
39
+
24
40
  end
25
41
  end
@@ -1,5 +1,5 @@
1
- require_relative 'parser'
2
- require_relative 'api'
1
+ require 'emt_api/parser'
2
+ require 'emt_api/api'
3
3
 
4
4
  module EmtApi
5
5
  class Line
@@ -8,6 +8,7 @@ module EmtApi
8
8
 
9
9
  def self.parse_sentence(sentence)
10
10
  sentence = remove_trailing_whitespaces(sentence)
11
+ sentence = add_spaces_between_separators(sentence)
11
12
  capitalize_sentence(sentence)
12
13
  end
13
14
 
@@ -15,6 +16,21 @@ module EmtApi
15
16
  sentence.rstrip
16
17
  end
17
18
 
19
+ def self.add_spaces_between_separators(sentence)
20
+ spaced_sentence = sentence
21
+
22
+ # Add space before the '-' character
23
+ spaced_sentence.gsub!(/(?!\s)\-/, ' -')
24
+
25
+ # Add space after the '-' character
26
+ spaced_sentence.gsub!(/\-(?!\s)/, '- ')
27
+
28
+ # Add space after the '.' used for abbreviations
29
+ spaced_sentence.gsub!(/\.(?!\s)/, '. ')
30
+
31
+ spaced_sentence
32
+ end
33
+
18
34
  def self.capitalize_sentence(sentence)
19
35
  sentence.split.map { |word| word.capitalize }.join(' ')
20
36
  end
@@ -0,0 +1,37 @@
1
+ require 'byebug'
2
+
3
+ module EmtApi
4
+ class Stop
5
+ attr_accessor :id, :name, :lines, :latitude, :longitude
6
+
7
+ def initialize(stop_data = {})
8
+ @id = stop_data['node']
9
+ @name = EmtApi::Parser.parse_sentence stop_data['name']
10
+ @lines = stop_data['lines']
11
+ @wifi = (stop_data['Wifi'].to_i == 1)
12
+ @latitude = stop_data['latitude']
13
+ @longitude = stop_data['longitude']
14
+ end
15
+
16
+ def self.all
17
+ response_data = EmtApi::Api.get_nodes_lines
18
+ stops = []
19
+
20
+ unless response_data.nil?
21
+ response_data.each { |stop| stops << EmtApi::Stop.new(stop) }
22
+ end
23
+
24
+ stops
25
+ end
26
+
27
+ def self.find(id)
28
+ response_data = EmtApi::Api.get_nodes_lines(id)
29
+ response_data.nil? ? nil : EmtApi::Stop.new(response_data)
30
+ end
31
+
32
+ def wifi?
33
+ @wifi
34
+ end
35
+
36
+ end
37
+ end
@@ -1,3 +1,3 @@
1
1
  module EmtApi
2
- VERSION = "0.0.0.3"
2
+ VERSION = "0.0.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emt_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0.3
4
+ version: 0.0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alberto Miedes Garcés
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-23 00:00:00.000000000 Z
11
+ date: 2017-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http
@@ -130,6 +130,7 @@ files:
130
130
  - lib/emt_api/line.rb
131
131
  - lib/emt_api/parser.rb
132
132
  - lib/emt_api/response.rb
133
+ - lib/emt_api/stop.rb
133
134
  - lib/emt_api/version.rb
134
135
  homepage: https://github.com/amiedes/emt_api
135
136
  licenses: