blob: 1468c8dfadcba4e5efc06ed440810bcfcaa351a3 (
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
|
# Get all datasets
get "/dataset/?" do
datasets = Dataset.all
case @accept
when "text/uri-list"
uri_list = datasets.collect{|dataset| uri("/dataset/#{dataset.id}")}
return uri_list.join("\n") + "\n"
when "application/json"
datasets = JSON.parse datasets.to_json
datasets.each_index do |idx|
datasets[idx][:URI] = uri("/dataset/#{datasets[idx]["_id"]["$oid"]}")
end
return datasets.to_json
else
bad_request_error "Mime type #{@accept} is not supported."
end
end
# Get a dataset
get "/dataset/:id/?" do
dataset = Dataset.find :id => params[:id]
resource_not_found_error "Dataset with id: #{params[:id]} not found." unless dataset
case @accept
when "application/json"
dataset.data_entries.each do |k, v|
dataset.data_entries[k][:URI] = uri("/substance/#{k}")
end
dataset[:URI] = uri("/dataset/#{dataset.id}")
dataset[:substances] = uri("/dataset/#{dataset.id}/substances")
dataset[:features] = uri("/dataset/#{dataset.id}/features")
return dataset.to_json
when "text/csv"
return dataset.to_csv
else
bad_request_error "Mime type #{@accept} is not supported."
end
end
# Get a dataset attribute. One of compounds, nanoparticles, substances, features
get "/dataset/:id/:attribute/?" do
dataset = Dataset.find :id => params[:id]
resource_not_found_error "Dataset with id: #{params[:id]} not found." unless dataset
attribs = ["compounds", "nanoparticles", "substances", "features"]
return "Attribute '#{params[:attribute]}' is not available. Choose one of #{attribs.join(', ')}." unless attribs.include? params[:attribute]
out = dataset.send(params[:attribute])
return out.to_json
end
|