riddl 0.99.266 → 0.100.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.
- checksums.yaml +4 -4
- data/lib/ruby/riddl/server.rb +50 -149
- data/riddl.gemspec +2 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c102b4a4f29887b96b6a662b8360be51afe2e50
|
4
|
+
data.tar.gz: 5d7849b43316dc94506af325f1c00a35822dbd61
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e68ae727140620b7222d3bb4d4f117e4d73d78bc15cd69e2df93359c0940b2c69bffff26d54a791f0f1b9c8b8f26a0e76fd4f0b3cc0976f7ffe9d366c04c251f
|
7
|
+
data.tar.gz: e670b312fe3a8990ded62151f15caa1674b20201eef3d652d73d6d181d59fa014179d6bf456e2be89be454d64c900eba13caf1dd2a7bdd6fe2e384a1d29d8b0d
|
data/lib/ruby/riddl/server.rb
CHANGED
@@ -11,6 +11,7 @@ require File.expand_path(File.dirname(__FILE__) + '/wrapper')
|
|
11
11
|
require File.expand_path(File.dirname(__FILE__) + '/utils/description')
|
12
12
|
|
13
13
|
require 'optparse'
|
14
|
+
require 'daemonite'
|
14
15
|
require 'stringio'
|
15
16
|
require 'rack/content_length'
|
16
17
|
require 'rack/chunked'
|
@@ -39,80 +40,60 @@ module Riddl
|
|
39
40
|
end
|
40
41
|
end #}}}
|
41
42
|
|
42
|
-
|
43
|
-
:bind => '0.0.0.0',
|
44
|
-
:host => 'localhost',
|
45
|
-
:port => 9292,
|
46
|
-
:secure => false,
|
47
|
-
:mode => :debug,
|
48
|
-
:verbose => false,
|
49
|
-
:http_only => false,
|
50
|
-
:basepath => File.expand_path(File.dirname($0)),
|
51
|
-
:pidfile => File.basename($0,'.rb') + '.pid',
|
52
|
-
:conffile => File.basename($0,'.rb') + '.conf',
|
53
|
-
:runtime_options => [],
|
54
|
-
:cmdl_parsing => true,
|
55
|
-
:cmdl_operation => 'start'
|
56
|
-
}
|
43
|
+
include Daemonism
|
57
44
|
|
58
|
-
|
59
|
-
########################################################################################################################
|
60
|
-
# status and info
|
61
|
-
########################################################################################################################
|
62
|
-
pid = File.read(@riddl_opts[:basepath] + '/' + @riddl_opts[:pidfile]).to_i rescue pid = -1
|
63
|
-
status = Proc.new do
|
64
|
-
begin
|
65
|
-
Process.getpgid pid
|
66
|
-
true
|
67
|
-
rescue Errno::ESRCH
|
68
|
-
false
|
69
|
-
end
|
70
|
-
end
|
71
|
-
if @riddl_opts[:cmdl_operation] == "info" && status.call == false
|
72
|
-
puts "Server (#{@riddl_opts[:url]}) not running"
|
73
|
-
exit
|
74
|
-
end
|
75
|
-
if @riddl_opts[:cmdl_operation] == "info" && status.call == true
|
76
|
-
puts "Server (#{@riddl_opts[:url]}) running as #{pid}"
|
77
|
-
begin
|
78
|
-
stats = `ps -o "vsz,rss,lstart,time" -p #{pid}`.split("\n")[1].strip.split(/ +/)
|
79
|
-
puts "Virtual: #{"%0.2f" % (stats[0].to_f/1024)} MiB"
|
80
|
-
puts "Resident: #{"%0.2f" % (stats[1].to_f/1024)} MiB"
|
81
|
-
puts "Started: #{stats[2..-2].join(' ')}"
|
82
|
-
puts "CPU Time: #{stats.last}"
|
83
|
-
rescue
|
84
|
-
end
|
85
|
-
exit
|
86
|
-
end
|
87
|
-
if %w{start}.include?(@riddl_opts[:cmdl_operation]) && status.call == true
|
88
|
-
puts "Server (#{@riddl_opts[:url]}) already started"
|
89
|
-
exit
|
90
|
-
end
|
45
|
+
attr_reader :riddl_log, :riddl_method, :riddl_pinfo, :riddl_status
|
91
46
|
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
47
|
+
def initialize(riddl,opts={},&blk)# {{{
|
48
|
+
@riddl_opts = DAEMONISM_DEFAULT_OPTS.merge({
|
49
|
+
:bind => '0.0.0.0',
|
50
|
+
:host => 'localhost',
|
51
|
+
:port => 9292,
|
52
|
+
:secure => false,
|
53
|
+
:verbose => false,
|
54
|
+
:http_only => false,
|
55
|
+
:runtime_opts => [
|
56
|
+
["--port [PORT]", "-p [PORT]", "Specify http port.", ->(p){
|
57
|
+
@riddl_opts[:port] = p.to_i
|
58
|
+
@riddl_opts[:pidfile] = @riddl_opts[:pidfile].gsub(/\.pid/,'') + '-' + @riddl_opts[:port].to_s + '.pid'
|
59
|
+
}],
|
60
|
+
["--http-only", "-s", "Only http, no other protocols.", ->(){ @riddl_opts[:http_only] = true }]
|
61
|
+
],
|
62
|
+
:runtime_cmds => [],
|
63
|
+
:runtime_proc => Proc.new { |opts|
|
64
|
+
@riddl_opts[:cmdl_info] = @riddl_opts[:url] = (@riddl_opts[:secure] ? 'https://' : 'http://') + @riddl_opts[:host] + ':' + @riddl_opts[:port].to_s
|
65
|
+
}
|
66
|
+
}).merge(opts)
|
67
|
+
|
68
|
+
@riddl_logger = nil
|
69
|
+
@riddl_process_out = true
|
70
|
+
@riddl_cross_site_xhr = false
|
71
|
+
@accessible_description = false
|
72
|
+
@riddl_description_string = ''
|
73
|
+
@riddl_paths = []
|
74
|
+
|
75
|
+
@riddl_at_exit = nil
|
76
|
+
|
77
|
+
@riddl_interfaces = {}
|
78
|
+
|
79
|
+
daemonism @riddl_opts, &blk
|
108
80
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
81
|
+
@riddl = Riddl::Wrapper.new(riddl,@accessible_description)
|
82
|
+
if @riddl.description?
|
83
|
+
raise SpecificationError, 'RIDDL description does not conform to specification' unless @riddl.validate!
|
84
|
+
@riddl_description_string = @riddl.description.xml
|
85
|
+
elsif @riddl.declaration?
|
86
|
+
raise SpecificationError, 'RIDDL declaration does not conform to specification' unless @riddl.validate!
|
87
|
+
@riddl_description_string = @riddl.declaration.description_xml
|
88
|
+
else
|
89
|
+
raise SpecificationError, 'Not a RIDDL file'
|
114
90
|
end
|
115
91
|
|
92
|
+
@riddl.load_necessary_handlers!
|
93
|
+
@riddl_paths = @riddl.paths
|
94
|
+
end# }}}
|
95
|
+
|
96
|
+
def loop! #{{{
|
116
97
|
app = Rack::Builder.new self
|
117
98
|
unless @riddl_logger.nil?
|
118
99
|
app.use Rack::CommonLogger, @riddl_logger
|
@@ -124,20 +105,12 @@ module Riddl
|
|
124
105
|
:Port => @riddl_opts[:port],
|
125
106
|
:environment => @riddl_opts[:verbose] ? 'deployment' : 'none',
|
126
107
|
:server => 'thin',
|
127
|
-
:pid => File.expand_path(@riddl_opts[:basepath] + '/' + @riddl_opts[:pidfile]),
|
128
108
|
:signals => false
|
129
109
|
)
|
130
|
-
|
131
|
-
puts "Server (#{@riddl_opts[:url]}) started as PID:#{Process.pid}"
|
132
110
|
if @riddl_opts[:custom_protocol] && !@riddl_opts[:http_only]
|
133
111
|
@riddl_opts[:custom_protocol] = @riddl_opts[:custom_protocol].new(@riddl_opts)
|
134
112
|
puts @riddl_opts[:custom_protocol].support if @riddl_opts[:custom_protocol].support
|
135
113
|
end
|
136
|
-
Process.daemon(@riddl_opts[:basepath]) unless @riddl_opts[:verbose]
|
137
|
-
Dir.chdir(@riddl_opts[:basepath])
|
138
|
-
::Kernel::at_exit do
|
139
|
-
@riddl_at_exit.call if @riddl_at_exit
|
140
|
-
end
|
141
114
|
begin
|
142
115
|
EM.run do
|
143
116
|
if @riddl_opts[:secure]
|
@@ -169,78 +142,6 @@ module Riddl
|
|
169
142
|
end
|
170
143
|
end #}}}
|
171
144
|
|
172
|
-
attr_reader :riddl_log, :riddl_method, :riddl_pinfo, :riddl_status
|
173
|
-
|
174
|
-
def initialize(riddl,opts={},&blk)# {{{
|
175
|
-
@riddl_opts = {}
|
176
|
-
@riddl_opts = OPTS.merge(opts)
|
177
|
-
|
178
|
-
if File.exists?(@riddl_opts[:basepath] + '/' + @riddl_opts[:conffile])
|
179
|
-
@riddl_opts.merge!(Psych::load_file(@riddl_opts[:basepath] + '/' + @riddl_opts[:conffile]))
|
180
|
-
end
|
181
|
-
|
182
|
-
########################################################################################################################
|
183
|
-
# parse arguments
|
184
|
-
########################################################################################################################
|
185
|
-
if @riddl_opts[:cmdl_parsing]
|
186
|
-
@riddl_opts[:cmdl_operation] = "start"
|
187
|
-
ARGV.options { |opt|
|
188
|
-
opt.summary_indent = ' ' * 4
|
189
|
-
opt.banner = "Usage:\n#{opt.summary_indent}ruby server.rb [options] start|stop|restart|info" + (@riddl_opts[:runtime_options].length > 0 ? '|' : '') + @riddl_opts[:runtime_options].map{|ro| ro[0]}.join('|') + "\n"
|
190
|
-
opt.on("Options:")
|
191
|
-
opt.on("--port [PORT]", "-p [PORT]", "Specify http port.") do |p|
|
192
|
-
@riddl_opts[:port] = p.to_i
|
193
|
-
@riddl_opts[:pidfile] = @riddl_opts[:pidfile].gsub(/\.pid/,'') + '-' + @riddl_opts[:port].to_s + '.pid'
|
194
|
-
end
|
195
|
-
opt.on("--http-only", "-s", "Only http, no other protocols.") { @riddl_opts[:http_only] = true }
|
196
|
-
opt.on("--verbose", "-v", "Do not daemonize. Write ouput to console.") { @riddl_opts[:verbose] = true }
|
197
|
-
opt.on("--help", "-h", "This text.") { puts opt; exit }
|
198
|
-
opt.separator(opt.summary_indent + "start|stop|restart|info".ljust(opt.summary_width+1) + "Do operation start, stop, restart or get information.")
|
199
|
-
@riddl_opts[:runtime_options].each do |ro|
|
200
|
-
opt.separator(opt.summary_indent + ro[0].ljust(opt.summary_width+1) + ro[1])
|
201
|
-
end
|
202
|
-
opt.parse!
|
203
|
-
}
|
204
|
-
unless (%w{start stop restart info} + @riddl_opts[:runtime_options].map{|ro| ro[0] }).include?(ARGV[0])
|
205
|
-
puts ARGV.options
|
206
|
-
exit
|
207
|
-
end
|
208
|
-
@riddl_opts[:cmdl_operation] = ARGV[0]
|
209
|
-
end
|
210
|
-
########################################################################################################################
|
211
|
-
@riddl_opts[:url] = (@riddl_opts[:secure] ? 'https://' : 'http://') + @riddl_opts[:host] + ':' + @riddl_opts[:port].to_s
|
212
|
-
|
213
|
-
@riddl_logger = nil
|
214
|
-
@riddl_process_out = true
|
215
|
-
@riddl_cross_site_xhr = false
|
216
|
-
@accessible_description = false
|
217
|
-
@riddl_description_string = ''
|
218
|
-
@riddl_paths = []
|
219
|
-
|
220
|
-
@riddl_at_exit = nil
|
221
|
-
|
222
|
-
@riddl_interfaces = {}
|
223
|
-
instance_exec(@riddl_opts,&blk) if block_given?
|
224
|
-
|
225
|
-
@riddl = Riddl::Wrapper.new(riddl,@accessible_description)
|
226
|
-
if @riddl.description?
|
227
|
-
raise SpecificationError, 'RIDDL description does not conform to specification' unless @riddl.validate!
|
228
|
-
@riddl_description_string = @riddl.description.xml
|
229
|
-
elsif @riddl.declaration?
|
230
|
-
raise SpecificationError, 'RIDDL declaration does not conform to specification' unless @riddl.validate!
|
231
|
-
@riddl_description_string = @riddl.declaration.description_xml
|
232
|
-
else
|
233
|
-
raise SpecificationError, 'Not a RIDDL file'
|
234
|
-
end
|
235
|
-
|
236
|
-
@riddl.load_necessary_handlers!
|
237
|
-
@riddl_paths = @riddl.paths
|
238
|
-
end# }}}
|
239
|
-
|
240
|
-
def at_exit(&blk)
|
241
|
-
@riddl_at_exit = blk
|
242
|
-
end
|
243
|
-
|
244
145
|
def call(env)# {{{
|
245
146
|
dup.__http_call(env)
|
246
147
|
end# }}}
|
data/riddl.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = "riddl"
|
3
|
-
s.version = "0.
|
3
|
+
s.version = "0.100.0"
|
4
4
|
s.platform = Gem::Platform::RUBY
|
5
5
|
s.license = "LGPL-3.0"
|
6
6
|
s.summary = "restful interface description and declaration language: tools and client/server libs"
|
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
|
24
24
|
s.required_ruby_version = '>=2.2.0'
|
25
25
|
|
26
|
+
s.add_runtime_dependency 'daemonite', '~>0.2'
|
26
27
|
s.add_runtime_dependency 'typhoeus', '~>1.3'
|
27
28
|
s.add_runtime_dependency 'xml-smart', '>=0.3.6', '~>0'
|
28
29
|
s.add_runtime_dependency 'rdf-smart', '>=0.0.160', '~>0'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: riddl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.100.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juergen 'eTM' Mangler
|
@@ -10,8 +10,22 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: tools
|
12
12
|
cert_chain: []
|
13
|
-
date: 2018-
|
13
|
+
date: 2018-04-24 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: daemonite
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.2'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0.2'
|
15
29
|
- !ruby/object:Gem::Dependency
|
16
30
|
name: typhoeus
|
17
31
|
requirement: !ruby/object:Gem::Requirement
|