marinetraffic 0.0.5 → 0.0.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/marinetraffic.rb +9 -2
- data/lib/marinetraffic/api.rb +14 -10
- data/lib/marinetraffic/errors/api_error.rb +4 -0
- data/lib/marinetraffic/errors/authentication_error.rb +4 -0
- data/lib/marinetraffic/errors/marinetraffic_error.rb +22 -0
- data/lib/marinetraffic/subscription.rb +31 -0
- data/lib/marinetraffic/version.rb +1 -1
- data/lib/marinetraffic/vessel.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: dca7779891746440b8e9417d557e58ca35df826c
|
4
|
+
data.tar.gz: 385169c61fa198c1ea5b5665f6b1573100a18de8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 58f77469499e90d3eed2ac155e78604b4821ee0492c02d8b6988896b2c82f85512c21e0ca6cd6ba0ba68b33bc77f0effe908a67d8f200ccd24a857cade8d94af
|
7
|
+
data.tar.gz: b0737a76b56f8dd098580efb557833b6721c47320ea333136c506449f86e18032a1545ecda3bd70406e9e367c844d0767bc73ab2c270901e66623de6390b5b5e
|
data/lib/marinetraffic.rb
CHANGED
@@ -1,9 +1,16 @@
|
|
1
1
|
require "marinetraffic/version"
|
2
|
-
require "marinetraffic/vessel"
|
3
2
|
require "marinetraffic/api"
|
3
|
+
require "marinetraffic/vessel"
|
4
|
+
require "marinetraffic/subscription"
|
5
|
+
|
6
|
+
require "marinetraffic/errors/marinetraffic_error"
|
7
|
+
require "marinetraffic/errors/authentication_error"
|
8
|
+
require "marinetraffic/errors/api_error"
|
4
9
|
|
5
10
|
module Marinetraffic
|
11
|
+
@api_base = 'http://services.marinetraffic.com/api'
|
12
|
+
|
6
13
|
class << self
|
7
|
-
attr_accessor :api_key
|
14
|
+
attr_accessor :api_key, :api_base
|
8
15
|
end
|
9
16
|
end
|
data/lib/marinetraffic/api.rb
CHANGED
@@ -1,26 +1,30 @@
|
|
1
1
|
require 'faraday'
|
2
2
|
require 'nokogiri'
|
3
3
|
|
4
|
-
API_URL = "http://services.marinetraffic.com/api"
|
5
|
-
|
6
4
|
module Marinetraffic
|
7
5
|
class API
|
8
6
|
def self.call(name, params = {})
|
7
|
+
api_key = params.delete(:api_key)
|
8
|
+
|
9
|
+
unless api_key ||= Marinetraffic.api_key
|
10
|
+
raise AuthenticationError.new('No API key provided. ' \
|
11
|
+
'Set your API key using "Marinetraffic.api_key = <API-KEY>" ' \
|
12
|
+
'or pass it as parameter to your request.')
|
13
|
+
end
|
14
|
+
|
9
15
|
params[:protocol] = :xml
|
10
16
|
param_string = params.map{|attr| "#{attr.first}:#{attr.last}"}.join('/')
|
11
|
-
url = "#{
|
17
|
+
url = "#{Marinetraffic.api_base}/#{name}/#{api_key}/#{param_string}"
|
12
18
|
response = Faraday.get(url)
|
13
19
|
doc = Nokogiri::XML(response.body)
|
14
|
-
|
20
|
+
handle_api_error(response, doc) if doc.xpath('//ERROR').any?
|
15
21
|
doc
|
16
22
|
end
|
17
23
|
|
18
|
-
def self.
|
19
|
-
|
20
|
-
|
24
|
+
def self.handle_api_error(response, doc)
|
25
|
+
error = doc.xpath('//ERROR')[0]['DESCRIPTION']
|
26
|
+
code = doc.xpath('//ERROR')[0]['CODE']
|
27
|
+
raise APIError.new(error, response.status.to_s, response.body, response.headers, code)
|
21
28
|
end
|
22
29
|
end
|
23
|
-
|
24
|
-
class MarinetrafficException < Exception
|
25
|
-
end
|
26
30
|
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module Marinetraffic
|
2
|
+
class MarinetrafficError < StandardError
|
3
|
+
attr_reader :message
|
4
|
+
attr_reader :error_code
|
5
|
+
attr_reader :http_status
|
6
|
+
attr_reader :http_body
|
7
|
+
attr_reader :http_headers
|
8
|
+
|
9
|
+
def initialize(message=nil, http_status=nil, http_body=nil, http_headers=nil, error_code=nil)
|
10
|
+
@message = message
|
11
|
+
@http_status = http_status
|
12
|
+
@http_body = http_body
|
13
|
+
@http_headers = http_headers || {}
|
14
|
+
@error_code = error_code
|
15
|
+
end
|
16
|
+
|
17
|
+
def to_s
|
18
|
+
code_string = @error_code.nil? ? "" : "(Error #{@error_code}) "
|
19
|
+
"#{code_string}#{@message}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Marinetraffic
|
2
|
+
class Subscription
|
3
|
+
attr_accessor :api_key
|
4
|
+
|
5
|
+
def initialize(api_key)
|
6
|
+
@api_key = api_key
|
7
|
+
end
|
8
|
+
|
9
|
+
def find(mmsi, extended = false, options = {})
|
10
|
+
params = { api_key: api_key }.merge(options)
|
11
|
+
params[:msgtype] = :extended if extended
|
12
|
+
response = API.call(:exportvessels, params)
|
13
|
+
result = response.xpath("//row[@MMSI=#{mmsi}]")[0]
|
14
|
+
|
15
|
+
if result != nil
|
16
|
+
attributes = Marinetraffic::Vessel.map_attributes(result, extended)
|
17
|
+
Marinetraffic::Vessel.new(attributes)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def all(extended = false, options = {})
|
22
|
+
params = { timespan: 20, api_key: api_key }.merge(options)
|
23
|
+
params[:msgtype] = :extended if extended
|
24
|
+
response = API.call(:exportvessels, params)
|
25
|
+
result = response.xpath("//row").map do |row|
|
26
|
+
attributes = Marinetraffic::Vessel.map_attributes(row, extended)
|
27
|
+
Marinetraffic::Vessel.new(attributes)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/lib/marinetraffic/vessel.rb
CHANGED
@@ -115,7 +115,7 @@ module Marinetraffic
|
|
115
115
|
# http://help.marinetraffic.com/hc/en-us/articles/205579997-What-is-the-significance-of-the-AIS-SHIPTYPE-number-
|
116
116
|
def ship_type_human
|
117
117
|
return if ship_type == nil
|
118
|
-
case ship_type
|
118
|
+
case ship_type.to_s[0].to_i
|
119
119
|
when 1
|
120
120
|
'Reserved'
|
121
121
|
when 2
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: marinetraffic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabio Kuhn
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -156,6 +156,10 @@ files:
|
|
156
156
|
- bin/setup
|
157
157
|
- lib/marinetraffic.rb
|
158
158
|
- lib/marinetraffic/api.rb
|
159
|
+
- lib/marinetraffic/errors/api_error.rb
|
160
|
+
- lib/marinetraffic/errors/authentication_error.rb
|
161
|
+
- lib/marinetraffic/errors/marinetraffic_error.rb
|
162
|
+
- lib/marinetraffic/subscription.rb
|
159
163
|
- lib/marinetraffic/version.rb
|
160
164
|
- lib/marinetraffic/vessel.rb
|
161
165
|
- marinetraffic.gemspec
|