riddl 0.127 → 0.129

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0695959f6c714b4aca4c11debdcd59d22fefbbe6c11f69400c2b0ebd252d43fc'
4
- data.tar.gz: cabfaef2d61eb9cd5010af81f891684dce71f761255e65531ef146362b6b884a
3
+ metadata.gz: 6316fd15d163902d1742764b42bc4886aaeb270a4957f540c2f617b099c5b15a
4
+ data.tar.gz: 35713bac9ab94975e7aa396966443d54c11b45085ad640280faa9fd6e63225e7
5
5
  SHA512:
6
- metadata.gz: 5d53d1d0a1aba73908811c361dfeed70e79dcec182b5c6c20863e9c1d9e7c5886c022d78dc4f97277c7519cf155a7abbb136a2b79852e64830151b73b53bf6ff
7
- data.tar.gz: 442afaa166e57b02f1d29a262e693c3a5f7843e56fdbe98fe8c77f4087b94c31f58876a5a53eb83565a385e473b1b0263bc4e4a8f936896c1435fa6e0a788cee
6
+ metadata.gz: 268485523d1c71d829e7f9576244d438fd914f89dba9e1c039adf90155e2d0eb2f5bfb784344780f8fd97bc5627579f6ae7174f74629c5632396c438c3bb3137
7
+ data.tar.gz: f80e80903d09ae3c4b756ab3dd75897fb3d4586e02e4c04e0c4ffc852b5b694cd7fc79b76d82d03a4e79a512331d5140ab45a2f5d8394f0482ca0edc306bc882
@@ -5,7 +5,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../lib/ruby/riddl/utils/f
5
5
 
6
6
  class Info < Riddl::Implementation
7
7
  def response
8
- unless File.exists?("instances/#{@r[0]}")
8
+ unless File.exist?("instances/#{@r[0]}")
9
9
  @status = 400
10
10
  return
11
11
  end
@@ -6,7 +6,7 @@ require File.expand_path(File.dirname(__FILE__) + '/../../lib/ruby/riddl/utils/p
6
6
 
7
7
  class Info < Riddl::Implementation
8
8
  def response
9
- unless File.exists?("instances/#{@r[0]}")
9
+ unless File.exist?("instances/#{@r[0]}")
10
10
  @status = 400
11
11
  return
12
12
  end
@@ -12,9 +12,9 @@ key = File.read('flickr.key').strip
12
12
  secret = File.read('flickr.secret').strip
13
13
 
14
14
  ### get frob
15
- if File.exists?('flickr.frob')
15
+ if File.exist?('flickr.frob')
16
16
  frob = File.read('flickr.frob').strip
17
- else
17
+ else
18
18
  method = 'flickr.auth.getFrob'
19
19
  sig = Digest::MD5.hexdigest("#{secret}api_key#{key}method#{method}")
20
20
  status, res = rest.get [
@@ -25,7 +25,7 @@ else
25
25
  raise "no valid frob" unless status == 200
26
26
  frob = XML::Smart::string(res[0].value.read).find('string(/rsp/frob)')
27
27
  File.open('flickr.frob','w'){|f|f.write(frob)}
28
- end
28
+ end
29
29
 
30
30
  ### prepare auth link
31
31
  method = 'flickr.auth.getFrob'
@@ -4,7 +4,7 @@ require '../../../lib/ruby/riddl/client'
4
4
  require 'pp'
5
5
 
6
6
  # no ready for use
7
- unless File.exists?('.flickr.frob')
7
+ unless File.exist?('.flickr.frob')
8
8
  puts "Check the README file and use authenticate.rb."
9
9
  exit
10
10
  end
@@ -24,11 +24,11 @@ key = File.read('.flickr.key').strip
24
24
  secret = File.read('.flickr.secret').strip
25
25
  frob = File.read('.flickr.frob').strip
26
26
 
27
- ### get
28
- if File.exists?('.flickr.token')
27
+ ### get
28
+ if File.exist?('.flickr.token')
29
29
  token = File.read('.flickr.token').strip
30
- else
31
- puts "hmm, there is no token...."
30
+ else
31
+ puts "hmm, there is no token...."
32
32
  method = 'flickr.auth.getToken'
33
33
  sig = Digest::MD5.hexdigest("#{secret}api_key#{key}frob#{frob}method#{method}")
34
34
  status, res = rest.request :get => [
@@ -66,4 +66,4 @@ status, res, headers = rest.get [
66
66
  ]
67
67
  raise "token no longer valid, delete .flickr.token, .flickr.frob then retry authenticate.rb, flickr.rb" unless status == 200
68
68
 
69
- puts "STATUS: #{status} RES:" + res[0].value.read + " HEADERS: #{headers}"
69
+ puts "STATUS: #{status} RES:" + res[0].value.read + " HEADERS: #{headers}"
@@ -4,7 +4,7 @@ require '../../../lib/ruby/riddl/client'
4
4
  require 'pp'
5
5
 
6
6
  # no ready for use
7
- unless File.exists?('.flickr.frob')
7
+ unless File.exist?('.flickr.frob')
8
8
  puts "Check the README file and use authenticate.rb."
9
9
  exit
10
10
  end
@@ -29,11 +29,11 @@ key = File.read('.flickr.key').strip
29
29
  secret = File.read('.flickr.secret').strip
30
30
  frob = File.read('.flickr.frob').strip
31
31
 
32
- ### get
33
- if File.exists?('.flickr.token')
32
+ ### get
33
+ if File.exist?('.flickr.token')
34
34
  token = File.read('.flickr.token').strip
35
- else
36
- puts "hmm, there is no token...."
35
+ else
36
+ puts "hmm, there is no token...."
37
37
  method = 'flickr.auth.getToken'
38
38
  sig = Digest::MD5.hexdigest("#{secret}api_key#{key}frob#{frob}method#{method}")
39
39
  status, res = rest.get [
@@ -76,7 +76,7 @@ status, res = upload.post [
76
76
  Riddl::Parameter::Simple.new("tags", tags),
77
77
  Riddl::Parameter::Simple.new("is_public", is_public),
78
78
  Riddl::Parameter::Simple.new("api_sig", sig)
79
- ]
79
+ ]
80
80
 
81
81
  rsp = XML::Smart::string(res[0].value.read)
82
82
  stat = rsp.find('string(/rsp/@stat)')
@@ -4,7 +4,7 @@ require '../../../lib/ruby/riddl/client'
4
4
  require 'pp'
5
5
 
6
6
  # no ready for use
7
- unless File.exists?('.flickr.frob')
7
+ unless File.exist?('.flickr.frob')
8
8
  puts "Check the README file and use authenticate.rb."
9
9
  exit
10
10
  end
@@ -29,11 +29,11 @@ key = File.read('.flickr.key').strip
29
29
  secret = File.read('.flickr.secret').strip
30
30
  frob = File.read('.flickr.frob').strip
31
31
 
32
- ### get
33
- if File.exists?('.flickr.token')
32
+ ### get
33
+ if File.exist?('.flickr.token')
34
34
  token = File.read('.flickr.token').strip
35
- else
36
- puts "hmm, there is no token...."
35
+ else
36
+ puts "hmm, there is no token...."
37
37
  method = 'flickr.auth.getToken'
38
38
  sig = Digest::MD5.hexdigest("#{secret}api_key#{key}frob#{frob}method#{method}")
39
39
  status, res = rest.get [
@@ -90,7 +90,7 @@ puts "RES:" + res[0].value.read
90
90
  # Riddl::Parameter::Simple.new("tags", tags),
91
91
  # Riddl::Parameter::Simple.new("is_public", is_public),
92
92
  # Riddl::Parameter::Simple.new("api_sig", sig)
93
- #]
93
+ #]
94
94
 
95
95
  #rsp = XML::Smart::string(res[0].value.read)
96
96
  #stat = rsp.find('string(/rsp/@stat)')
@@ -4,9 +4,9 @@ class FlickrHelper
4
4
  def initialize(dir)
5
5
  @api_key = File.read(dir + '/flickr.key').strip
6
6
  @api_secret = File.read(dir + '/flickr.secret').strip
7
- if File.exists?(dir + 'flickr.token')
7
+ if File.exist?(dir + 'flickr.token')
8
8
  @auth_token = File.read(dir + 'flickr.token').strip
9
- else
9
+ else
10
10
  @auth_token = "simulated"
11
11
  end
12
12
  end
@@ -19,10 +19,10 @@ class FlickrHelper
19
19
  if e.class == Riddl::Parameter::Simple
20
20
  if names.empty?
21
21
  sig += "#{e.name}#{e.value}"
22
- else
22
+ else
23
23
  sig += "#{e.name}#{e.value}" if names.include?(e.name)
24
- end
25
- end
24
+ end
25
+ end
26
26
  end
27
27
  Digest::MD5.hexdigest(sig)
28
28
  end
@@ -12,7 +12,7 @@ file_token = File.expand_path(File.dirname(__FILE__) + '/.twitter.token')
12
12
  file_token_secret = File.expand_path(File.dirname(__FILE__) + '/.twitter.token_secret')
13
13
 
14
14
  ### When token and secret already saved, skip this part
15
- if !File.exists?(file_token) && !File.exists?(file_token_secret)
15
+ if !File.exist?(file_token) && !File.exist?(file_token_secret)
16
16
  ### go to request token resource and set necessary role options
17
17
  resource = twitter.resource("/oauth/request_token")
18
18
  params = [
@@ -12,7 +12,7 @@ file_token = File.expand_path(File.dirname(__FILE__) + '/.twitter.token')
12
12
  file_token_secret = File.expand_path(File.dirname(__FILE__) + '/.twitter.token_secret')
13
13
 
14
14
  ### When token and secret already saved, skip this part
15
- if !File.exists?(file_token) && !File.exists?(file_token_secret)
15
+ if !File.exist?(file_token) && !File.exist?(file_token_secret)
16
16
  ### go to request token resource and set necessary role options
17
17
  resource = twitter.resource("/oauth/request_token")
18
18
  params = [
@@ -11,7 +11,7 @@ file_token = File.expand_path(File.dirname(__FILE__) + '/.zotero.token')
11
11
  file_token_secret = File.expand_path(File.dirname(__FILE__) + '/.zotero.token_secret') #}}}
12
12
 
13
13
  ### When token and secret already saved, skip this part #{{{
14
- if !File.exists?(file_token) && !File.exists?(file_token_secret)
14
+ if !File.exist?(file_token) && !File.exist?(file_token_secret)
15
15
  zotero = Riddl::Client.interface("https://www.zotero.org/","zotero.xml")
16
16
 
17
17
  ### go to request token resource and set necessary role options
@@ -95,7 +95,8 @@ module Riddl
95
95
  tmp.write '--' + BOUNDARY + EOL
96
96
  tmp.write 'RIDDL-TYPE: complex' + EOL
97
97
  tmp.write "Content-Disposition: #{mode == :input ? 'form-data' : 'riddl-data'}; name=\"#{r.name}\""
98
- tmp.write r.filename.nil? ? '; filename=""' + EOL : "; filename=\"#{r.filename}\"" + EOL
98
+ #tmp.write r.filename.nil? ? '; filename=""' + EOL : "; filename=\"#{r.filename}\"" + EOL
99
+ tmp.write r.filename.nil? ? EOL : "; filename=\"#{r.filename}\"" + EOL
99
100
  tmp.write 'Content-Transfer-Encoding: binary' + EOL
100
101
  tmp.write 'Content-Type: ' + r.mimetype + r.mimextra + EOL
101
102
  tmp.write EOL
@@ -11,14 +11,14 @@ module Riddl
11
11
  @status = 404
12
12
  return []
13
13
  end
14
- if File.exists?(path)
14
+ if File.exist?(path)
15
15
  __ERB_FILE__ = path
16
16
  rval = ERB.new(File.read(path), 0, "%<>")
17
17
  return Riddl::Parameter::Complex.new("data",MIME::Types.type_for(path)[0].to_s,rval.result(binding))
18
18
  end
19
19
  @status = 404
20
20
  []
21
- end
21
+ end
22
22
  end
23
- end
23
+ end
24
24
  end
@@ -12,7 +12,7 @@ module Riddl
12
12
  @status = 404
13
13
  return []
14
14
  end
15
- if File.exists?(path)
15
+ if File.exist?(path)
16
16
  mtime = File.mtime(path)
17
17
  @headers << Riddl::Header.new("Last-Modified",mtime.httpdate)
18
18
  @headers << Riddl::Header.new("ETag",Digest::MD5.hexdigest(mtime.httpdate))
@@ -87,18 +87,18 @@ module Riddl
87
87
  def each(&block)
88
88
  keys.each do |key|
89
89
  f = @target + '/' + key + '/subscription.xml'
90
- block.call Sub.new(f), key if File.exists? f
90
+ block.call Sub.new(f), key if File.exist? f
91
91
  end
92
92
  end
93
93
 
94
94
  def include?(key)
95
95
  f = @target + '/' + key + '/subscription.xml'
96
- File.exists?(f)
96
+ File.exist?(f)
97
97
  end
98
98
 
99
99
  def [](key)
100
100
  f = @target + '/' + key + '/subscription.xml'
101
- File.exists?(f) ? Sub.new(f) : nil
101
+ File.exist?(f) ? Sub.new(f) : nil
102
102
  end
103
103
 
104
104
  def create(&block)
@@ -133,7 +133,7 @@ module Riddl
133
133
  def initialize(topics,target,init=nil)
134
134
  @target = target.gsub(/^\/+/,'/')
135
135
 
136
- unless File.exists?(@target)
136
+ unless File.exist?(@target)
137
137
  if init
138
138
  FileUtils::cp_r init, @target
139
139
  else
@@ -141,7 +141,7 @@ module Riddl
141
141
  end
142
142
  end
143
143
 
144
- raise "topics file not found" unless File.exists?(topics)
144
+ raise "topics file not found" unless File.exist?(topics)
145
145
  @topics = XML::Smart.open_unprotected(topics.gsub(/^\/+/,'/'))
146
146
  @topics.register_namespace 'n', 'http://riddl.org/ns/common-patterns/notifications-producer/1.0'
147
147
 
@@ -18,7 +18,7 @@ module Riddl
18
18
 
19
19
  def [](key)
20
20
  get(key)
21
- end
21
+ end
22
22
 
23
23
  def get(key)
24
24
  @redis.get key
@@ -30,7 +30,7 @@ module Riddl
30
30
 
31
31
  def each
32
32
  if block_given?
33
- @redis.keys.each do |e|
33
+ @redis.keys.each do |e|
34
34
  yield e, get(e)
35
35
  end
36
36
  else
@@ -63,7 +63,7 @@ module Riddl
63
63
 
64
64
  def [](key)
65
65
  get(key)
66
- end
66
+ end
67
67
 
68
68
  def get(key)
69
69
  read if changed != @changed
@@ -72,7 +72,7 @@ module Riddl
72
72
 
73
73
  def each
74
74
  if block_given?
75
- @tokens.each do |k,v|
75
+ @tokens.each do |k,v|
76
76
  yield k,v
77
77
  end
78
78
  else
@@ -91,7 +91,7 @@ module Riddl
91
91
  end
92
92
 
93
93
  def changed
94
- if ::File.exists?(@tfile)
94
+ if ::File.exist?(@tfile)
95
95
  ::File.stat(@tfile).mtime
96
96
  else
97
97
  @tokens = {}
@@ -119,7 +119,7 @@ module Riddl
119
119
  deleted
120
120
  end
121
121
  end #}}}
122
-
122
+
123
123
  end #}}}
124
124
 
125
125
  def self::header #{{{
@@ -75,10 +75,10 @@ module Riddl
75
75
  @schema = @schemas.first[1]
76
76
  @rng = @rngs.first[1]
77
77
 
78
- FileUtils::mkdir_p(File::dirname(@target)) unless File.exists?(@target)
79
- FileUtils::cp init, @target if init and not File.exists?(@target)
78
+ FileUtils::mkdir_p(File::dirname(@target)) unless File.exist?(@target)
79
+ FileUtils::cp init, @target if init and not File.exist?(@target)
80
80
 
81
- raise "properties file not found" unless File.exists?(@target)
81
+ raise "properties file not found" unless File.exist?(@target)
82
82
  @data = XML::Smart.open_unprotected(@target)
83
83
  @data.register_namespace 'p', 'http://riddl.org/ns/common-patterns/properties/1.0'
84
84
  @mutex = Mutex.new
@@ -95,10 +95,10 @@ module Riddl
95
95
  end
96
96
 
97
97
  def add_schema(key,name)
98
- raise "schema file not found" unless File.exists?(name)
98
+ raise "schema file not found" unless File.exist?(name)
99
99
  @schemas[key] = XML::Smart.open_unprotected(name.gsub(/^\/+/,'/'))
100
100
  @schemas[key].register_namespace 'p', 'http://riddl.org/ns/common-patterns/properties/1.0'
101
- if !File::exists?(Riddl::Utils::Properties::PROPERTIES_SCHEMA_XSL_RNG)
101
+ if !File::exist?(Riddl::Utils::Properties::PROPERTIES_SCHEMA_XSL_RNG)
102
102
  raise "properties schema transformation file not found"
103
103
  end
104
104
  @rngs[key] = @schemas[key].transform_with(XML::Smart.open_unprotected(Riddl::Utils::Properties::PROPERTIES_SCHEMA_XSL_RNG))
@@ -14,7 +14,7 @@ module Riddl
14
14
  @status = 404
15
15
  return []
16
16
  end
17
- if File.exists?(path)
17
+ if File.exist?(path)
18
18
  mtime = File.mtime(path)
19
19
  @headers << Riddl::Header.new("Last-Modified",mtime.httpdate)
20
20
  @headers << Riddl::Header.new("Cache-Control","max-age=15552000, public")
@@ -24,17 +24,17 @@ module Riddl
24
24
  @headers << Riddl::Header.new("Connection","close")
25
25
  @status = 304 # Not modified
26
26
  return []
27
- else
28
- if xpath
27
+ else
28
+ if xpath
29
29
  res = XML::Smart.open(path).find(xpath)
30
30
  return Riddl::Parameter::Complex.new('file','text/xml',res.any? ? res.first.dump : '<empty/>')
31
31
  else
32
32
  return Riddl::Parameter::Complex.new('file','text/xml',File.open(path,'r'))
33
33
  end
34
- end
34
+ end
35
35
  end
36
36
  @status = 404
37
- end
37
+ end
38
38
  end
39
- end
40
- end
39
+ end
40
+ end
@@ -103,7 +103,7 @@ module Riddl
103
103
  @doc.find('//x:include/@href').each do |i|
104
104
  if i.value =~ /^http:\/\/(www\.)?riddl\.org(\/ns\/common-patterns\/.*)/
105
105
  t = File.expand_path(File.dirname(__FILE__)) + $2
106
- i.value = t if File.exists?(t)
106
+ i.value = t if File.exist?(t)
107
107
  end
108
108
  end
109
109
  fpath.nil? ? @doc.xinclude! : @doc.xinclude!(fpath)
@@ -275,7 +275,7 @@ module Riddl
275
275
  #{{{
276
276
  @doc.find("//des:resource/@role").map{|h|h.to_s}.uniq.each do |h|
277
277
  h = Protocols::Utils::escape(h)
278
- if File.exists?(File.dirname(__FILE__) + '/roles/' + h + '.rb')
278
+ if File.exist?(File.dirname(__FILE__) + '/roles/' + h + '.rb')
279
279
  require File.expand_path(File.dirname(__FILE__) + '/roles/' + h)
280
280
  end
281
281
  end
data/riddl.gemspec CHANGED
@@ -1,24 +1,24 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "riddl"
3
- s.version = "0.127"
3
+ s.version = "0.129"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.license = "LGPL-3.0"
6
- s.summary = "restful interface description and declaration language: tools and client/server libs"
6
+ s.summary = "Restful Interface Description and Declaration Language: tools and client/server libs"
7
7
 
8
- s.description = "rest service interface definition, mixing, and evolution. supports mixed http and xmpp servers."
8
+ s.description = "REST service interface definition, mixing, and evolution. Supports mixed http and xmpp servers."
9
9
 
10
- s.files = Dir['{lib/ruby/riddl/ns/**/*,tools/**/*,ns/**/*,contrib/**/*,lib/ruby/riddl/**/*,examples/**/*}'] + %w(COPYING Rakefile riddl.gemspec README.rdoc TODO AUTHORS INSTALL)
10
+ s.files = Dir['{lib/ruby/riddl/ns/**/*,tools/**/*,ns/**/*,contrib/**/*,lib/ruby/riddl/**/*,examples/**/*}'] + %w(COPYING Rakefile riddl.gemspec README.md TODO AUTHORS INSTALL)
11
11
 
12
12
  s.require_path = 'lib/ruby'
13
- s.extra_rdoc_files = ['README.rdoc']
13
+ s.extra_rdoc_files = ['README.md']
14
14
  s.bindir = 'tools'
15
15
  s.executables = ['riddlcheck','riddlprocess']
16
16
  s.test_files = Dir['test/tc_*.rb','test/smartrunner.rb']
17
17
 
18
18
  s.email = 'juergen.mangler@gmail.com'
19
- s.authors = ['Juergen \'eTM\' Mangler','Florian \'Solo\' Stertz','Sonja Biedermann']
19
+ s.authors = ['Juergen \'eTM\' Mangler','Florian \'Solo\' Stertz','Sonja Biedermann','Matthias Ehrendorfer']
20
20
  s.email = 'juergen.mangler@gmail.com'
21
- s.homepage = 'http://www.wst.univie.ac.at/communities/riddl/'
21
+ s.homepage = 'http://github.com/etm/riddl/'
22
22
 
23
23
  s.required_ruby_version = '>=2.2.0'
24
24
 
data/tools/riddlcheck CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/ruby
2
2
  curpath = __FILE__
3
3
  while ::File::symlink?(curpath)
4
4
  curpath = ::File::dirname(curpath) + '/' + ::File::readlink(curpath)
5
- end
5
+ end
6
6
  require 'rubygems'
7
7
  require ::File::dirname(curpath) + "/../lib/ruby/riddl/wrapper"
8
8
  require 'optparse'
@@ -15,7 +15,7 @@ ARGV.options { |opt|
15
15
  opt.on("Filename is either a description or a declaration.")
16
16
  opt.parse!
17
17
  }
18
- if ARGV.length == 0 || !File.exists?(ARGV[0])
18
+ if ARGV.length == 0 || !File.exist?(ARGV[0])
19
19
  puts ARGV.options
20
20
  exit
21
21
  end
@@ -27,7 +27,7 @@ if riddl.description?
27
27
  puts 'RIDDL description found.'
28
28
  elsif riddl.declaration?
29
29
  puts 'RIDDL declaration found.'
30
- else
30
+ else
31
31
  puts 'Neither a RIDDL description, nor a RIDDL declaration.'
32
32
  exit
33
33
  end
data/tools/riddlprocess CHANGED
@@ -1,8 +1,8 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/ruby
2
2
  curpath = __FILE__
3
3
  while ::File::symlink?(curpath)
4
4
  curpath = ::File::dirname(curpath) + '/' + ::File::readlink(curpath)
5
- end
5
+ end
6
6
  require 'rubygems'
7
7
  require ::File::dirname(curpath) + "/../lib/ruby/riddl/wrapper"
8
8
  require 'optparse'
@@ -21,7 +21,7 @@ ARGV.options { |opt|
21
21
  opt.on("Filename has to be a declaration.")
22
22
  opt.parse!
23
23
  }
24
- if ARGV.length == 0 || !File.exists?(ARGV[0]) || dowhat.nil?
24
+ if ARGV.length == 0 || !File.exist?(ARGV[0]) || dowhat.nil?
25
25
  puts ARGV.options
26
26
  exit
27
27
  end
@@ -30,7 +30,7 @@ fname = ARGV[0]
30
30
  riddl = Riddl::Wrapper.new(fname)
31
31
 
32
32
  unless riddl.declaration?
33
- puts 'Not a RIDDL declaration.'
33
+ puts 'Not a RIDDL declaration.'
34
34
  exit
35
35
  end
36
36
  unless riddl.validate!
@@ -48,4 +48,4 @@ case dowhat
48
48
  d.visualize_facade
49
49
  when 'description'
50
50
  puts d.description_xml
51
- end
51
+ end
metadata CHANGED
@@ -1,16 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: riddl
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.127'
4
+ version: '0.129'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juergen 'eTM' Mangler
8
8
  - Florian 'Solo' Stertz
9
9
  - Sonja Biedermann
10
+ - Matthias Ehrendorfer
10
11
  autorequire:
11
12
  bindir: tools
12
13
  cert_chain: []
13
- date: 2023-03-02 00:00:00.000000000 Z
14
+ date: 2023-03-16 00:00:00.000000000 Z
14
15
  dependencies:
15
16
  - !ruby/object:Gem::Dependency
16
17
  name: daemonite
@@ -248,7 +249,7 @@ dependencies:
248
249
  - - "~>"
249
250
  - !ruby/object:Gem::Version
250
251
  version: '5.0'
251
- description: rest service interface definition, mixing, and evolution. supports mixed
252
+ description: REST service interface definition, mixing, and evolution. Supports mixed
252
253
  http and xmpp servers.
253
254
  email: juergen.mangler@gmail.com
254
255
  executables:
@@ -256,12 +257,12 @@ executables:
256
257
  - riddlprocess
257
258
  extensions: []
258
259
  extra_rdoc_files:
259
- - README.rdoc
260
+ - README.md
260
261
  files:
261
262
  - AUTHORS
262
263
  - COPYING
263
264
  - INSTALL
264
- - README.rdoc
265
+ - README.md
265
266
  - Rakefile
266
267
  - TODO
267
268
  - contrib/riddl.jpg
@@ -459,10 +460,8 @@ files:
459
460
  - lib/ruby/riddl/ns/description/1.0/description.rng
460
461
  - lib/ruby/riddl/option.rb
461
462
  - lib/ruby/riddl/parameter.rb
462
- - lib/ruby/riddl/protocols/generator.rb
463
463
  - lib/ruby/riddl/protocols/http/generator.rb
464
464
  - lib/ruby/riddl/protocols/http/parser.rb
465
- - lib/ruby/riddl/protocols/parser.rb
466
465
  - lib/ruby/riddl/protocols/sse.rb
467
466
  - lib/ruby/riddl/protocols/utils.rb
468
467
  - lib/ruby/riddl/protocols/websocket.rb
@@ -533,7 +532,7 @@ files:
533
532
  - tools/flash-policy-server.rb
534
533
  - tools/riddlcheck
535
534
  - tools/riddlprocess
536
- homepage: http://www.wst.univie.ac.at/communities/riddl/
535
+ homepage: http://github.com/etm/riddl/
537
536
  licenses:
538
537
  - LGPL-3.0
539
538
  metadata: {}
@@ -552,10 +551,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
552
551
  - !ruby/object:Gem::Version
553
552
  version: '0'
554
553
  requirements: []
555
- rubygems_version: 3.3.26
554
+ rubygems_version: 3.4.6
556
555
  signing_key:
557
556
  specification_version: 4
558
- summary: 'restful interface description and declaration language: tools and client/server
557
+ summary: 'Restful Interface Description and Declaration Language: tools and client/server
559
558
  libs'
560
559
  test_files:
561
560
  - test/tc_declaration-distributed.rb
@@ -1,118 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../constants')
2
- require File.expand_path(File.dirname(__FILE__) + '/../utils')
3
- require 'stringio'
4
-
5
- module Riddl
6
- module Protocols
7
- module HTTP
8
- class Generator
9
- def initialize(params,headers)
10
- @params = params
11
- @headers = headers
12
- end
13
-
14
- def generate(mode=:output)
15
- if @params.is_a?(Array) && @params.length == 1
16
- body(@params[0],mode)
17
- elsif @params.class == Riddl::Parameter::Simple || @params.class == Riddl::Parameter::Complex
18
- body(@params,mode)
19
- elsif @params.is_a?(Array) && @params.length > 1
20
- multipart(mode)
21
- else
22
- if mode == :output
23
- @headers['Content-Type'] = 'text/plain'
24
- StringIO.new('','r+b')
25
- else
26
- StringIO.new('','r+b')
27
- end
28
- end
29
- end
30
-
31
- def body(r,mode)
32
- tmp = StringIO.new('','r+b')
33
- case r
34
- when Riddl::Parameter::Simple
35
- if mode == :output
36
- tmp.write r.value
37
- @headers['Content-Type'] = 'text/plain'
38
- @headers['Content-ID'] = r.name
39
- @headers['RIDDL-TYPE'] = 'simple'
40
- end
41
- if mode == :input
42
- @headers['Content-Type'] = 'application/x-www-form-urlencoded'
43
- tmp.write Riddl::Protocols::Utils::escape(r.name) + '=' + Riddl::Protocols::Utils::escape(r.value)
44
- end
45
- when Riddl::Parameter::Complex
46
- tmp.write(r.value.respond_to?(:read) ? r.value.read : r.value)
47
- @headers['Content-Type'] = r.mimetype + r.mimextra
48
- @headers['RIDDL-TYPE'] = 'complex'
49
- if r.filename.nil?
50
- @headers['Content-ID'] = r.name
51
- else
52
- @headers['Content-Disposition'] = "riddl-data; name=\"#{r.name}\"; filename=\"#{r.filename}\""
53
- end
54
- end
55
- tmp.flush
56
- tmp.rewind
57
- tmp
58
- end
59
- private :body
60
-
61
- def multipart(mode)
62
- tmp = StringIO.new('','r+b')
63
- scount = ccount = 0
64
- @params.each do |r|
65
- case r
66
- when Riddl::Parameter::Simple
67
- scount += 1
68
- when Riddl::Parameter::Complex
69
- ccount += 1
70
- end
71
- end
72
- if scount > 0 && ccount == 0
73
- @headers['Content-Type'] = 'application/x-www-form-urlencoded'
74
- res = []
75
- @params.each do |r|
76
- case r
77
- when Riddl::Parameter::Simple
78
- res << Riddl::Protocols::Utils::escape(r.name) + '=' + Riddl::Protocols::Utils::escape(r.value)
79
- end
80
- end
81
- tmp.write res.join('&')
82
- else
83
- if scount + ccount > 0
84
- @headers['Content-Type'] = "multipart/#{mode == :input ? 'form-data' : 'mixed'}; boundary=\"#{BOUNDARY}\""
85
- @params.each do |r|
86
- case r
87
- when Riddl::Parameter::Simple
88
- tmp.write '--' + BOUNDARY + EOL
89
- tmp.write 'RIDDL-TYPE: simple' + EOL
90
- tmp.write "Content-Disposition: #{mode == :input ? 'form-data' : 'riddl-data'}; name=\"#{r.name}\"" + EOL
91
- tmp.write EOL
92
- tmp.write r.value
93
- tmp.write EOL
94
- when Riddl::Parameter::Complex
95
- tmp.write '--' + BOUNDARY + EOL
96
- tmp.write 'RIDDL-TYPE: complex' + EOL
97
- tmp.write "Content-Disposition: #{mode == :input ? 'form-data' : 'riddl-data'}; name=\"#{r.name}\""
98
- tmp.write r.filename.nil? ? '; filename=""' + EOL : "; filename=\"#{r.filename}\"" + EOL
99
- tmp.write 'Content-Transfer-Encoding: binary' + EOL
100
- tmp.write 'Content-Type: ' + r.mimetype + r.mimextra + EOL
101
- tmp.write EOL
102
- tmp.write(r.value.respond_to?(:read) ? r.value.read : r.value)
103
- tmp.write EOL
104
- end
105
- end
106
- tmp.write '--' + BOUNDARY + EOL
107
- end
108
- end
109
- tmp.flush
110
- tmp.rewind
111
- tmp
112
- end
113
- private :multipart
114
-
115
- end
116
- end
117
- end
118
- end
@@ -1,205 +0,0 @@
1
- require File.expand_path(File.dirname(__FILE__) + '/../../constants')
2
- require File.expand_path(File.dirname(__FILE__) + '/../../parameter')
3
- require File.expand_path(File.dirname(__FILE__) + '/../utils')
4
-
5
- module Riddl
6
- module Protocols
7
- module HTTP
8
- class Parser
9
- MULTIPART_CONTENT_TYPES = [
10
- #{{{
11
- 'multipart/form-data',
12
- 'multipart/related',
13
- 'multipart/mixed'
14
- #}}}
15
- ].freeze
16
- FORM_CONTENT_TYPES = [
17
- #{{{
18
- 'application/x-www-form-urlencoded'
19
- #}}}
20
- ].freeze
21
-
22
- def parse_content(input,ctype,content_length,content_disposition,content_id,riddl_type)
23
- #{{{
24
- # fixing for chunked?
25
-
26
- ctype = nil if riddl_type == 'simple'
27
- filename = content_disposition[/ filename="?([^\";]*)"?/ni, 1]
28
- name = content_disposition[/ name="?([^\";]*)"?/ni, 1] || content_id
29
-
30
- if ctype || filename
31
- body = Parameter::Tempfile.new("RiddlMultipart")
32
- body.binmode if body.respond_to?(:binmode)
33
- else
34
- body = ''
35
- end
36
-
37
- if content_length == 0
38
- bufsize = 16384
39
- until input.eof?
40
- c = input.read(bufsize)
41
- raise EOFError, "bad content body" if c.nil? || c.empty?
42
- body << c
43
- content_length -= c.size
44
- end
45
- body << input.read
46
- else
47
- bufsize = 16384
48
- until content_length <= 0
49
- c = input.read(bufsize < content_length ? bufsize : content_length)
50
- raise EOFError, "bad content body" if c.nil? || c.empty?
51
- body << c
52
- content_length -= c.size
53
- end
54
- end
55
- body.rewind if body.respond_to?(:binmode)
56
-
57
- add_to_params(name,body,filename,ctype,nil) if body.length > 0
58
- #}}}
59
- end
60
- private :parse_content
61
-
62
- def parse_multipart(input,content_type,content_length)
63
- #{{{
64
- content_type =~ %r|\Amultipart/.*boundary=\"?([^\";,]+)\"?|n
65
- boundary = "--#{$1}"
66
-
67
- boundary_size = boundary.size + EOL.size
68
- content_length -= boundary_size
69
- status = input.read(boundary_size)
70
- raise EOFError, "bad content body" unless status == boundary + EOL
71
-
72
- rx = /(?:#{EOL})?#{Regexp.quote boundary}(#{EOL}|--)/n
73
-
74
- buf = ""
75
- bufsize = 16384
76
- loop do
77
- head = nil
78
- body = ''
79
- filename = ctype = name = nil
80
-
81
- until head && buf =~ rx
82
- if !head && i = buf.index(EOL+EOL)
83
- head = buf.slice!(0, i+2) # First \r\n
84
- buf.slice!(0, 2) # Second \r\n
85
-
86
- filename = head[/Content-Disposition:.* filename="?([^\";]*)"?/ni, 1]
87
- ctype = head[/Content-Type: (.*)#{EOL}/ni, 1]
88
- name = head[/Content-Disposition:.*\s+name="?([^\";]*)"?/ni, 1] || head[/Content-ID:\s*([^#{EOL}]*)/ni, 1]
89
-
90
- if ctype || filename
91
- body = Parameter::Tempfile.new("RiddlMultipart")
92
- body.binmode if body.respond_to?(:binmode)
93
- end
94
-
95
- next
96
- end
97
-
98
- # Save the read body part.
99
- if head && (boundary_size+4 < buf.size)
100
- body << buf.slice!(0, buf.size - (boundary_size+4))
101
- end
102
-
103
- c = input.read(bufsize < content_length ? bufsize : content_length)
104
- raise EOFError, "bad content body" if c.nil? || c.empty?
105
- content_length -= c.size
106
-
107
- buf << c
108
- end
109
-
110
- # Save the rest.
111
- if i = buf.index(rx)
112
- body << buf.slice!(0, i)
113
- buf.slice!(0, boundary_size+2)
114
- content_length = -1 if $1 == "--"
115
- end
116
-
117
- p name
118
- p body
119
- p filename
120
- p ctype
121
- p head
122
- p '----'
123
-
124
- add_to_params(name,body,filename == '' ? nil : filename,ctype,head)
125
-
126
- break if buf.empty? || content_length == -1
127
- end
128
- #}}}
129
- end
130
- private :parse_multipart
131
-
132
- def add_to_params(name,body,filename,ctype,head)
133
- #{{{
134
- if filename == ""
135
- # filename is blank which means no file has been selected
136
- elsif filename && ctype
137
- body.rewind
138
-
139
- # Take the basename of the upload's original filename.
140
- # This handles the full Windows paths given by Internet Explorer
141
- # (and perhaps other broken user agents) without affecting
142
- # those which give the lone filename.
143
- filename =~ /^(?:.*[:\\\/])?(.*)/m
144
- filename = $1
145
-
146
- @params << Parameter::Complex.new(name, ctype, body, filename, head)
147
- elsif !filename && ctype
148
- body.rewind
149
-
150
- # Generic multipart cases, not coming from a form
151
- @params << Parameter::Complex.new(name, ctype, body, nil, head)
152
- else
153
- @params << Parameter::Simple.new(name, body, :body)
154
- end
155
- #}}}
156
- end
157
- private :add_to_params
158
-
159
- def parse_nested_query(qs, type)
160
- #{{{
161
- (qs || '').split(/[#{D}] */n).each do |p|
162
- k, v = Riddl::Protocols::Utils::unescape(p).split('=', 2)
163
- @params << Parameter::Simple.new(k,v,type)
164
- end
165
- #}}}
166
- end
167
- private :parse_nested_query
168
-
169
- def initialize(query_string,input,content_type,content_length,content_disposition,content_id,riddl_type)
170
- #{{{
171
- # rewind because in some cases it is not at start (when multipart without length)
172
-
173
- begin
174
- input.rewind if input.respond_to?(:rewind)
175
- rescue Errno::ESPIPE
176
- # Handles exceptions raised by input streams that cannot be rewound
177
- # such as when using plain CGI under Apache
178
- end
179
-
180
- media_type = content_type && content_type.split(/\s*[;,]\s*/, 2).first.downcase
181
- @params = Riddl::Parameter::Array.new
182
- parse_nested_query(query_string,:query)
183
- if MULTIPART_CONTENT_TYPES.include?(media_type)
184
- parse_multipart(input,content_type,content_length.to_i)
185
- elsif FORM_CONTENT_TYPES.include?(media_type)
186
- # sub is a fix for Safari Ajax postings that always append \0
187
- parse_nested_query(input.read.sub(/\0\z/, ''),:body)
188
- else
189
- parse_content(input,content_type,content_length.to_i,content_disposition||'',content_id||'',riddl_type||'')
190
- end
191
-
192
- begin
193
- input.rewind if input.respond_to?(:rewind)
194
- rescue Errno::ESPIPE
195
- # Handles exceptions raised by input streams that cannot be rewound
196
- # such as when using plain CGI under Apache
197
- end
198
- #}}}
199
- end
200
-
201
- attr_reader :params
202
- end
203
- end
204
- end
205
- end
File without changes