soar_sr 0.1.3
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 +7 -0
- data/.gitignore +10 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +0 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +41 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/soar_sr/associations.rb +125 -0
- data/lib/soar_sr/contacts.rb +77 -0
- data/lib/soar_sr/domain_perspectives.rb +164 -0
- data/lib/soar_sr/failure_error.rb +3 -0
- data/lib/soar_sr/handler.rb +56 -0
- data/lib/soar_sr/juddi_provider.rb +172 -0
- data/lib/soar_sr/search.rb +104 -0
- data/lib/soar_sr/service_components.rb +92 -0
- data/lib/soar_sr/service_definitions.rb +39 -0
- data/lib/soar_sr/service_registry.rb +71 -0
- data/lib/soar_sr/services.rb +157 -0
- data/lib/soar_sr/teams.rb +20 -0
- data/lib/soar_sr/validation_error.rb +4 -0
- data/lib/soar_sr/validator.rb +93 -0
- data/lib/soar_sr/version.rb +3 -0
- data/lib/soar_sr.rb +19 -0
- data/soar_sr.gemspec +27 -0
- metadata +128 -0
@@ -0,0 +1,93 @@
|
|
1
|
+
require 'jsender'
|
2
|
+
require 'soap4juddi'
|
3
|
+
|
4
|
+
module SoarSr
|
5
|
+
class Validator
|
6
|
+
def present?(field)
|
7
|
+
not (field.nil? or (field.is_a?(String) and field.strip == ""))
|
8
|
+
end
|
9
|
+
|
10
|
+
def provided?(field, label)
|
11
|
+
raise ValidationError, "no #{label} provided" if field.nil?
|
12
|
+
raise ValidationError, "invalid #{label} provided" if (field.is_a?(String) and field.strip == "")
|
13
|
+
true
|
14
|
+
end
|
15
|
+
|
16
|
+
def key_provided?(field, key, label)
|
17
|
+
raise ValidationError, "no #{label} provided" if field.nil? or field[key].nil?
|
18
|
+
raise ValidationError, "invalid #{label} provided" if ((not field.is_a? Hash) or (field[key].strip == ""))
|
19
|
+
true
|
20
|
+
end
|
21
|
+
|
22
|
+
|
23
|
+
def length_at_least?(field, min, label)
|
24
|
+
raise ValidationError, "invalid #{label} provided" if (field.size < 4)
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
def credentials?(credentials)
|
29
|
+
provided?(credentials['username'], 'username') and provided?(credentials['password'], 'password')
|
30
|
+
end
|
31
|
+
|
32
|
+
def authorized?(result)
|
33
|
+
raise ValidationError, 'not authorized' if (notifications_include?(result, 'E_authTokenRequired')) or
|
34
|
+
(notifications_include?(result, 'E_keyUnavailable')) or
|
35
|
+
(notifications_include?(result, 'E_userMismatch')) or
|
36
|
+
(notifications_include?(result, 'not authorized'))
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def identifier?(result, label)
|
41
|
+
raise ValidationError, "invalid #{element} identifier provided" if notifications_include?(result, 'E_invalidKeyPassed')
|
42
|
+
true
|
43
|
+
end
|
44
|
+
|
45
|
+
def uri?(uri)
|
46
|
+
raise ValidationError, 'invalid URI' if not (uri =~ URI::DEFAULT_PARSER.regexp[:UNSAFE]).nil?
|
47
|
+
true
|
48
|
+
end
|
49
|
+
|
50
|
+
def meta?(meta)
|
51
|
+
raise ValidationError, 'invalid meta' if not meta.is_a?(Hash)
|
52
|
+
true
|
53
|
+
end
|
54
|
+
|
55
|
+
def type?(type)
|
56
|
+
['domains', 'services', 'teams', 'service_components'].include?(type)
|
57
|
+
end
|
58
|
+
|
59
|
+
def wadl?(definition)
|
60
|
+
raise ValidationError, 'invalid service definition provided' if not definition.include?("wadl")
|
61
|
+
true
|
62
|
+
end
|
63
|
+
|
64
|
+
def contact?(contact)
|
65
|
+
error = 'invalid contact details provided'
|
66
|
+
raise ValidationError, error if not contact.is_a?(Hash)
|
67
|
+
raise ValidationError, error if contact['name'].nil? or contact['name'].strip == ""
|
68
|
+
true
|
69
|
+
end
|
70
|
+
|
71
|
+
def type_registered?(element, type)
|
72
|
+
return is_registered?(@registry.domain_perspectives.domain_perspective_registered?(element)) if (type == 'domain perspective')
|
73
|
+
return is_registered?(@registry.service_components.service_component_registered?(element)) if (type == 'service component')
|
74
|
+
return is_registered?(@registry.services.service_registered?(element)) if (type == 'service')
|
75
|
+
return is_registered?(@registry.teams.team_registered?(element)) if (type == 'team')
|
76
|
+
false
|
77
|
+
end
|
78
|
+
|
79
|
+
def not_registered?(element, type)
|
80
|
+
raise ValidationError, "#{type} already exists" if type_registered?(element, type)
|
81
|
+
true
|
82
|
+
end
|
83
|
+
|
84
|
+
def any_registered?(domain_perspective)
|
85
|
+
raise ValidationError, "unknown domain perspective provided" if (not type_registered?(domain_perspective, 'domain perspective')) and (not type_registered?(domain_perspective, 'team'))
|
86
|
+
end
|
87
|
+
|
88
|
+
def registered?(element, type)
|
89
|
+
raise ValidationError, "unknown #{type} provided" if not type_registered?(element, type)
|
90
|
+
true
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
data/lib/soar_sr.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require "soar_sr/version"
|
2
|
+
require "soar_sr/validation_error"
|
3
|
+
require "soar_sr/validator"
|
4
|
+
require "soar_sr/handler"
|
5
|
+
require "soar_sr/services"
|
6
|
+
require "soar_sr/service_components"
|
7
|
+
require "soar_sr/service_definitions"
|
8
|
+
require "soar_sr/domain_perspectives"
|
9
|
+
require "soar_sr/teams"
|
10
|
+
require "soar_sr/search"
|
11
|
+
require "soar_sr/contacts"
|
12
|
+
require "soar_sr/associations"
|
13
|
+
require "soar_sr/juddi_provider"
|
14
|
+
require "soar_sr/service_registry"
|
15
|
+
require 'jsender'
|
16
|
+
|
17
|
+
module SoarSr
|
18
|
+
DOMAIN_TYPES = ['domains', 'services', 'service-components', 'teams'] unless defined? DOMAIN_TYPES; DOMAIN_TYPES.freeze
|
19
|
+
end
|
data/soar_sr.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'soar_sr/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "soar_sr"
|
8
|
+
spec.version = SoarSr::VERSION
|
9
|
+
spec.authors = ["Ernst van Graan"]
|
10
|
+
spec.email = ["ernst.van.graan@hetzner.co.za"]
|
11
|
+
|
12
|
+
spec.summary = %q{Implementation of the Hetzner Service Registry specification, backed by jUDDI}
|
13
|
+
spec.description = %q{Implementation of the Hetzner Service Registry specification, backed by jUDDI}
|
14
|
+
# spec.homepage = "TODO: Put your gem's website or public repo URL here."
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
spec.required_ruby_version = ['>=2.0.0']
|
22
|
+
|
23
|
+
spec.add_development_dependency "persistent-cache"
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "rspec"
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,128 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: soar_sr
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.3
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ernst van Graan
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-12-14 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: persistent-cache
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.10'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.10'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
description: Implementation of the Hetzner Service Registry specification, backed
|
70
|
+
by jUDDI
|
71
|
+
email:
|
72
|
+
- ernst.van.graan@hetzner.co.za
|
73
|
+
executables: []
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".gitignore"
|
78
|
+
- ".rspec"
|
79
|
+
- ".travis.yml"
|
80
|
+
- CODE_OF_CONDUCT.md
|
81
|
+
- Gemfile
|
82
|
+
- LICENSE.txt
|
83
|
+
- README.md
|
84
|
+
- Rakefile
|
85
|
+
- bin/console
|
86
|
+
- bin/setup
|
87
|
+
- lib/soar_sr.rb
|
88
|
+
- lib/soar_sr/associations.rb
|
89
|
+
- lib/soar_sr/contacts.rb
|
90
|
+
- lib/soar_sr/domain_perspectives.rb
|
91
|
+
- lib/soar_sr/failure_error.rb
|
92
|
+
- lib/soar_sr/handler.rb
|
93
|
+
- lib/soar_sr/juddi_provider.rb
|
94
|
+
- lib/soar_sr/search.rb
|
95
|
+
- lib/soar_sr/service_components.rb
|
96
|
+
- lib/soar_sr/service_definitions.rb
|
97
|
+
- lib/soar_sr/service_registry.rb
|
98
|
+
- lib/soar_sr/services.rb
|
99
|
+
- lib/soar_sr/teams.rb
|
100
|
+
- lib/soar_sr/validation_error.rb
|
101
|
+
- lib/soar_sr/validator.rb
|
102
|
+
- lib/soar_sr/version.rb
|
103
|
+
- soar_sr.gemspec
|
104
|
+
homepage:
|
105
|
+
licenses:
|
106
|
+
- MIT
|
107
|
+
metadata: {}
|
108
|
+
post_install_message:
|
109
|
+
rdoc_options: []
|
110
|
+
require_paths:
|
111
|
+
- lib
|
112
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: 2.0.0
|
117
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - ">="
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0'
|
122
|
+
requirements: []
|
123
|
+
rubyforge_project:
|
124
|
+
rubygems_version: 2.4.8
|
125
|
+
signing_key:
|
126
|
+
specification_version: 4
|
127
|
+
summary: Implementation of the Hetzner Service Registry specification, backed by jUDDI
|
128
|
+
test_files: []
|