def save(self, list_id=None): """ Saves the current member to the list :param list_id: the id of the list to save to - if not specified, the members list_id will be used :return: True if successful """ hash_value = self.id if not list_id: list_id = self.list_id if not self.id: response = Request.post("%s" % MCMember.get_list_url(list_id), self.to_dict()) self._update(response.json()) return True try: response = Request.put( "%s/%s" % (MCMember.get_list_url(list_id), hash_value), self.to_dict()) self._update(response.json()) return True except Exception as e: logger.error("Unable to save member") raise e
def test_put_with_relative_url(self): with responses.RequestsMock() as rsps: rsps.add(responses.PUT, 'https://us1.api.mailchimp.com/3.0/instance', json={"Instance": { "Id": 1 }}, status=200, content_type='application/json') response = Request.put('/instance', {"Id": 1}) response_json = response.json() self.assertTrue("Instance" in response_json.keys()) self.assertTrue("Id" in response_json['Instance'].keys()) self.assertEqual(1, response_json['Instance']['Id']) self.assertEqual(1, len(rsps.calls)) self.assertEqual("https://us1.api.mailchimp.com/3.0/instance", rsps.calls[0].request.url) self.assertEqual(json.dumps({"Id": 1}), rsps.calls[0].request.body.decode("utf-8")) self.assertEqual("application/json", rsps.calls[0].request.headers['Accept']) self.assertEqual("application/json", rsps.calls[0].request.headers['Content-Type']) self.assertEqual( "Basic dXNlcm5hbWU6YTY1YTY1YTY1YTY1YTY1YTU2YTVhNi11czE=", rsps.calls[0].request.headers['Authorization'])
def save(self): """ Saves the current category to the list :return: True if successful """ hash_value = self.id if not self.id: md = hashlib.md5() md.update(self.email_address.lower().encode("utf-8")) hash_value = md.hexdigest() try: response = Request.put( "%s/%s" % (MCMember.get_list_url(self.list_id), hash_value), self.to_dict()) self._update(response.json()) return True except Exception as e: logger.error("Unable to save member") raise e