voruby 1.1.1 → 2.0.0
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.
- data/Rakefile.rb +107 -224
- data/lib/misc.rb +1 -0
- data/lib/misc/misc.rb +60 -0
- data/lib/misc/propertyfile.rb +31 -0
- data/lib/symphony.rb +1 -0
- data/lib/symphony/symphony.rb +247 -0
- data/lib/voruby.rb +186 -0
- data/lib/voruby/active_votable/active_votable.rb +468 -347
- data/lib/voruby/adql/1.0/adql.rb +2418 -0
- data/lib/voruby/adql/support.rb +2 -0
- data/lib/voruby/misc.rb +351 -0
- data/lib/voruby/misc/connection_monitor.rb +97 -0
- data/lib/voruby/misc/libxml_ext.rb +121 -0
- data/lib/voruby/misc/rexml_ext.rb +223 -0
- data/lib/voruby/resolver/resolver.rb +12 -0
- data/lib/voruby/resolver/sesame.rb +299 -0
- data/lib/voruby/sky_query/sky_query.rb +192 -0
- data/lib/voruby/stc/1.10/coords.rb +2272 -0
- data/lib/voruby/stc/1.10/region.rb +892 -0
- data/lib/voruby/stc/1.10/stc.rb +3271 -0
- data/lib/voruby/stc/1.30/stc.rb +8666 -0
- data/lib/voruby/stc/support.rb +2 -0
- data/lib/voruby/ucd/ucd.rb +173 -0
- data/lib/voruby/voevent/1.1/voevent.rb +1124 -0
- data/lib/voruby/voevent/support.rb +5 -0
- data/lib/voruby/votable/1.0/votable.rb +1807 -0
- data/lib/voruby/votable/1.1/votable.rb +2100 -0
- data/lib/voruby/votable/votable.rb +305 -0
- data/lib/voruby/wesix/wesix.rb +491 -0
- data/lib/voruby/xlink/1.2/xlink.rb +21 -0
- data/test/voruby/active_votable/complex.vot +60 -0
- data/test/voruby/active_votable/error.vot +6 -0
- data/test/voruby/active_votable/large.vot +130040 -0
- data/test/voruby/active_votable/simple1.vot +38 -0
- data/test/voruby/active_votable/simple2.vot +38 -0
- data/test/voruby/active_votable/test.rb +193 -0
- data/test/voruby/adql/1.0/adql-alias.sql +1 -0
- data/test/voruby/adql/1.0/adql-alias.xml +26 -0
- data/test/voruby/adql/1.0/adql-avg.sql +1 -0
- data/test/voruby/adql/1.0/adql-avg.xml +31 -0
- data/test/voruby/adql/1.0/adql-circle.sql +1 -0
- data/test/voruby/adql/1.0/adql-circle.xml +46 -0
- data/test/voruby/adql/1.0/adql-expr.sql +1 -0
- data/test/voruby/adql/1.0/adql-expr.xml +34 -0
- data/test/voruby/adql/1.0/adql-function.sql +1 -0
- data/test/voruby/adql/1.0/adql-function.xml +41 -0
- data/test/voruby/adql/1.0/adql-group.sql +1 -0
- data/test/voruby/adql/1.0/adql-group.xml +51 -0
- data/test/voruby/adql/1.0/adql-having.sql +1 -0
- data/test/voruby/adql/1.0/adql-having.xml +25 -0
- data/test/voruby/adql/1.0/adql-like.sql +1 -0
- data/test/voruby/adql/1.0/adql-like.xml +17 -0
- data/test/voruby/adql/1.0/adql-order.sql +1 -0
- data/test/voruby/adql/1.0/adql-order.xml +37 -0
- data/test/voruby/adql/1.0/adql-simple.sql +1 -0
- data/test/voruby/adql/1.0/adql-simple.xml +12 -0
- data/test/voruby/adql/1.0/adql-top.sql +1 -0
- data/test/voruby/adql/1.0/adql-top.xml +33 -0
- data/test/voruby/adql/1.0/test.rb +2220 -0
- data/test/voruby/misc/test.rb +32 -0
- data/test/voruby/resolver/sesame/test.rb +56 -0
- data/test/voruby/sky_query/test.rb +107 -0
- data/test/voruby/stc/1.10/coords_test.rb +3704 -0
- data/test/voruby/stc/1.10/region_test.rb +993 -0
- data/test/voruby/stc/1.10/stc-catalog-entry-location.xml +112 -0
- data/test/voruby/stc/1.10/stc-obs-data-location.xml +126 -0
- data/test/voruby/stc/1.10/stc-region-circle.xml +5 -0
- data/test/voruby/stc/1.10/stc-region-convex.xml +11 -0
- data/test/voruby/stc/1.10/stc-region-convexhull.xml +5 -0
- data/test/voruby/stc/1.10/stc-region-ellipse.xml +7 -0
- data/test/voruby/stc/1.10/stc-region-intersection.xml +25 -0
- data/test/voruby/stc/1.10/stc-region-negation.xml +7 -0
- data/test/voruby/stc/1.10/stc-region-polygon.xml +13 -0
- data/test/voruby/stc/1.10/stc-region-sector.xml +6 -0
- data/test/voruby/stc/1.10/stc-region-union.xml +25 -0
- data/test/voruby/stc/1.10/stc-resource-profile.xml +60 -0
- data/test/voruby/stc/1.10/stc-search-location.xml +54 -0
- data/test/voruby/stc/1.10/stc_test.rb +4626 -0
- data/test/voruby/stc/1.30/stc-catalog-entry-location.xml +210 -0
- data/test/voruby/stc/1.30/stc-obs-data-location-arecibo.xml +353 -0
- data/test/voruby/stc/1.30/stc-obs-data-location-fits.xml +250 -0
- data/test/voruby/stc/1.30/stc-obs-data-location-xlink.xml +63 -0
- data/test/voruby/stc/1.30/stc-obs-data-location.xml +216 -0
- data/test/voruby/stc/1.30/stc-resource-profile-unusual-ref-pos.xml +39 -0
- data/test/voruby/stc/1.30/stc-resource-profile.xml +129 -0
- data/test/voruby/stc/1.30/stc-search-location-arecibo.xml +86 -0
- data/test/voruby/stc/1.30/stc-search-location.xml +101 -0
- data/test/voruby/stc/1.30/test.rb +6274 -0
- data/test/voruby/ucd/test.rb +48 -0
- data/test/voruby/voevent/1.1/test.rb +812 -0
- data/test/{voevent/voevent_v1_1.xml → voruby/voevent/1.1/voevent.xml} +2 -2
- data/test/voruby/voregistry/0.3/test.rb +137 -0
- data/test/voruby/votable/1.0/test.rb +714 -0
- data/test/voruby/votable/1.0/votable.basic.xml +660 -0
- data/test/voruby/votable/1.0/votable.html +86 -0
- data/test/voruby/votable/1.0/votable.ns.xml +56 -0
- data/test/voruby/votable/1.1/test.rb +785 -0
- data/test/voruby/votable/1.1/votable.basic.xml +38 -0
- data/test/voruby/votable/1.1/votable.html +86 -0
- data/test/voruby/votable/1.1/votable.ns.xml +56 -0
- data/test/voruby/votable/test.rb +15 -0
- data/test/voruby/wesix/test.rb +268 -0
- data/test/voruby/wesix/testr.fits +28 -0
- metadata +234 -247
- data/REQUIREMENTS +0 -6
- data/lib/voruby/active_votable/loader.rb +0 -5
- data/lib/voruby/adql/adql.rb +0 -2787
- data/lib/voruby/adql/ext.rb +0 -14
- data/lib/voruby/adql/loader.rb +0 -6
- data/lib/voruby/adql/operations.rb +0 -54
- data/lib/voruby/adql/parser.rb +0 -160
- data/lib/voruby/adql/transforms.rb +0 -573
- data/lib/voruby/ext.rb +0 -17
- data/lib/voruby/loader.rb +0 -4
- data/lib/voruby/misc/propertyfile.rb +0 -36
- data/lib/voruby/plastic/applications.rb +0 -174
- data/lib/voruby/plastic/constants.rb +0 -30
- data/lib/voruby/plastic/loader.rb +0 -10
- data/lib/voruby/plastic/plastic.rb +0 -1
- data/lib/voruby/resources/conesearch/conesearch.rb +0 -9
- data/lib/voruby/resources/conesearch/conesearch_v0_2.rb +0 -55
- data/lib/voruby/resources/conesearch/conesearch_v0_3.rb +0 -50
- data/lib/voruby/resources/conesearch/conesearch_v1_0.rb +0 -72
- data/lib/voruby/resources/conesearch/loader.rb +0 -4
- data/lib/voruby/resources/loader.rb +0 -50
- data/lib/voruby/resources/nodes.rb +0 -190
- data/lib/voruby/resources/openskynode/loader.rb +0 -4
- data/lib/voruby/resources/openskynode/openskynode.rb +0 -9
- data/lib/voruby/resources/openskynode/openskynode_v0_1.rb +0 -54
- data/lib/voruby/resources/sia/loader.rb +0 -5
- data/lib/voruby/resources/sia/sia.rb +0 -9
- data/lib/voruby/resources/sia/sia_v0_6.rb +0 -90
- data/lib/voruby/resources/sia/sia_v0_7.rb +0 -89
- data/lib/voruby/resources/sia/sia_v1_0.rb +0 -122
- data/lib/voruby/resources/stsci.rb +0 -59
- data/lib/voruby/resources/vodataservice/coverage_v0_2.rb +0 -195
- data/lib/voruby/resources/vodataservice/coverage_v0_3.rb +0 -158
- data/lib/voruby/resources/vodataservice/loader.rb +0 -5
- data/lib/voruby/resources/vodataservice/vodataservice.rb +0 -9
- data/lib/voruby/resources/vodataservice/vodataservice_v0_4.rb +0 -189
- data/lib/voruby/resources/vodataservice/vodataservice_v0_5.rb +0 -163
- data/lib/voruby/resources/vodataservice/vodataservice_v1_0.rb +0 -221
- data/lib/voruby/resources/voregistry/loader.rb +0 -4
- data/lib/voruby/resources/voregistry/voregistry.rb +0 -9
- data/lib/voruby/resources/voregistry/voregistry_v0_2.rb +0 -40
- data/lib/voruby/resources/voregistry/voregistry_v0_3.rb +0 -30
- data/lib/voruby/resources/voregistry/voregistry_v1_0.rb +0 -86
- data/lib/voruby/resources/voresource/loader.rb +0 -17
- data/lib/voruby/resources/voresource/voresource.rb +0 -9
- data/lib/voruby/resources/voresource/voresource_v0_10.rb +0 -327
- data/lib/voruby/resources/voresource/voresource_v0_9.rb +0 -405
- data/lib/voruby/resources/voresource/voresource_v1_0.rb +0 -230
- data/lib/voruby/services/ext.rb +0 -11
- data/lib/voruby/services/gestalt/footprint.rb +0 -95
- data/lib/voruby/services/gestalt/wcs_fixer.rb +0 -105
- data/lib/voruby/services/gestalt/wesix.rb +0 -155
- data/lib/voruby/services/loader.rb +0 -7
- data/lib/voruby/services/registry/registry.rb +0 -53
- data/lib/voruby/services/resolver/resolver.rb +0 -35
- data/lib/voruby/services/schema/schema.rb +0 -644
- data/lib/voruby/sesame/loader.rb +0 -6
- data/lib/voruby/sesame/sesame_v1_0.rb +0 -64
- data/lib/voruby/simple/loader.rb +0 -6
- data/lib/voruby/simple/parameters.rb +0 -196
- data/lib/voruby/simple/sap.rb +0 -446
- data/lib/voruby/spacetime/loader.rb +0 -3
- data/lib/voruby/spacetime/spacetime.rb +0 -607
- data/lib/voruby/stc/coords_v1_20.rb +0 -900
- data/lib/voruby/stc/loader.rb +0 -55
- data/lib/voruby/stc/region_v1_20.rb +0 -274
- data/lib/voruby/stc/stc_v1_20.rb +0 -1196
- data/lib/voruby/util.rb +0 -27
- data/lib/voruby/voevent/loader.rb +0 -7
- data/lib/voruby/voevent/voevent_v1_0.rb +0 -213
- data/lib/voruby/voevent/voevent_v1_1.rb +0 -196
- data/lib/voruby/votables/chandra.rb +0 -373
- data/lib/voruby/votables/data.rb +0 -179
- data/lib/voruby/votables/galex.rb +0 -377
- data/lib/voruby/votables/int.rb +0 -354
- data/lib/voruby/votables/libxml_parser.rb +0 -411
- data/lib/voruby/votables/libxml_votable.rb +0 -67
- data/lib/voruby/votables/loader.rb +0 -10
- data/lib/voruby/votables/meta.rb +0 -763
- data/lib/voruby/votables/misc.rb +0 -51
- data/lib/voruby/votables/nsa.rb +0 -410
- data/lib/voruby/votables/rexml_parser.rb +0 -408
- data/lib/voruby/votables/rexml_votable.rb +0 -67
- data/lib/voruby/votables/sdss.rb +0 -356
- data/lib/voruby/votables/transforms.rb +0 -388
- data/lib/voruby/votables/tree.rb +0 -45
- data/lib/voruby/votables/types.rb +0 -391
- data/lib/voruby/votables/votable.rb +0 -687
- data/test/active_votable/database.yml +0 -6
- data/test/active_votable/test.vot +0 -168492
- data/test/active_votable/unittest.rb +0 -41
- data/test/adql/test1.adql +0 -49
- data/test/adql/test2.adql +0 -51
- data/test/adql/test3.adql +0 -81
- data/test/adql/test4.adql +0 -53
- data/test/adql/test5.adql +0 -55
- data/test/adql/test6.adql +0 -18
- data/test/adql/test7.adql +0 -48
- data/test/adql/unittest.rb +0 -1672
- data/test/plastic/test.rb +0 -44
- data/test/plastic/test.vot +0 -5385
- data/test/plastic/unittest.rb +0 -66
- data/test/resources/conesearch/conesearch_v0_3.xml +0 -31
- data/test/resources/conesearch/conesearch_v1_0.xml +0 -86
- data/test/resources/conesearch/unittest_v0_3.rb +0 -22
- data/test/resources/conesearch/unittest_v1_0.rb +0 -24
- data/test/resources/openskynode/open_sky_node_v0_1.xml +0 -32
- data/test/resources/openskynode/unittest_v0_1.rb +0 -31
- data/test/resources/sia/simple_image_access_v0_7.xml +0 -36
- data/test/resources/sia/simple_image_access_v1_0.xml +0 -122
- data/test/resources/sia/unittest_v0_7.rb +0 -24
- data/test/resources/sia/unittest_v1_0.rb +0 -29
- data/test/resources/stsci.xml +0 -336
- data/test/resources/unittest_stsci.rb +0 -25
- data/test/resources/vodataservice/catalog_service_resource_v1_0.xml +0 -128
- data/test/resources/vodataservice/data_collection_resource_v0_5.xml +0 -54
- data/test/resources/vodataservice/data_collection_resource_v1_0.xml +0 -117
- data/test/resources/vodataservice/data_service_resource_v1_0.xml +0 -115
- data/test/resources/vodataservice/sky_service_resource_v0_10.xml +0 -45
- data/test/resources/vodataservice/table_service_resource_v1_0.xml +0 -122
- data/test/resources/vodataservice/tabular_sky_service_resource_v0_10.xml +0 -60
- data/test/resources/vodataservice/unittest_v0_5.rb +0 -126
- data/test/resources/vodataservice/unittest_v1_0.rb +0 -151
- data/test/resources/voregistry/authority_resource_v0_3.xml +0 -20
- data/test/resources/voregistry/authority_resource_v1_0.xml +0 -82
- data/test/resources/voregistry/registry_service_v0_3.xml +0 -20
- data/test/resources/voregistry/registry_service_v1_0.xml +0 -107
- data/test/resources/voregistry/unittest_v0_3.rb +0 -31
- data/test/resources/voregistry/unittest_v1_0.rb +0 -34
- data/test/resources/voresource/organisation_resource_v1_0.xml +0 -90
- data/test/resources/voresource/resource_organisation_v0_10.xml +0 -22
- data/test/resources/voresource/resource_service_v0_10.xml +0 -19
- data/test/resources/voresource/resource_v0_10.xml +0 -19
- data/test/resources/voresource/resource_v1_0.xml +0 -79
- data/test/resources/voresource/service_resource_v1_0.xml +0 -91
- data/test/resources/voresource/unittest_v0_10.rb +0 -61
- data/test/resources/voresource/unittest_v0_9.rb +0 -4
- data/test/resources/voresource/unittest_v1_0.rb +0 -190
- data/test/services/gestalt/unittest.rb +0 -74
- data/test/services/registry/unittest.rb +0 -34
- data/test/services/resolver/unittest.rb +0 -38
- data/test/simple/unittest.rb +0 -46
- data/test/spacetime/unittest.rb +0 -39
- data/test/stc/catalog_entry_location_v1_20.xml +0 -112
- data/test/stc/obs_data_location_v1_20.xml +0 -108
- data/test/stc/search_location_v1_20.xml +0 -54
- data/test/stc/stc_resource_profile_v1_20.xml +0 -60
- data/test/stc/unittest_v1_20.rb +0 -620
- data/test/voevent/unittest_v1_0.rb +0 -79
- data/test/voevent/unittest_v1_1.rb +0 -70
- data/test/voevent/voevent_v1_0.xml +0 -96
- data/test/votables/test.vot +0 -366
- data/test/votables/unittest.rb +0 -54
data/lib/voruby/ext.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
class Object
|
2
|
-
# The hidden singleton lurks behind everyone
|
3
|
-
def metaclass; class << self; self; end; end
|
4
|
-
def meta_eval(&blk)
|
5
|
-
metaclass.instance_eval(&blk)
|
6
|
-
end
|
7
|
-
|
8
|
-
# Adds methods to a metaclass
|
9
|
-
def meta_def(name, &blk)
|
10
|
-
meta_eval { define_method(name, &blk) }
|
11
|
-
end
|
12
|
-
|
13
|
-
# Defines an instance method within a class
|
14
|
-
def class_def(name, &blk)
|
15
|
-
class_eval { define_method(name, &blk) }
|
16
|
-
end
|
17
|
-
end
|
data/lib/voruby/loader.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module VORuby
|
2
|
-
module Misc
|
3
|
-
module PropertyFile
|
4
|
-
|
5
|
-
# A *very* simple property file reader.
|
6
|
-
# It can only understand files with entries
|
7
|
-
# of the property=value format--nothing fancy.
|
8
|
-
class SimpleReader
|
9
|
-
def initialize(file_name)
|
10
|
-
@file_name = file_name
|
11
|
-
load()
|
12
|
-
end
|
13
|
-
|
14
|
-
def load
|
15
|
-
@properties = {}
|
16
|
-
File.open(@file_name) do |file|
|
17
|
-
file.each do |line|
|
18
|
-
line.lstrip!
|
19
|
-
if line !~ /^\#/
|
20
|
-
key, value = line.split(/\s*=\s*/, 2)
|
21
|
-
@properties[key] = value
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
def [](name)
|
28
|
-
@properties[name]
|
29
|
-
end
|
30
|
-
|
31
|
-
private :load
|
32
|
-
end
|
33
|
-
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
@@ -1,174 +0,0 @@
|
|
1
|
-
require 'voruby/plastic/loader'
|
2
|
-
|
3
|
-
module VORuby
|
4
|
-
module Plastic
|
5
|
-
module Application
|
6
|
-
|
7
|
-
class Base
|
8
|
-
attr_reader :name, :description, :icon_url, :ivorn, :plastic_version, :config, :hub_id, :app_id
|
9
|
-
|
10
|
-
def initialize(name=nil, description=nil, icon_url=nil, ivorn=nil, plastic_version=0.5)
|
11
|
-
initialize_config()
|
12
|
-
|
13
|
-
@hub = ::XMLRPC::Client.new_from_uri(@config['plastic.xmlrpc.url'])
|
14
|
-
|
15
|
-
@name = name
|
16
|
-
@hub_id = URI.parse(call('plastic.hub.getHubId'))
|
17
|
-
|
18
|
-
@description = description
|
19
|
-
@icon_url = icon_url
|
20
|
-
@ivorn = ivorn
|
21
|
-
@plastic_version = plastic_version
|
22
|
-
end
|
23
|
-
|
24
|
-
def initialize_config
|
25
|
-
begin
|
26
|
-
@config = Misc::PropertyFile::SimpleReader.new("#{ENV['HOME']}/.plastic")
|
27
|
-
rescue Errno::ENOENT => e
|
28
|
-
puts "Unable to find .plastic file. Is a PLASTIC hub running? #{e}"
|
29
|
-
end
|
30
|
-
|
31
|
-
raise 'Unable to determine value of XMLRPC URL' if !@config['plastic.xmlrpc.url']
|
32
|
-
@config['plastic.xmlrpc.url'].gsub!(/\\:/, ':')
|
33
|
-
end
|
34
|
-
|
35
|
-
def register
|
36
|
-
@app_id = call('plastic.hub.registerNoCallBack', self.name)
|
37
|
-
end
|
38
|
-
|
39
|
-
def get_registered_ids
|
40
|
-
call('plastic.hub.getRegisteredIds').collect{ |uri| URI.parse(uri) }
|
41
|
-
end
|
42
|
-
|
43
|
-
def get_understood_messages(app_id)
|
44
|
-
call('plastic.hub.getUnderstoodMessages', app_id.to_s).collect{ |uri| URI.parse(uri) }
|
45
|
-
end
|
46
|
-
|
47
|
-
def get_message_registered_ids(msg)
|
48
|
-
call('plastic.hub.getMessageRegisteredIds', msg.to_s).collect{ |uri| URI.parse(uri) }
|
49
|
-
end
|
50
|
-
|
51
|
-
def get_name(app_id)
|
52
|
-
name = call('plastic.hub.getName', app_id.to_s)
|
53
|
-
(name != '')? name: nil
|
54
|
-
end
|
55
|
-
|
56
|
-
def unregister
|
57
|
-
call('plastic.hub.unregister', self.app_id.to_s) if self.app_id
|
58
|
-
end
|
59
|
-
|
60
|
-
def request(msg, *args)
|
61
|
-
responses = {}
|
62
|
-
call('plastic.hub.request', self.app_id.to_s, msg.to_s, args).each do |app_id, response|
|
63
|
-
responses[URI.parse(app_id)] = response
|
64
|
-
end
|
65
|
-
|
66
|
-
responses
|
67
|
-
end
|
68
|
-
|
69
|
-
def request_to_subset(msg, args, *recipients)
|
70
|
-
responses = {}
|
71
|
-
call('plastic.hub.requestToSubset', self.app_id.to_s, msg.to_s, args,
|
72
|
-
recipients.collect{ |id| id.to_s }).each do |app_id, response|
|
73
|
-
responses[URI.parse(app_id)] = response
|
74
|
-
end
|
75
|
-
|
76
|
-
responses
|
77
|
-
end
|
78
|
-
|
79
|
-
def request_asynch(msg, *args)
|
80
|
-
call_async('plastic.hub.requestAsynch', self.app_id.to_s, msg.to_s, args)
|
81
|
-
end
|
82
|
-
|
83
|
-
def request_to_subset_asynch(msg, args, recipients)
|
84
|
-
call_async('plastic.hub.requestToSubsetAsynch', self.app_id.to_s, msg.to_s, args, recipients.collect{ |id| id.to_s })
|
85
|
-
end
|
86
|
-
|
87
|
-
def call(method_name, *args)
|
88
|
-
begin
|
89
|
-
@hub.call(method_name, *args)
|
90
|
-
rescue ::XMLRPC::FaultException => e
|
91
|
-
puts "XMLRPC Error while calling #{method_name} (#{e.faultCode}): #{e.faultString}"
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
def call_async(method_name, *args)
|
96
|
-
begin
|
97
|
-
@hub.call_async(method_name, *args)
|
98
|
-
rescue ::XMLRPC::FaultException => e
|
99
|
-
puts "XMLRPC Error while calling #{method_name} (#{e.faultCode}): #{e.faultString}"
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
private :initialize_config, :call, :call_async
|
104
|
-
end
|
105
|
-
|
106
|
-
class Full < Base
|
107
|
-
attr_reader :supported_messages, :call_back_url, :xmlrpc_server, :http_server
|
108
|
-
|
109
|
-
def initialize(supported_messages={}, port=8080, mount_point='/RPC2',
|
110
|
-
name=nil, description=nil, icon_url=nil, ivorn=nil, plastic_version=0.5)
|
111
|
-
super(name, description, icon_url, ivorn, plastic_version)
|
112
|
-
|
113
|
-
initialize_core_messages()
|
114
|
-
@supported_messages = @core_messages.merge(supported_messages)
|
115
|
-
|
116
|
-
initialize_xmlrpc_server(port, mount_point)
|
117
|
-
end
|
118
|
-
|
119
|
-
def initialize_core_messages
|
120
|
-
@core_messages = {
|
121
|
-
Messages::TEST_ECHO => Proc.new{ |sender_id, args| args[0] },
|
122
|
-
Messages::INFO_GET_IVORN => Proc.new{ |sender_id, args| self.ivorn.to_s },
|
123
|
-
Messages::INFO_GET_NAME => Proc.new{ |sender_id, args| self.name },
|
124
|
-
Messages::INFO_GET_VERSION => Proc.new{ |sender_id, args| self.plastic_version.to_s },
|
125
|
-
Messages::INFO_GET_ICON_URL => Proc.new{ |sender_id, args| self.icon_url.to_s },
|
126
|
-
Messages::INFO_GET_DESCRIPTION => Proc.new{ |sender_id, args| self.description },
|
127
|
-
Messages::HUB_EVENT_APPLICATION_REGISTERED => Proc.new{ |sender_id, args| '' },
|
128
|
-
Messages::HUB_EVENT_APPLICATION_UNREGISTERED => Proc.new{ |sender_id, args| '' },
|
129
|
-
Messages::HUB_EVENT_HUB_STOPPING => Proc.new{ |sender_id, args| '' }
|
130
|
-
}
|
131
|
-
end
|
132
|
-
|
133
|
-
def initialize_xmlrpc_server(port=8080, mount_point='/RPC2')
|
134
|
-
@xmlrpc_server = ::XMLRPC::WEBrickServlet.new
|
135
|
-
@xmlrpc_server.set_default_handler do |action, *args|
|
136
|
-
sending_app_id = URI.parse(args[0])
|
137
|
-
msg = URI.parse(args[1])
|
138
|
-
msg_args = args[2..-1]
|
139
|
-
|
140
|
-
return false if !self.supported_messages.has_key?(msg) or action != 'perform'
|
141
|
-
self.supported_messages[msg].call(sending_app_id, msg_args)
|
142
|
-
end
|
143
|
-
|
144
|
-
@http_server = ::WEBrick::HTTPServer.new(:Port => port)
|
145
|
-
@http_server.mount(mount_point, @xmlrpc_server)
|
146
|
-
trap('INT'){ @http_server.shutdown }
|
147
|
-
|
148
|
-
@call_back_url = URI::Generic.new('http', nil, @http_server.config[:ServerName], @http_server.config[:Port],
|
149
|
-
nil, mount_point,
|
150
|
-
nil, nil, nil, false)
|
151
|
-
|
152
|
-
@server_thread = Thread.new { @http_server.start }
|
153
|
-
end
|
154
|
-
|
155
|
-
def register
|
156
|
-
@app_id = call('plastic.hub.registerXMLRPC', self.name,
|
157
|
-
self.supported_messages.keys.collect{ |msg| msg.to_s }, self.call_back_url.to_s)
|
158
|
-
end
|
159
|
-
|
160
|
-
def wait_for_requests
|
161
|
-
@server_thread.join
|
162
|
-
end
|
163
|
-
|
164
|
-
def shutdown
|
165
|
-
self.unregister
|
166
|
-
self.http_server.shutdown
|
167
|
-
end
|
168
|
-
|
169
|
-
private :initialize_core_messages, :initialize_xmlrpc_server
|
170
|
-
end
|
171
|
-
|
172
|
-
end
|
173
|
-
end
|
174
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
module VORuby
|
2
|
-
module Plastic
|
3
|
-
module Messages
|
4
|
-
PREFIX = 'ivo://votech.org'
|
5
|
-
|
6
|
-
# Core messages
|
7
|
-
TEST_ECHO = URI.parse("#{PREFIX}/test/echo")
|
8
|
-
INFO_GET_IVORN = URI.parse("#{PREFIX}/info/getIVORN")
|
9
|
-
INFO_GET_NAME = URI.parse("#{PREFIX}/info/getName")
|
10
|
-
INFO_GET_VERSION = URI.parse("#{PREFIX}/info/getVersion")
|
11
|
-
INFO_GET_ICON_URL = URI.parse("#{PREFIX}/info/getIconURL")
|
12
|
-
INFO_GET_DESCRIPTION = URI.parse("#{PREFIX}/info/getDescription")
|
13
|
-
HUB_EVENT_APPLICATION_REGISTERED = URI.parse("#{PREFIX}/hub/event/ApplicationRegistered")
|
14
|
-
HUB_EVENT_APPLICATION_UNREGISTERED = URI.parse("#{PREFIX}/hub/event/ApplicationUnregistered")
|
15
|
-
HUB_EVENT_HUB_STOPPING = URI.parse("#{PREFIX}/hub/event/HubStopping")
|
16
|
-
CORE_MESSAGES = [TEST_ECHO,
|
17
|
-
INFO_GET_IVORN, INFO_GET_NAME, INFO_GET_VERSION, INFO_GET_ICON_URL, INFO_GET_DESCRIPTION,
|
18
|
-
HUB_EVENT_APPLICATION_REGISTERED, HUB_EVENT_APPLICATION_UNREGISTERED, HUB_EVENT_HUB_STOPPING]
|
19
|
-
|
20
|
-
# Agreed messages
|
21
|
-
VOTABLE_LOAD = URI.parse("#{PREFIX}/votable/load")
|
22
|
-
VOTABLE_LOAD_FROM_URL = URI.parse("#{PREFIX}/votable/loadFromURL")
|
23
|
-
VOTABLE_SHOW_OBJECTS = URI.parse("#{PREFIX}/votable/showObjects")
|
24
|
-
|
25
|
-
# Image related messages
|
26
|
-
FITS_IMAGE_LOAD_FROM_URL = URI.parse("#{PREFIX}/fits/image/loadFromURL")
|
27
|
-
SKY_POINTS_AT_COORDS = URI.parse("#{PREFIX}/sky/pointsAtCoords")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
require 'voruby/plastic/applications'
|
@@ -1,55 +0,0 @@
|
|
1
|
-
require 'voruby/resources/conesearch/loader'
|
2
|
-
|
3
|
-
require 'voruby/resources/voresource/voresource_v0_9'
|
4
|
-
require 'voruby/resources/vodataservice/vodataservice_v0_4'
|
5
|
-
|
6
|
-
include VORuby::Resources::VOResource::V0_9
|
7
|
-
include VORuby::Resources::VODataService::V0_4
|
8
|
-
|
9
|
-
module VORuby
|
10
|
-
module Resources
|
11
|
-
module ConeSearch
|
12
|
-
module V0_2
|
13
|
-
|
14
|
-
# Forward declarations
|
15
|
-
class ConeSearchType < CapabilityType; end
|
16
|
-
class ConeSearch < ConeSearchType; end
|
17
|
-
class MaxRecords; end
|
18
|
-
class MaxSR; end
|
19
|
-
class Verbosity; end
|
20
|
-
|
21
|
-
# The capabilities of a Cone Search implementation. It includes
|
22
|
-
# the listing of the columns that appear in image query
|
23
|
-
# output VOTable and Cone Search-specific metadata.
|
24
|
-
class ConeSearch; end
|
25
|
-
class ConeSearchType
|
26
|
-
object_node :max_sr, 'MaxSR', :class => MaxSR, :optional => false
|
27
|
-
object_node :max_records, 'MaxRecords', :class => MaxRecords, :optional => false
|
28
|
-
object_node :verbosity, 'Verbosity', :class => Verbosity, :optional => false
|
29
|
-
end
|
30
|
-
|
31
|
-
# The largest number of records that the service will return.
|
32
|
-
class MaxRecords
|
33
|
-
include XML::Mapping
|
34
|
-
|
35
|
-
numeric_node :value, '', :optional => false
|
36
|
-
end
|
37
|
-
|
38
|
-
# The largest search radius, in degrees, that will be accepted by the service without returning an error condition.
|
39
|
-
class MaxSR
|
40
|
-
include XML::Mapping
|
41
|
-
|
42
|
-
numeric_node :value, '', :optional => false
|
43
|
-
end
|
44
|
-
|
45
|
-
# True if the service supports the VERB keyword; false, otherwise.
|
46
|
-
class Verbosity
|
47
|
-
include XML::Mapping
|
48
|
-
|
49
|
-
boolean_node :value, '', 'true', 'false', :optional => false
|
50
|
-
end
|
51
|
-
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
require 'voruby/resources/conesearch/loader'
|
2
|
-
|
3
|
-
require 'voruby/resources/voresource/voresource_v0_10'
|
4
|
-
require 'voruby/resources/vodataservice/vodataservice_v0_5'
|
5
|
-
|
6
|
-
include VORuby::Resources::VOResource::V0_10
|
7
|
-
include VORuby::Resources::VODataService::V0_5
|
8
|
-
|
9
|
-
module VORuby
|
10
|
-
module Resources
|
11
|
-
module ConeSearch
|
12
|
-
module V0_3
|
13
|
-
|
14
|
-
# Forward declarations
|
15
|
-
class ConeSearch < TabularSkyService; end
|
16
|
-
class CSCapRestriction < Capability; end
|
17
|
-
class ConeSearchCapability < CSCapRestriction; end
|
18
|
-
|
19
|
-
# A standard service that returns catalog entries with a
|
20
|
-
# position falling within a cone on the sky (given by a position
|
21
|
-
# and a radius).
|
22
|
-
class ConeSearch
|
23
|
-
# a description of how this particular ConeSearch service behaves
|
24
|
-
object_node :capability, 'capability', :class => ConeSearchCapability, :optional => false
|
25
|
-
end
|
26
|
-
|
27
|
-
# An abstract capability that sets the standardURL to the ConeSearch standard definition.
|
28
|
-
class CSCapRestriction
|
29
|
-
object_node :standard_id, '@standardID', :class => IdentifierURI, :optional => true
|
30
|
-
object_node :standard_url, '@standardURL', :class => AnyURI, :optional => true,
|
31
|
-
:default_value => 'http://www.us-vo.org/metadata/conesearch.html'
|
32
|
-
end
|
33
|
-
|
34
|
-
# The capabilities of a Cone Search implementation. It includes
|
35
|
-
# the listing of the columns that appear in image query
|
36
|
-
# output VOTable and Cone Search-specific metadata.
|
37
|
-
class ConeSearchCapability
|
38
|
-
# the largest search radius, in degrees, that will be accepted by the service without returning an error condition
|
39
|
-
numeric_node :max_sr, 'maxSR', :optional => false
|
40
|
-
# the largest number of records that the service will return
|
41
|
-
numeric_node :max_records, 'maxRecords', :optional => false
|
42
|
-
|
43
|
-
# true if the service supports the VERB keyword; false, otherwise
|
44
|
-
boolean_node :verbosity, 'verbosity', 'true', 'false', :optional => false
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'voruby/resources/conesearch/loader'
|
2
|
-
|
3
|
-
require 'voruby/resources/voresource/voresource_v1_0'
|
4
|
-
require 'voruby/resources/vodataservice/vodataservice_v1_0'
|
5
|
-
|
6
|
-
include VORuby::Resources::VOResource::V1_0
|
7
|
-
include VORuby::Resources::VODataService::V1_0
|
8
|
-
|
9
|
-
module VORuby
|
10
|
-
module Resources
|
11
|
-
module ConeSearch
|
12
|
-
module V1_0
|
13
|
-
|
14
|
-
# Forward declarations
|
15
|
-
class CSCapRestriction < Capability; end
|
16
|
-
class ConeSearch < CSCapRestriction; end
|
17
|
-
class Query; end
|
18
|
-
|
19
|
-
# An abstract capability that fixes the standardID to the IVOA ID for the ConeSearch standard.
|
20
|
-
class CSCapRestriction
|
21
|
-
text_node :description, 'description', :optional => true
|
22
|
-
|
23
|
-
object_node :standard_id, '@standardID', :class => IdentifierURI, :optional => false,
|
24
|
-
:default_value => 'ivo://ivoa.net/std/ConeSearch'
|
25
|
-
|
26
|
-
array_node :validation_levels, 'validationLevel', :class => Validation, :optional => true, :default_value => []
|
27
|
-
array_node :interfaces, 'interface', :unmarshaller => $InterfaceUnmarshaller, :optional => true, :default_value => []
|
28
|
-
end
|
29
|
-
|
30
|
-
# The capabilities of a Cone Search implementation. It includes
|
31
|
-
# the listing of the columns that appear in image query
|
32
|
-
# output VOTable and Cone Search-specific metadata.
|
33
|
-
class ConeSearch
|
34
|
-
# the largest search radius, in degrees, that will be
|
35
|
-
# accepted by the service without returning an error
|
36
|
-
# condition
|
37
|
-
numeric_node :max_sr, 'maxSR', :optional => false
|
38
|
-
# the largest number of records that the service will return
|
39
|
-
numeric_node :max_records, 'maxRecords', :optional => false
|
40
|
-
|
41
|
-
# true if the service supports the VERB keyword; false, otherwise
|
42
|
-
boolean_node :verbosity, 'verbosity', 'true', 'false', :optional => false
|
43
|
-
|
44
|
-
# a query that will result in at least on matched record that can be used to test the service
|
45
|
-
object_node :test_query, 'testQuery', :class => Query
|
46
|
-
end
|
47
|
-
|
48
|
-
# A query to be sent to the service.
|
49
|
-
class Query
|
50
|
-
include XML::Mapping
|
51
|
-
|
52
|
-
# the right ascension of the search cone's center in decimal degree
|
53
|
-
numeric_node :ra, 'ra', :optional => false
|
54
|
-
# the declination of the search cone's center in decimal degrees
|
55
|
-
numeric_node :dec, 'dec', :optional => false
|
56
|
-
# the radius of the search cone in decimal degrees
|
57
|
-
numeric_node :sr, 'sr', :optional => false
|
58
|
-
# the verbosity level to use where 1 means the bare minimum set of columns and 3 means the full set of
|
59
|
-
# available columns.
|
60
|
-
numeric_node :verb, 'verb', :optional => true
|
61
|
-
|
62
|
-
# the catalog to query
|
63
|
-
text_node :catalog, 'catalog', :optional => true
|
64
|
-
# any extra (non-standard) parameters that must be provided (apart from what is part of base URL given
|
65
|
-
# by the accessURL element).
|
66
|
-
text_node :extras, 'extras', :optional => true
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
70
|
-
end
|
71
|
-
end
|
72
|
-
end
|