strans-client 1.4.4 → 1.6.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 +4 -4
- data/lib/erro.rb +18 -0
- data/lib/lazy-strans-client.rb +9 -10
- data/lib/{linha_strans.rb → linha.rb} +7 -8
- data/lib/{parada_strans.rb → parada.rb} +3 -3
- data/lib/request.rb +47 -0
- data/lib/response.rb +57 -0
- data/lib/strans-client.rb +24 -21
- data/lib/{token_strans.rb → token.rb} +2 -2
- data/lib/{veiculo_strans.rb → veiculo.rb} +1 -3
- metadata +10 -10
- data/lib/erro_strans.rb +0 -17
- data/lib/request_strans.rb +0 -38
- data/lib/response_strans.rb +0 -65
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9dc18e4662e5ba59fb22d29b605077b2d862f3a4
|
|
4
|
+
data.tar.gz: 7ebbdc3e507c8790ee7b20718e36b6812520787d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 71ee7320d3ebcf4e3253b36533eedfce056a017f9e4b2e7ac3610c1c17bb03cd7b623c5cb6b3e2ead5e8616b35712aa9bfe11987104d9b9530cc9ea422762c10
|
|
7
|
+
data.tar.gz: b9675a7ebf5aed517a310e3383df95728ad5b6c84591c3221084816b4012ee4cc562332b5612f59f8b7e80a9a90ee17bf9ec0766be374f3d06af2486a22ab2e6
|
data/lib/erro.rb
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
|
|
2
|
+
# Encapsula um erro de requisicao
|
|
3
|
+
class Erro
|
|
4
|
+
def initialize(fields)
|
|
5
|
+
@code = fields[:code] || fields['code']
|
|
6
|
+
@message = fields[:message] || fields['message']
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def to_json
|
|
10
|
+
map.to_json
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def map
|
|
14
|
+
error = {}
|
|
15
|
+
error[:code] = @error if @error
|
|
16
|
+
error[:message] = @message if @message
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/lazy-strans-client.rb
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
|
-
|
|
2
|
-
require 'erro_strans'
|
|
3
|
-
require 'strans-client'
|
|
4
|
-
|
|
1
|
+
require_relative 'strans-client'
|
|
5
2
|
|
|
3
|
+
# cliente com alguns servicos facilitadores
|
|
6
4
|
class LazyStransClient < StransClient
|
|
7
5
|
|
|
8
6
|
RAIO_TERRA = 6378.137 #KM
|
|
@@ -11,18 +9,19 @@ class LazyStransClient < StransClient
|
|
|
11
9
|
# Estaticas da api.
|
|
12
10
|
def load
|
|
13
11
|
@linhas = get(:linhas)
|
|
12
|
+
return @linhas if @linhas.is_a? Erro
|
|
14
13
|
@paradas_linha = {} # paradas de uma linha
|
|
15
14
|
@linhas_parada = {} # linhas de uma parada
|
|
16
15
|
@linhas.each do |l|
|
|
17
16
|
paradas = get(:paradas_linha, l.codigoLinha)
|
|
18
|
-
if
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
end
|
|
17
|
+
next if paradas.is_a? Erro
|
|
18
|
+
@paradas_linha[l.codigoLinha] = paradas
|
|
19
|
+
paradas.each do |p|
|
|
20
|
+
@linhas_parada[p.codigoParada] = [] unless @linhas_parada.key?(p.codigoParada)
|
|
21
|
+
@linhas_parada[p.codigoParada] << p.linha
|
|
24
22
|
end
|
|
25
23
|
end
|
|
24
|
+
@linhas_parada
|
|
26
25
|
end
|
|
27
26
|
|
|
28
27
|
#pega as paradas com distancia máxima
|
|
@@ -1,21 +1,20 @@
|
|
|
1
|
-
require '
|
|
2
|
-
|
|
3
|
-
require 'veiculo_strans'
|
|
1
|
+
require 'json'
|
|
2
|
+
require_relative 'veiculo'
|
|
4
3
|
|
|
5
|
-
class
|
|
4
|
+
class Linha
|
|
6
5
|
|
|
7
|
-
attr_accessor :codigoLinha, :
|
|
6
|
+
attr_accessor :codigoLinha, :denominacao, :origem,
|
|
8
7
|
:retorno, :circular, :veiculos, :paradas
|
|
9
8
|
|
|
10
9
|
def initialize(fields)
|
|
11
10
|
if(fields)
|
|
12
11
|
@codigoLinha = fields['CodigoLinha'] || fields[:codigoLinha]
|
|
13
|
-
@
|
|
12
|
+
@denominacao = fields['Denomicao'] || fields[:denomicao]
|
|
14
13
|
@origem = fields['Origem'] || fields[:origem]
|
|
15
14
|
@retorno = fields['Retorno'] || fields[:retorno]
|
|
16
15
|
@circular = fields['Circular'] || fields[:circular]
|
|
17
|
-
@veiculos = load_objs(fields['Veiculos'],
|
|
18
|
-
@paradas = load_objs(fields['Paradas'],
|
|
16
|
+
@veiculos = load_objs(fields['Veiculos'], Veiculo)
|
|
17
|
+
@paradas = load_objs(fields['Paradas'], Parada)
|
|
19
18
|
end
|
|
20
19
|
end
|
|
21
20
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'json'
|
|
2
2
|
|
|
3
|
-
class
|
|
3
|
+
class Parada
|
|
4
4
|
|
|
5
5
|
def initialize(fields)
|
|
6
6
|
load_atts(fields)
|
|
@@ -10,7 +10,7 @@ class ParadaStrans
|
|
|
10
10
|
|
|
11
11
|
def load_atts(fields)
|
|
12
12
|
@codigoParada = fields['CodigoParada'] || fields[:codigoParada]
|
|
13
|
-
@
|
|
13
|
+
@denominacao = fields['Denomicao'] || fields[:denomicao]
|
|
14
14
|
@endereco = fields['Endereco'] || fields[:endereco]
|
|
15
15
|
@lat = (fields['Lat'] || fields[:lat]).to_f
|
|
16
16
|
@long = (fields['Long'] || fields[:long]).to_f
|
|
@@ -19,7 +19,7 @@ class ParadaStrans
|
|
|
19
19
|
def to_json(*a)
|
|
20
20
|
serialized = Hash.new
|
|
21
21
|
serialized[:codigoParada] = @codigoParada if(@codigoParada)
|
|
22
|
-
serialized[:denominacao] = @denominacao if(@
|
|
22
|
+
serialized[:denominacao] = @denominacao if(@denominacao)
|
|
23
23
|
serialized[:endereco] = @endereco if(@endereco)
|
|
24
24
|
serialized[:lat] = @lat if(@lat)
|
|
25
25
|
serialized[:long] = @long if(@long)
|
data/lib/request.rb
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'net/http'
|
|
3
|
+
require_relative 'response'
|
|
4
|
+
require_relative 'erro'
|
|
5
|
+
require 'byebug'
|
|
6
|
+
|
|
7
|
+
# Representa uma requisicao
|
|
8
|
+
class Request
|
|
9
|
+
URL_API = 'https://api.inthegra.strans.teresina.pi.gov.br/v1'.freeze
|
|
10
|
+
|
|
11
|
+
VERB_MAP = {
|
|
12
|
+
get: Net::HTTP::Get,
|
|
13
|
+
post: Net::HTTP::Post,
|
|
14
|
+
put: Net::HTTP::Put,
|
|
15
|
+
delete: Net::HTTP::Delete
|
|
16
|
+
}.freeze
|
|
17
|
+
|
|
18
|
+
def initialize(token)
|
|
19
|
+
@token = token
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def send(method, path, params = nil)
|
|
23
|
+
uri = URI.parse(URL_API + path)
|
|
24
|
+
Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |https|
|
|
25
|
+
req = build_request(method, uri, params)
|
|
26
|
+
build_response(https.request(req))
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def build_request(method, uri, params)
|
|
33
|
+
uri.query = URI.encode_www_form(params) if method == :get && params
|
|
34
|
+
req = VERB_MAP[method].new(uri, @token.header)
|
|
35
|
+
req.body = params.to_json if params && method != :get
|
|
36
|
+
req
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def build_response(resp_http)
|
|
40
|
+
case resp_http
|
|
41
|
+
when Net::HTTPSuccess then
|
|
42
|
+
Response.new(resp_http)
|
|
43
|
+
else
|
|
44
|
+
Erro.new(code: resp_http.code, message: resp_http.message)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/lib/response.rb
ADDED
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require_relative 'Linha'
|
|
2
|
+
require_relative 'Parada'
|
|
3
|
+
|
|
4
|
+
class Response
|
|
5
|
+
|
|
6
|
+
def initialize(resp)
|
|
7
|
+
@resp = resp
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def model(path)
|
|
11
|
+
@resp = JSON.parse(@resp.body)
|
|
12
|
+
case path
|
|
13
|
+
when :signin
|
|
14
|
+
token
|
|
15
|
+
when :linhas
|
|
16
|
+
linhas
|
|
17
|
+
when :veiculos
|
|
18
|
+
veiculos
|
|
19
|
+
when :veiculos_linha
|
|
20
|
+
veiculos_linha
|
|
21
|
+
when :paradas
|
|
22
|
+
paradas
|
|
23
|
+
when :paradas_linha
|
|
24
|
+
paradas_linha
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def token
|
|
29
|
+
@resp
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def linhas
|
|
33
|
+
@resp.map{ |l| Linha.new(l) }
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def veiculos
|
|
37
|
+
v = @resp.map do |node|
|
|
38
|
+
linha = Linha.new(node['Linha'])
|
|
39
|
+
linha.veiculos
|
|
40
|
+
end
|
|
41
|
+
v.reduce(:concat)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def veiculos_linha
|
|
45
|
+
linha = Linha.new(@resp['Linha'])
|
|
46
|
+
linha.veiculos
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def paradas
|
|
50
|
+
@resp.map{|p| Parada.new(p) }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def paradas_linha
|
|
54
|
+
@resp.map{|p| Parada.new(p) }
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
end
|
data/lib/strans-client.rb
CHANGED
|
@@ -1,36 +1,38 @@
|
|
|
1
1
|
require 'json'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
require_relative 'Request'
|
|
3
|
+
require_relative 'Response'
|
|
4
|
+
require_relative 'Token'
|
|
5
|
+
require_relative 'Erro'
|
|
5
6
|
|
|
6
7
|
class StransClient
|
|
7
8
|
|
|
8
9
|
PATHS = {
|
|
9
|
-
:
|
|
10
|
-
:
|
|
11
|
-
:
|
|
12
|
-
:
|
|
13
|
-
:
|
|
14
|
-
:
|
|
15
|
-
}
|
|
10
|
+
signin: '/signin',
|
|
11
|
+
linhas: '/linhas',
|
|
12
|
+
veiculos: '/veiculos',
|
|
13
|
+
veiculos_linha: '/veiculosLinha',
|
|
14
|
+
paradas: '/paradas',
|
|
15
|
+
paradas_linha: '/paradas'
|
|
16
|
+
}.freeze
|
|
16
17
|
|
|
17
|
-
def initialize(
|
|
18
|
+
def initialize(email, pass, key)
|
|
18
19
|
@email = email
|
|
19
20
|
@password = pass
|
|
20
21
|
@key = key
|
|
21
|
-
@token =
|
|
22
|
+
@token = Token.new(@key)
|
|
22
23
|
end
|
|
23
24
|
|
|
24
|
-
def get(path, busca = nil
|
|
25
|
-
@request =
|
|
26
|
-
if
|
|
27
|
-
busca = busca.nil? ? {} :
|
|
28
|
-
@resp
|
|
29
|
-
@resp.model(path)
|
|
25
|
+
def get(path, busca = nil)
|
|
26
|
+
@request = Request.new(@token)
|
|
27
|
+
if @token.valid?
|
|
28
|
+
busca = busca.nil? ? {} : {busca: busca}
|
|
29
|
+
@resp = @request.send(:get, PATHS[path], busca)
|
|
30
|
+
@resp = @resp.model(path) if @resp.is_a? Response
|
|
30
31
|
else
|
|
31
|
-
autentic
|
|
32
|
-
get(path, busca)
|
|
32
|
+
@resp = autentic
|
|
33
|
+
get(path, busca) if @token.valid?
|
|
33
34
|
end
|
|
35
|
+
@resp
|
|
34
36
|
end
|
|
35
37
|
|
|
36
38
|
private
|
|
@@ -38,7 +40,8 @@ class StransClient
|
|
|
38
40
|
def autentic
|
|
39
41
|
credencials = { email:@email, password:@password }
|
|
40
42
|
@resp = @request.send(:post, PATHS[:signin], credencials)
|
|
41
|
-
@token =
|
|
43
|
+
@token = Token.new(@key, @resp.model(:signin)) unless @resp.is_a? Erro
|
|
44
|
+
@resp
|
|
42
45
|
end
|
|
43
46
|
|
|
44
47
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: strans-client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.6.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Luan Pontes
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2018-03-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: A simple client for Api strans from Teresina.
|
|
14
14
|
email: luapontes2@gmail.com
|
|
@@ -16,15 +16,15 @@ executables: []
|
|
|
16
16
|
extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
|
18
18
|
files:
|
|
19
|
-
- lib/
|
|
19
|
+
- lib/erro.rb
|
|
20
20
|
- lib/lazy-strans-client.rb
|
|
21
|
-
- lib/
|
|
22
|
-
- lib/
|
|
23
|
-
- lib/
|
|
24
|
-
- lib/
|
|
21
|
+
- lib/linha.rb
|
|
22
|
+
- lib/parada.rb
|
|
23
|
+
- lib/request.rb
|
|
24
|
+
- lib/response.rb
|
|
25
25
|
- lib/strans-client.rb
|
|
26
|
-
- lib/
|
|
27
|
-
- lib/
|
|
26
|
+
- lib/token.rb
|
|
27
|
+
- lib/veiculo.rb
|
|
28
28
|
homepage: https://github.com/tOOlmaker-equalsp/ruby-apiStransTHE
|
|
29
29
|
licenses:
|
|
30
30
|
- MIT
|
|
@@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
45
45
|
version: '0'
|
|
46
46
|
requirements: []
|
|
47
47
|
rubyforge_project:
|
|
48
|
-
rubygems_version: 2.
|
|
48
|
+
rubygems_version: 2.6.14
|
|
49
49
|
signing_key:
|
|
50
50
|
specification_version: 4
|
|
51
51
|
summary: strans-client
|
data/lib/erro_strans.rb
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
require 'json'
|
|
2
|
-
|
|
3
|
-
class ErroStrans
|
|
4
|
-
|
|
5
|
-
def initialize(fields)
|
|
6
|
-
@code = fields['code']
|
|
7
|
-
@message = fields['message']
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def to_json(*a)
|
|
11
|
-
error = Hash.new
|
|
12
|
-
error[:code] = @error if @error
|
|
13
|
-
error[:message] = @message if @message
|
|
14
|
-
error.to_json
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end
|
data/lib/request_strans.rb
DELETED
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
require 'json'
|
|
2
|
-
require 'response_strans'
|
|
3
|
-
require 'net/http'
|
|
4
|
-
|
|
5
|
-
class RequestStrans
|
|
6
|
-
|
|
7
|
-
URL_API = "https://api.inthegra.strans.teresina.pi.gov.br/v1"
|
|
8
|
-
|
|
9
|
-
VERB_MAP = {
|
|
10
|
-
:get => Net::HTTP::Get,
|
|
11
|
-
:post => Net::HTTP::Post,
|
|
12
|
-
:put => Net::HTTP::Put,
|
|
13
|
-
:delete => Net::HTTP::Delete
|
|
14
|
-
}
|
|
15
|
-
def initialize(token)
|
|
16
|
-
@token = token
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def encode_path_params(path, params)
|
|
20
|
-
encoded = URI.encode_www_form(params)
|
|
21
|
-
[path, encoded].join("?")
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def send( method, path, params = nil )
|
|
25
|
-
uri = URI.parse(URL_API+path)
|
|
26
|
-
https = Net::HTTP.new(uri.host, uri.port)
|
|
27
|
-
https.use_ssl = true
|
|
28
|
-
if(method == :get)
|
|
29
|
-
uri.query = URI.encode_www_form(params) if (params)
|
|
30
|
-
end
|
|
31
|
-
req = VERB_MAP[method].new(uri, @token.header)
|
|
32
|
-
if (params && method != :get)
|
|
33
|
-
req.body = params.to_json
|
|
34
|
-
end
|
|
35
|
-
ResponseStrans.new(https.request(req))
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
end
|
data/lib/response_strans.rb
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
require 'json'
|
|
2
|
-
require 'linha_strans'
|
|
3
|
-
require 'parada_strans'
|
|
4
|
-
require 'veiculo_strans'
|
|
5
|
-
require 'erro_strans'
|
|
6
|
-
|
|
7
|
-
class ResponseStrans
|
|
8
|
-
|
|
9
|
-
def initialize(resp)
|
|
10
|
-
@resp = resp
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def model(path)
|
|
14
|
-
@resp = JSON.parse(@resp.body)
|
|
15
|
-
if(@resp.kind_of?(Hash) && @resp['code'] )
|
|
16
|
-
return ErroStrans.new(@resp)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
case path
|
|
20
|
-
when :signin
|
|
21
|
-
token()
|
|
22
|
-
when :linhas
|
|
23
|
-
linhas()
|
|
24
|
-
when :veiculos
|
|
25
|
-
veiculos()
|
|
26
|
-
when :veiculos_linha
|
|
27
|
-
veiculos_linha()
|
|
28
|
-
when :paradas
|
|
29
|
-
paradas()
|
|
30
|
-
when :paradas_linha
|
|
31
|
-
paradas_linha()
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def token()
|
|
36
|
-
@resp
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def linhas()
|
|
40
|
-
@resp.map{|l| LinhaStrans.new(l) }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def veiculos()
|
|
44
|
-
v = @resp.map do |node|
|
|
45
|
-
linha = LinhaStrans.new(node['Linha'])
|
|
46
|
-
linha.veiculos
|
|
47
|
-
end
|
|
48
|
-
v.reduce(:concat)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def veiculos_linha()
|
|
52
|
-
linha = LinhaStrans.new(@resp['Linha'])
|
|
53
|
-
linha.veiculos
|
|
54
|
-
end
|
|
55
|
-
|
|
56
|
-
def paradas ()
|
|
57
|
-
@resp.map{|p| ParadaStrans.new(p) }
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def paradas_linha()
|
|
61
|
-
@resp = @resp['Linha'].merge!('Paradas' => @resp['Paradas'])
|
|
62
|
-
LinhaStrans.new(@resp).paradas
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
end
|