Example #1
0
    def call_api(self, _call_method, _session_id="", _call_args=None):
        """Call YourMembership API."""
        if _call_args is None:
            _call_args = {}
        data = self.generate_request_xml(
            _call_method, _session_id=_session_id,
            _call_args=_call_args)  # Get the data to post
        headers = {
            'Content-Type': 'application/x-www-form-urlencoded'
        }  # Use this content type

        response = request("POST",
                           self.YMAPI_SERVLET_URI,
                           headers=headers,
                           data=data)  # Send the request

        xmldoc = ElementTree.fromstring(response.text)
        errcode = int(xmldoc.findall("./ErrCode")[0].text)
        ExtendedErrorInfo = xmldoc.findall("./ExtendedErrorInfo")
        errdesc = xmldoc.findall("./ErrDesc")

        if errcode == 0:
            ym_response = xmldoc.findall("./" + _call_method)[0]
            return_dict = {"call_method": _call_method}
            for node in ym_response:
                return_dict[node.tag] = node.text
            return return_dict
        elif errcode == 999:
            raise AuthUnknownError(self, errdesc[0].text)
        elif errcode in [101, 102, 103, 201, 301, 404]:
            raise AuthMissingParameter(self, errdesc[0].text)
        elif errcode in [405]:
            raise AuthStateForbidden(self, errdesc[0].text)
        else:
            raise AuthUnknownError(self, errdesc[0].text)
Example #2
0
 def validate_state(self):
     """Validate state value. Raises exception on error, returns state
     value if valid."""
     if not self.STATE_PARAMETER and not self.REDIRECT_STATE:
         return None
     state = self.get_session_state()
     request_state = self.get_request_state()
     if not request_state:
         raise AuthMissingParameter(self, 'state')
     elif not state:
         raise AuthStateMissing(self, 'state')
     elif not request_state == state:
         raise AuthStateForbidden(self)
     else:
         return state
Example #3
0
 def validate_state(self):
     """Validate state value. Raises exception on error, returns state
     value if valid."""
     if not self.STATE_PARAMETER and not self.REDIRECT_STATE:
         return None
     state = self.strategy.session_get(self.name + '_state')
     if state:
         request_state = self.data.get('state') or \
                         self.data.get('redirect_state')
         if not request_state:
             raise AuthMissingParameter(self, 'state')
         elif not state:
             raise AuthStateMissing(self, 'state')
         elif not request_state == state:
             raise AuthStateForbidden(self)
     return state
Example #4
0
    def validate_state(self):
        """Validate state value. Raises exception on error, returns state
        value if valid."""
        state = self.strategy.session_get(self.name + '_state')
        request_state = self.data.get('state')
        if request_state and isinstance(request_state, list):
            request_state = request_state[0]

        if not request_state:
            raise AuthMissingParameter(self, 'state')
        elif not state:
            raise AuthStateMissing(self, 'state')
        elif not request_state == state:
            raise AuthStateForbidden(self)
        else:
            return state
Example #5
0
class AuthStateForbiddenTest(BaseExceptionTestCase):
    exception = AuthStateForbidden('foobar')
    expected_message = 'Wrong state parameter given.'