blob: c7a1d430e787b768c1ad279687390c04ae475e03 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
class String
def underscore
self.gsub(/::/, '/').
gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
gsub(/([a-z\d])([A-Z])/,'\1_\2').
tr("-", "_").
downcase
end
end
module URI
def self.task? uri
uri =~ /task/ and URI.valid? uri
end
def self.dataset? uri, subjectid=nil
uri =~ /dataset/ and URI.accessible? uri, subjectid=nil
end
def self.model? uri, subjectid=nil
uri =~ /model/ and URI.accessible? uri, subjectid=nil
end
def self.accessible? uri, subjectid=nil
if URI.task? uri
# just ry to get a response, valid tasks may return codes > 400
Net::HTTP.get_response(URI.parse(uri))
true
else
Net::HTTP.get_response(URI.parse(uri)).code.to_i < 400
end
rescue
false
end
def self.valid? uri
u = URI::parse(uri)
u.scheme!=nil and u.host!=nil
rescue URI::InvalidURIError
false
end
def self.to_object uri, wait=true
# TODO add waiting task
if task? uri and wait
t = OpenTox::Task.new(uri)
t.wait
uri = t.resultURI
end
klass =
subjectid ? eval("#{self}.new(\"#{uri}\", #{subjectid})") : eval("#{self}.new(\"#{uri}\")")
end
end
class File
def mime_type
`file -ib #{self.path}`.chomp
end
end
|