Example #1
0
    def _threadDoGETJob(self, request):

        subject_identifier = request.parsed_request_args['subject_identifier']

        if subject_identifier.HasAccountKey():

            subject_account_key = subject_identifier.GetData()

        else:

            raise HydrusExceptions.MissingCredentialsException(
                'I was expecting an account key, but did not get one!')

        subject_account = HG.server_controller.Read('account',
                                                    self._service_key,
                                                    subject_account_key)

        account_info = HG.server_controller.Read('account_info',
                                                 self._service_key,
                                                 request.hydrus_account,
                                                 subject_account)

        body = HydrusNetwork.DumpHydrusArgsToNetworkBytes(
            {'account_info': account_info})

        response_context = HydrusServerResources.ResponseContext(200,
                                                                 body=body)

        return response_context
Example #2
0
    def _callbackEstablishAccountFromHeader(
            self, request: HydrusServerRequest.HydrusRequest):

        session_key = None

        if request.requestHeaders.hasHeader('Cookie'):

            cookie_texts = request.requestHeaders.getRawHeaders('Cookie')

            cookie_text = cookie_texts[0]

            try:

                cookies = http.cookies.SimpleCookie(cookie_text)

                if 'session_key' in cookies:

                    # Morsel, for real, ha ha ha
                    morsel = cookies['session_key']

                    session_key_hex = morsel.value

                    session_key = bytes.fromhex(session_key_hex)

            except:

                raise HydrusExceptions.BadRequestException(
                    'Problem parsing cookies for Session Cookie!')

        if session_key is None:

            access_key = self._parseHydrusNetworkAccessKey(request,
                                                           key_required=False)

            if access_key is None:

                raise HydrusExceptions.MissingCredentialsException(
                    'No credentials found in request!')

            else:

                account = HG.server_controller.server_session_manager.GetAccountFromAccessKey(
                    self._service_key, access_key)

        else:

            account = HG.server_controller.server_session_manager.GetAccount(
                self._service_key, session_key)

        request.hydrus_account = account

        return request