diff options
author | Christoph Helma <helma@in-silico.ch> | 2019-09-03 13:45:36 +0200 |
---|---|---|
committer | Christoph Helma <helma@in-silico.ch> | 2019-09-03 13:45:36 +0200 |
commit | d1032e4f40d9fbb212e85e0db4f0ecd2e8ac9a88 (patch) | |
tree | 48922d60d750839dacd5d0a4a6e50ea3fe68da63 /lib/validation.rb | |
parent | 5bb4c24c6cfc1ddfae14eb9543b283baae2d75be (diff) | |
parent | a84d9eabf1b921086a688f81df28b0f21ba4df19 (diff) |
development merged, git links in FAQ.md fixed1.4.0
Diffstat (limited to 'lib/validation.rb')
-rw-r--r-- | lib/validation.rb | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/lib/validation.rb b/lib/validation.rb new file mode 100644 index 0000000..031b9e1 --- /dev/null +++ b/lib/validation.rb @@ -0,0 +1,67 @@ +# All available validation types +VALIDATION_TYPES = ["repeatedcrossvalidation", "leaveoneout", "crossvalidation", "regressioncrossvalidation"] + +# Get a list of ayll possible validation types +# @param [Header] Accept one of text/uri-list, application/json +# @return [text/uri-list] URI list of all validation types +get "/api/validation/?" do + uri_list = VALIDATION_TYPES.collect{|validationtype| uri("/validation/#{validationtype}")} + case @accept + when "text/uri-list" + return uri_list.join("\n") + "\n" + when "application/json" + return uri_list.to_json + else + halt 400, "Mime type #{@accept} is not supported." + end +end + +# Get a list of all validations +# @param [Header] Accept one of text/uri-list, application/json +# @param [Path] Validationtype One of "repeatedcrossvalidation", "leaveoneout", "crossvalidation", "regressioncrossvalidation" +# @return [text/uri-list] list of all validations of a validation type +get "/api/validation/:validationtype/?" do + halt 400, "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] + case params[:validationtype] + when "repeatedcrossvalidation" + validations = Validation::RepeatedCrossValidation.all + when "leaveoneout" + validations = Validation::LeaveOneOut.all + when "crossvalidation" + validations = Validation::CrossValidation.all + when "regressioncrossvalidation" + validations = Validation::RegressionCrossValidation.all + end + + case @accept + when "text/uri-list" + uri_list = validations.collect{|validation| uri("/api/validation/#{params[:validationtype]}/#{validation.id}")} + return uri_list.join("\n") + "\n" + when "application/json" + validations = JSON.parse validations.to_json + validations.each_index do |idx| + validations[idx][:URI] = uri("/api/validation/#{params[:validationtype]}/#{validations[idx]["_id"]["$oid"]}") + end + return validations.to_json + else + halt 400, "Mime type #{@accept} is not supported." + end +end + +# Get validation representation +get "/api/validation/:validationtype/:id/?" do + halt 400, "There is no such validation type as: #{params[:validationtype]}" unless VALIDATION_TYPES.include? params[:validationtype] + case params[:validationtype] + when "repeatedcrossvalidation" + validation = Validation::RepeatedCrossValidation.find params[:id] + when "leaveoneout" + validation = Validation::LeaveOneOut.find params[:id] + when "crossvalidation" + validation = Validation::CrossValidation.find params[:id] + when "regressioncrossvalidation" + validation = Validation::RegressionCrossValidation.find params[:id] + end + + halt 404, "#{params[:validationtype]} with id: #{params[:id]} not found." unless validation + return validation.to_json +end |