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)
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
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
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
class AuthStateForbiddenTest(BaseExceptionTestCase): exception = AuthStateForbidden('foobar') expected_message = 'Wrong state parameter given.'