summaryrefslogtreecommitdiff
path: root/lib/feature.rb
diff options
context:
space:
mode:
authorChristoph Helma <helma@in-silico.de>2009-09-08 16:04:23 +0200
committerChristoph Helma <helma@in-silico.de>2009-09-08 16:04:23 +0200
commit6a2c3f2100d030c30b7d8ac8c95dcece7edb040c (patch)
treec2e8069b3787b7ad2b90f062957d23eb12d955dd /lib/feature.rb
parent4d343f7c584ce09638005665b4ed2de718ff17a6 (diff)
api separated into individual components, adapted for new webservice versions
Diffstat (limited to 'lib/feature.rb')
-rw-r--r--lib/feature.rb45
1 files changed, 45 insertions, 0 deletions
diff --git a/lib/feature.rb b/lib/feature.rb
new file mode 100644
index 0000000..0cad7c0
--- /dev/null
+++ b/lib/feature.rb
@@ -0,0 +1,45 @@
+module OpenTox
+
+ # uri: /feature/:name/:property_name/:property_value/...
+ class Feature < OpenTox
+
+ attr_accessor :name, :values
+
+ def initialize(params)
+ if params[:uri]
+ @uri = params[:uri]
+ items = URI.split(@uri)[5].split(/\//)
+ @name = items[1]
+ @values = {}
+ i = 3
+ while i < items.size
+ @values[items[i]] = items[i+1]
+ i += 2
+ end
+ else
+ @name = URI.encode(URI.decode(params[:name]))
+ @values = params[:values]
+ @uri = File.join(@@config[:services]["opentox-dataset"],"feature",path)
+ end
+ end
+
+ def values_path
+ path = ''
+ @values.each do |k,v|
+ path += '/' + URI.encode(k.to_s) + '/' + URI.encode(v.to_s)
+ end
+ path
+ end
+
+ def path
+ File.join(@name,values_path)
+ end
+
+ def value(property)
+ items = @uri.split(/\//)
+ i = items.index(property)
+ items[i+1]
+ end
+
+ end
+end