Ignore:
Timestamp:
Jan 4, 2011, 11:13:45 AM (10 years ago)
Author:
robert@…
Message:

Added metagenomics module and improved rest controller to give 404 and 401 errors when appropriate

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/grails-app/controllers/RestController.groovy

    r1222 r1328  
    9595         * @return  JSON object list containing 'studyToken', and 'name' (title) for each study
    9696         *
     97         * If one study is requested, a 404 error might occur if the study doesn't exist, and a 401 error if the user is not
     98         * authorized to access this study. If multiple studies are requrested, non-existing studies or studies for which the
     99         * user is not authorized are not returned in the list (so the list might be empty).
    97100         *
    98101         * Example 1. REST call without studyToken.
     
    134137                }
    135138                else if( params.studyToken instanceof String ) {
    136                         studies.push Study.findByCode( params.studyToken )
     139                        def study = Study.findByCode( params.studyToken )
     140                        if( study ) {
     141                                if( !study.canRead(AuthenticationService.getRemotelyLoggedInUser( params.consumer, params.token )) ) {
     142                                        response.sendError(401)
     143                                        return false
     144                                }
     145                               
     146                                studies.push study
     147                        } else {
     148                                response.sendError(404)
     149                                return false
     150                        }
     151       
    137152                }
    138153                else {
    139154                        params.studyToken.each{ studyToken ->
    140                                 studies.push Study.findByCode( studyToken )
    141                         }
    142                 }
     155                                def study = Study.findByCode( studyToken );
     156                                if( study )
     157                                        studies.push study
     158                        }
     159                }
     160               
    143161
    144162                studies.each { study ->
     
    171189         * Provide a list of all subjects belonging to a study.
    172190         *
    173          * If the user is not allowed to read the study contents, a 401 error is given
     191         * If the user is not allowed to read the study contents, a 401 error is given. If the study doesn't exist, a 404 error is given
    174192         *
    175193         * @param       studyToken      String The external study id (code) of the target GSCF Study object
     
    192210
    193211                                study.subjects.each { subjects.push it.name }
     212                        } else {
     213                                response.sendError(404)
     214                                return false
    194215                        }
    195216                }
     
    203224         * Provide a list of all assays for a given study.
    204225         *
    205          * If the user is not allowed to read the study contents, a 401 error is given
     226         * If the user is not allowed to read the study contents, a 401 error is given. If the study doesn't exist, a 404 error is given
    206227         *
    207228         * @param       studyToken      String The external study id (code) of the target GSCF Study object
     
    297318                                        }
    298319                                }
    299                 }
     320                } else {
     321                                response.sendError(404)
     322                                return false
     323                        }
    300324
    301325                }
     
    313337         * Provide all samples of a given Assay. The result is an enriched list with additional information for each sample.
    314338         *
     339         * If the user is not allowed to read the study contents, a 401 error is given. If the assay doesn't exist, a 404 error is given
     340         *
    315341         * @param       assayToken      String (assayToken of some Assay in GSCF)
    316342         * @param       sampleToken Optional parameter. One or more sampleTokens to specify what sample to give exectly.
     
    370396
    371397                        if( assay )  {
     398                                // Check whether the person is allowed to read the data of this study
     399                                if( !assay.parent.canRead(AuthenticationService.getRemotelyLoggedInUser( params.consumer, params.token ))) {
     400                                        response.sendError(401)
     401                                        return false
     402                                }
     403                               
    372404                                def samples = assay.getSamples() // on all samples
    373405
     
    427459                                        items.push item
    428460                                }
     461                        } else {
     462                                // Assay not found
     463                                response.sendError(404)
     464                                return false
    429465                        }
    430466                }
     
    468504    }
    469505
    470 
    471 
    472 
    473 
    474 
    475506}
Note: See TracChangeset for help on using the changeset viewer.