public function put($path, $params = null)
 {
     $response = $this->_doRequest('PUT', $path, $this->_buildXml($params));
     $responseCode = $response['status'];
     if ($responseCode === 200 || $responseCode === 201 || $responseCode === 422 || $responseCode == 400) {
         return Xml::buildArrayFromXml($response['body']);
     } else {
         Util::throwStatusCodeException($responseCode);
     }
 }
 public static function parse($signature, $payload)
 {
     if (preg_match("/[^A-Za-z0-9+=\\/\n]/", $payload) === 1) {
         throw new Exception\InvalidSignature("payload contains illegal characters");
     }
     Configuration::assertGlobalHasAccessTokenOrKeys();
     self::_validateSignature($signature, $payload);
     $xml = base64_decode($payload);
     $attributes = Xml::buildArrayFromXml($xml);
     return self::factory($attributes['notification']);
 }