argos-ruby 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/argos/soap.rb +28 -21
- data/lib/argos/soap_command.rb +32 -12
- data/lib/argos.rb +4 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MmM0NDJiNWVjNDNjMWRhYTI4MmNjYWY2NTQ5ZTAwOWQwMjY5YTFjNA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
MzBiY2Q2MzYyOGU2NmY3NTNjMjE3MDhlNzYzMjk4YTNjODc2MDU4Yg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MmM4ZmI1N2EzMzAxODhhZWE4NTk1MmMyYTAyNGM4ZDNkZWZiOWI4YTRiNDg5
|
10
|
+
MTc3OTdlYTkyMmY2NGJhMTk1OWFlMDc4OTEyYjA4MTMzNzI3OWFlNTEyYWM0
|
11
|
+
MjcyMjNjNTAyNzQxMDAwOTZkNTVmMzJmZmZhMWM3ZWZjZGZhYzk=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MDcyMTZkMmYyNDVkOTdmZDY5YTBhZDk4MjkzZDc5NWRkNTY1ZTMwZWVlZTMz
|
14
|
+
OGQ2ZThiMDhiYWNmYjViNjhhZjk4YTA2YTkwYzc5OGVlYTczYmQ1YzdjZDQ4
|
15
|
+
OWYyM2E4M2IyMTNiNzI4ZDk2YWM1ODVlNTQ1MTAzYzBhZjU3NmE=
|
data/lib/argos/soap.rb
CHANGED
@@ -21,19 +21,19 @@ module Argos
|
|
21
21
|
# A "simple" Soap client for Argos-system satellite tracking webservice
|
22
22
|
# http://wanderingbarque.com/nonintersecting/2006/11/15/the-s-stands-for-simple/
|
23
23
|
|
24
|
-
# client [Savon]
|
24
|
+
# client [Savon] (version 3)
|
25
25
|
# request [String] Soap:Envelope (XML request body)
|
26
26
|
# response [Savon::Response]
|
27
27
|
# operation [Savon::Operation]
|
28
|
+
# log [Logger]
|
28
29
|
# xml [String] (Extracted, inner) XML
|
29
|
-
# filter
|
30
|
+
# filter
|
30
31
|
# platformId [String] Comma-separated list of platforms
|
31
32
|
# programNumber [String] Comma-separated list of programs
|
32
33
|
# nbDaysFromNow
|
33
34
|
# period
|
34
|
-
attr_accessor :client, :request, :response, :operation, :xml, :filter,
|
35
|
+
attr_accessor :client, :request, :response, :operation, :log, :xml, :filter,
|
35
36
|
:platformId, :programNumber, :nbDaysFromNow, :period
|
36
|
-
|
37
37
|
# username [String]
|
38
38
|
# password [String]
|
39
39
|
attr_writer :username, :password
|
@@ -78,7 +78,7 @@ module Argos
|
|
78
78
|
end
|
79
79
|
end
|
80
80
|
end
|
81
|
-
|
81
|
+
|
82
82
|
# Build baseRequest Hash
|
83
83
|
# The service requires programNumber or PlatformId, but if you do not provide any,
|
84
84
|
# this method will call the service (@see #programs) and get the current user's programs
|
@@ -92,11 +92,11 @@ module Argos
|
|
92
92
|
if @programNumber.nil? and @platformId.nil?
|
93
93
|
# Fetch all programs if neither is provided
|
94
94
|
baseRequest[:programNumber] = programs.map {|p|p.to_s}.join(",")
|
95
|
-
elsif @programNumber =~ /\d+/ and @platformId =~ /\d+/
|
96
|
-
|
97
|
-
elsif @programNumber =~ /\d+/
|
95
|
+
elsif @programNumber.to_s =~ /\d+/ and @platformId.to_s =~ /\d+/
|
96
|
+
baseRequest[:platformId] = @platformId # ignores programNumber
|
97
|
+
elsif @programNumber.to_s =~ /\d+/
|
98
98
|
baseRequest[:programNumber] = @programNumber
|
99
|
-
elsif @platformId =~ /\d+/
|
99
|
+
elsif @platformId.to_s =~ /\d+/
|
100
100
|
baseRequest[:platformId] = @platformId
|
101
101
|
end
|
102
102
|
|
@@ -112,13 +112,14 @@ module Argos
|
|
112
112
|
baseRequest[:period] = @period
|
113
113
|
end
|
114
114
|
|
115
|
-
baseRequest = baseRequest.merge({
|
115
|
+
#baseRequest = baseRequest.merge({
|
116
|
+
# @todo
|
116
117
|
#<xs:element minOccurs="0" name="referenceDate" type="tns:referenceDateType"/>
|
117
118
|
#<xs:element minOccurs="0" name="locClass" type="xs:string"/>
|
118
119
|
#<xs:element minOccurs="0" name="geographicArea" type="xs:string"/>
|
119
120
|
#<xs:element minOccurs="0" name="compression" type="xs:int"/>
|
120
121
|
#<xs:element minOccurs="0" name="mostRecentPassages" type="xs:boolean"/>
|
121
|
-
})
|
122
|
+
#})
|
122
123
|
baseRequest
|
123
124
|
|
124
125
|
end
|
@@ -231,17 +232,19 @@ module Argos
|
|
231
232
|
|
232
233
|
# Platforms: array of platformId integers
|
233
234
|
# @return [Array] of [Integer]
|
234
|
-
def platforms
|
235
|
+
def platforms
|
235
236
|
platforms = []
|
236
237
|
|
237
238
|
platformListPrograms = getPlatformList["data"]["program"]
|
238
239
|
|
239
|
-
if programNumber.to_s =~ /\d+/
|
240
|
-
platformListPrograms.select! {|p| p["programNumber"].to_i == programNumber.to_i }
|
240
|
+
if @programNumber.to_s =~ /\d+/
|
241
|
+
platformListPrograms.select! {|p| p["programNumber"].to_i == @programNumber.to_i }
|
241
242
|
end
|
243
|
+
|
242
244
|
platformListPrograms.each do |program|
|
243
245
|
platforms += program["platform"].map {|p| p["platformId"].to_i}
|
244
246
|
end
|
247
|
+
|
245
248
|
platforms
|
246
249
|
end
|
247
250
|
|
@@ -268,7 +271,11 @@ module Argos
|
|
268
271
|
|
269
272
|
# @return [String]
|
270
273
|
def request
|
271
|
-
operation.
|
274
|
+
if operation.nil?
|
275
|
+
nil
|
276
|
+
else
|
277
|
+
operation.build
|
278
|
+
end
|
272
279
|
end
|
273
280
|
|
274
281
|
# @return [Hash] {"DixService":{"ports":{"DixServicePort":{"type":"http://schemas.xmlsoap.org/wsdl/soap12/","location":"http://ws-argos.cls.fr/argosDws/services/DixService"}}}}
|
@@ -332,15 +339,15 @@ module Argos
|
|
332
339
|
ng = Nokogiri.XML(xml)
|
333
340
|
ng.xpath("/data/errors/error").each do | error |
|
334
341
|
if error.key?("code")
|
335
|
-
case error["code"]
|
336
|
-
when
|
342
|
+
case error["code"].to_i
|
343
|
+
when 4
|
337
344
|
raise NodataException
|
338
345
|
end
|
339
346
|
#<error code="2">max response reached</error>
|
340
|
-
#<
|
341
|
-
|
342
|
-
|
343
|
-
raise error
|
347
|
+
#<error code="3">authentification error</error>
|
348
|
+
#<error code="9">start date upper than end date</error>
|
349
|
+
else
|
350
|
+
raise Exception, error
|
344
351
|
end
|
345
352
|
end
|
346
353
|
|
data/lib/argos/soap_command.rb
CHANGED
@@ -1,21 +1,21 @@
|
|
1
|
-
require "optparse"
|
1
|
+
require "optparse"
|
2
2
|
require "net/http"
|
3
3
|
require "csv"
|
4
4
|
|
5
5
|
module Argos
|
6
|
-
|
7
6
|
# argos-soap command
|
8
7
|
#
|
9
8
|
# On success, data is pumped to STDOUT, on faults/errors to STDERR
|
9
|
+
#
|
10
10
|
# Examples:
|
11
11
|
# $ argos-soap --operation getXml
|
12
|
-
# $ argos-soap -o getXml --startDate="2014-03-10T00:00:00Z" --endDate="2014-03-10T23:59:59.999Z" --log-level=
|
13
|
-
# $ argos-soap -o getXml --
|
12
|
+
# $ argos-soap -o getXml --startDate="2014-03-10T00:00:00Z" --endDate="2014-03-10T23:59:59.999Z" --log-level=0
|
13
|
+
# $ argos-soap -o getXml --date="`date --date=yesterday -I` --username=**** --password=***** > /my/argos/xml/archive/`date -I --date=yesterday`.xml
|
14
14
|
class SoapCommand
|
15
15
|
|
16
16
|
CMD = "argos-soap"
|
17
17
|
|
18
|
-
PARAM = { format: :json, wsdl: Argos::Soap::WSDL }
|
18
|
+
PARAM = { format: :json, wsdl: Argos::Soap::WSDL, level: 1 }
|
19
19
|
|
20
20
|
def self.run(argv=ARGV)
|
21
21
|
begin
|
@@ -40,11 +40,16 @@ module Argos
|
|
40
40
|
|
41
41
|
opts.banner = "#{CMD} operation [options]\n"
|
42
42
|
|
43
|
-
opts.on("--debug", "Debug (alias for --log-level=0") do
|
43
|
+
opts.on("--debug", "Debug (alias for --log-level=0)") do
|
44
44
|
@param[:level] = Logger::DEBUG
|
45
45
|
end
|
46
46
|
|
47
|
-
# --date shorthand for 1 day
|
47
|
+
# --date shorthand for 1 day period
|
48
|
+
opts.on("--date=isodate", "Set period to one day") do |isodate|
|
49
|
+
startDate = Time.parse(isodate+"T00:00:00Z").iso8601
|
50
|
+
endDate = Time.parse(isodate+"T23:59:59.999Z").iso8601
|
51
|
+
@param[:period] = { startDate: startDate, endDate: endDate }
|
52
|
+
end
|
48
53
|
|
49
54
|
opts.on("--format=format", "-f=format", "{ json | xml | text | raw }") do |format|
|
50
55
|
@param[:format] = format.to_sym
|
@@ -111,17 +116,28 @@ module Argos
|
|
111
116
|
@param[:password] = password
|
112
117
|
end
|
113
118
|
end
|
119
|
+
|
120
|
+
opts.on("--download=archive", "Download") do |archive|
|
121
|
+
@param[:archive] = archive
|
122
|
+
end
|
114
123
|
|
115
124
|
end
|
116
125
|
option_parser.parse!
|
117
126
|
|
127
|
+
@log = Logger.new(STDERR)
|
128
|
+
@log.level = param[:level].to_i
|
129
|
+
|
130
|
+
if not @param[:archive].nil?
|
131
|
+
Argos::Download.download(param[:username], param[:password], param[:archive], log)
|
132
|
+
exit(true)
|
133
|
+
end
|
134
|
+
|
118
135
|
if operation.nil?
|
119
136
|
STDOUT.write option_parser.help
|
120
137
|
exit(false)
|
121
138
|
end
|
122
139
|
|
123
|
-
|
124
|
-
@log.level = param[:level].to_i
|
140
|
+
|
125
141
|
end
|
126
142
|
|
127
143
|
def debug?
|
@@ -154,7 +170,7 @@ module Argos
|
|
154
170
|
when :operations
|
155
171
|
@result = soap.operations
|
156
172
|
when :platforms
|
157
|
-
@result = soap.platforms
|
173
|
+
@result = soap.platforms
|
158
174
|
when :programs
|
159
175
|
@result = soap.programs
|
160
176
|
when :services
|
@@ -162,12 +178,14 @@ module Argos
|
|
162
178
|
else
|
163
179
|
raise ArgumentError, "Unspported operation: #{param[:operation]}"
|
164
180
|
end
|
165
|
-
|
181
|
+
puts output
|
166
182
|
|
167
183
|
rescue NodataException
|
168
184
|
log.debug output
|
185
|
+
exit(true)
|
169
186
|
rescue => e
|
170
187
|
STDERR.write output
|
188
|
+
exit(false)
|
171
189
|
end
|
172
190
|
|
173
191
|
end
|
@@ -178,7 +196,9 @@ module Argos
|
|
178
196
|
|
179
197
|
if debug?
|
180
198
|
log.debug "#{CMD} param: #{param.to_json}"
|
181
|
-
|
199
|
+
unless soap.request.nil?
|
200
|
+
log.debug "$ curl -XPOST #{Argos::Soap::URI} -d'#{soap.request}' -H \"Content-Type: application/soap+xml\""
|
201
|
+
end
|
182
202
|
end
|
183
203
|
|
184
204
|
if result.is_a? Savon::Response
|
data/lib/argos.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "bundler/setup"
|
2
2
|
require "bigdecimal"
|
3
3
|
require "date"
|
4
|
-
require "time" # for iso8601
|
4
|
+
require "time" # for #iso8601
|
5
5
|
require "digest/sha1"
|
6
6
|
require "json"
|
7
7
|
require "logger"
|
@@ -12,9 +12,9 @@ require_relative "argos/ascii"
|
|
12
12
|
require_relative "argos/ds"
|
13
13
|
require_relative "argos/diag"
|
14
14
|
require_relative "argos/soap"
|
15
|
-
|
15
|
+
require_relative "argos/download"
|
16
16
|
|
17
|
-
# Argos
|
17
|
+
# [Argos](http://www.argos-system.org) satellite tracking data tools
|
18
18
|
# * Parsers for Argos legacy ASCII files (DS/DAT and DIAG files)
|
19
19
|
# * Soap web service client and Argos XML download tool
|
20
20
|
#
|
@@ -25,7 +25,7 @@ require_relative "argos/soap"
|
|
25
25
|
#
|
26
26
|
# For information about Argos, see: http://www.argos-system.org
|
27
27
|
module Argos
|
28
|
-
VERSION = "1.1.
|
28
|
+
VERSION = "1.1.3"
|
29
29
|
|
30
30
|
def self.library_version
|
31
31
|
"argos-ruby-#{VERSION}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: argos-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Espen Egeland
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-03-
|
12
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|