Class PublixInterceptor

  • All Implemented Interfaces:
    play.mvc.Http.HeaderNames, play.mvc.Http.Status

    @Singleton
    public class PublixInterceptor
    extends play.mvc.Controller
    Interceptor for Publix: handles all requests for JATOS' public API (Publix) and forwards them to one of the implementations of the API (all extend Publix). Each implementation deals with different workers (e.g. workers from MTurk, Personal Multiple workers). A study run starts with the 'run' method that takes the study code as a parameter. The study code is the ID for a StudyLink. The StudyLink determines the worker type and which Publix implementation will be called. All subsequent requests of this study run need at least the study result UUID and often the component UUID too.
    • Field Summary

      • Fields inherited from interface play.mvc.Http.HeaderNames

        ACCEPT, ACCEPT_CHARSET, ACCEPT_ENCODING, ACCEPT_LANGUAGE, ACCEPT_RANGES, ACCESS_CONTROL_ALLOW_CREDENTIALS, ACCESS_CONTROL_ALLOW_HEADERS, ACCESS_CONTROL_ALLOW_METHODS, ACCESS_CONTROL_ALLOW_ORIGIN, ACCESS_CONTROL_EXPOSE_HEADERS, ACCESS_CONTROL_MAX_AGE, ACCESS_CONTROL_REQUEST_HEADERS, ACCESS_CONTROL_REQUEST_METHOD, AGE, ALLOW, AUTHORIZATION, CACHE_CONTROL, CONNECTION, CONTENT_DISPOSITION, CONTENT_ENCODING, CONTENT_LANGUAGE, CONTENT_LENGTH, CONTENT_LOCATION, CONTENT_MD5, CONTENT_RANGE, CONTENT_SECURITY_POLICY, CONTENT_SECURITY_POLICY_REPORT_ONLY, CONTENT_TRANSFER_ENCODING, CONTENT_TYPE, COOKIE, DATE, ETAG, EXPECT, EXPIRES, FORWARDED, FROM, HOST, IF_MATCH, IF_MODIFIED_SINCE, IF_NONE_MATCH, IF_RANGE, IF_UNMODIFIED_SINCE, LAST_MODIFIED, LINK, LOCATION, MAX_FORWARDS, ORIGIN, PRAGMA, PROXY_AUTHENTICATE, PROXY_AUTHORIZATION, RANGE, REFERER, REFERRER_POLICY, RETRY_AFTER, SERVER, SET_COOKIE, SET_COOKIE2, STRICT_TRANSPORT_SECURITY, TE, TRAILER, TRANSFER_ENCODING, UPGRADE, USER_AGENT, VARY, VIA, WARNING, WWW_AUTHENTICATE, X_CONTENT_SECURITY_POLICY_NONCE_HEADER, X_CONTENT_TYPE_OPTIONS, X_FORWARDED_FOR, X_FORWARDED_HOST, X_FORWARDED_PORT, X_FORWARDED_PROTO, X_FRAME_OPTIONS, X_PERMITTED_CROSS_DOMAIN_POLICIES, X_REQUESTED_WITH, X_XSS_PROTECTION
      • Fields inherited from interface play.mvc.Http.Status

        ACCEPTED, BAD_GATEWAY, BAD_REQUEST, CONFLICT, CONTINUE, CREATED, EXPECTATION_FAILED, FAILED_DEPENDENCY, FORBIDDEN, FOUND, GATEWAY_TIMEOUT, GONE, HTTP_VERSION_NOT_SUPPORTED, IM_A_TEAPOT, INSUFFICIENT_STORAGE, INTERNAL_SERVER_ERROR, LENGTH_REQUIRED, LOCKED, METHOD_NOT_ALLOWED, MOVED_PERMANENTLY, MULTI_STATUS, MULTIPLE_CHOICES, NETWORK_AUTHENTICATION_REQUIRED, NO_CONTENT, NON_AUTHORITATIVE_INFORMATION, NOT_ACCEPTABLE, NOT_FOUND, NOT_IMPLEMENTED, NOT_MODIFIED, OK, PARTIAL_CONTENT, PAYMENT_REQUIRED, PERMANENT_REDIRECT, PRECONDITION_FAILED, PRECONDITION_REQUIRED, PROXY_AUTHENTICATION_REQUIRED, REQUEST_ENTITY_TOO_LARGE, REQUEST_HEADER_FIELDS_TOO_LARGE, REQUEST_TIMEOUT, REQUEST_URI_TOO_LONG, REQUESTED_RANGE_NOT_SATISFIABLE, RESET_CONTENT, SEE_OTHER, SERVICE_UNAVAILABLE, SWITCHING_PROTOCOLS, TEMPORARY_REDIRECT, TOO_MANY_REQUESTS, UNAUTHORIZED, UNPROCESSABLE_ENTITY, UNSUPPORTED_MEDIA_TYPE, UPGRADE_REQUIRED, USE_PROXY
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      play.mvc.Result abortStudy​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String message)  
      play.mvc.Result appendResultData​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String componentUuid)  
      play.mvc.Result downloadResultFile​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String filename, java.lang.String componentId)  
      play.mvc.Result finishStudy​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.Boolean successful, java.lang.String message)  
      play.mvc.Result getInitData​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String componentUuid)  
      play.mvc.Result heartbeat​(play.mvc.Http.Request request, java.lang.String studyResultUuid)  
      play.mvc.Result log​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String componentUuid)  
      play.mvc.Result run​(play.mvc.Http.Request request, java.lang.String studyCode)  
      play.mvc.Result runx​(java.lang.String code, java.lang.Long frames, java.lang.Long hSplit, java.lang.Long vSplit)
      Facilitates multiple study runs in parallel each in its own iframe.
      play.mvc.Result setStudySessionData​(play.mvc.Http.Request request, java.lang.String studyResultUuid)  
      play.mvc.Result startComponent​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String componentUuid, java.lang.String message)  
      play.mvc.Result studyEntry​(play.mvc.Http.Request request, java.lang.String studyCode)
      Shows the Study Entry page prior to a study run.
      play.mvc.Result submitResultData​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String componentUuid)  
      play.mvc.Result uploadResultFile​(play.mvc.Http.Request request, java.lang.String studyResultUuid, java.lang.String componentUuid, java.lang.String filename)  
      • Methods inherited from class play.mvc.Controller

        changeLang, changeLang, clearLang, ctx, flash, flash, flash, lang, request, response, session, session, session, TODO, TODO
      • Methods inherited from class play.mvc.Results

        badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, badRequest, contentDispositionHeader, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, created, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, forbidden, found, found, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, internalServerError, movedPermanently, movedPermanently, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, networkAuthenticationRequired, noContent, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notAcceptable, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, notFound, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, ok, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, paymentRequired, permanentRedirect, permanentRedirect, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, preconditionRequired, redirect, redirect, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, requestHeaderFieldsTooLarge, seeOther, seeOther, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, status, temporaryRedirect, temporaryRedirect, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, tooManyRequests, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unauthorized, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType, unsupportedMediaType
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PublixInterceptor

        @Inject
        public PublixInterceptor​(StudyLinkDao studyLinkDao,
                                 StudyResultDao studyResultDao,
                                 ComponentDao componentDao,
                                 javax.inject.Provider<play.Application> application)
    • Method Detail

      • studyEntry

        public play.mvc.Result studyEntry​(play.mvc.Http.Request request,
                                          java.lang.String studyCode)
        Shows the Study Entry page prior to a study run. 1. Lets worker enter the study code 2. Takes the study code as a query parameter. A text shown can be customized in the study properties. It always shows a ▶ button that the worker has to press to confirm the intention of running the study.
      • runx

        public play.mvc.Result runx​(java.lang.String code,
                                    java.lang.Long frames,
                                    java.lang.Long hSplit,
                                    java.lang.Long vSplit)
                             throws PublixException
        Facilitates multiple study runs in parallel each in its own iframe. If 'frames' is 1 (or lower) it just redirects to the normal run endpoint.
        Throws:
        PublixException
      • startComponent

        public play.mvc.Result startComponent​(play.mvc.Http.Request request,
                                              java.lang.String studyResultUuid,
                                              java.lang.String componentUuid,
                                              java.lang.String message)
                                       throws PublixException
        Throws:
        PublixException
      • getInitData

        public play.mvc.Result getInitData​(play.mvc.Http.Request request,
                                           java.lang.String studyResultUuid,
                                           java.lang.String componentUuid)
                                    throws PublixException,
                                           java.io.IOException
        Throws:
        PublixException
        java.io.IOException
      • setStudySessionData

        public play.mvc.Result setStudySessionData​(play.mvc.Http.Request request,
                                                   java.lang.String studyResultUuid)
                                            throws PublixException
        Throws:
        PublixException
      • heartbeat

        public play.mvc.Result heartbeat​(play.mvc.Http.Request request,
                                         java.lang.String studyResultUuid)
                                  throws PublixException
        Throws:
        PublixException
      • submitResultData

        public play.mvc.Result submitResultData​(play.mvc.Http.Request request,
                                                java.lang.String studyResultUuid,
                                                java.lang.String componentUuid)
                                         throws PublixException
        Throws:
        PublixException
      • appendResultData

        public play.mvc.Result appendResultData​(play.mvc.Http.Request request,
                                                java.lang.String studyResultUuid,
                                                java.lang.String componentUuid)
                                         throws PublixException
        Throws:
        PublixException
      • uploadResultFile

        public play.mvc.Result uploadResultFile​(play.mvc.Http.Request request,
                                                java.lang.String studyResultUuid,
                                                java.lang.String componentUuid,
                                                java.lang.String filename)
                                         throws PublixException
        Throws:
        PublixException
      • downloadResultFile

        public play.mvc.Result downloadResultFile​(play.mvc.Http.Request request,
                                                  java.lang.String studyResultUuid,
                                                  java.lang.String filename,
                                                  java.lang.String componentId)
                                           throws PublixException
        Throws:
        PublixException
      • abortStudy

        public play.mvc.Result abortStudy​(play.mvc.Http.Request request,
                                          java.lang.String studyResultUuid,
                                          java.lang.String message)
                                   throws PublixException
        Throws:
        PublixException
      • finishStudy

        public play.mvc.Result finishStudy​(play.mvc.Http.Request request,
                                           java.lang.String studyResultUuid,
                                           java.lang.Boolean successful,
                                           java.lang.String message)
                                    throws PublixException
        Throws:
        PublixException
      • log

        public play.mvc.Result log​(play.mvc.Http.Request request,
                                   java.lang.String studyResultUuid,
                                   java.lang.String componentUuid)
                            throws PublixException
        Throws:
        PublixException