%PDF- %PDF-
Direktori : /home/lightco1/www/plugins/vmpayment/amazon/library/OffAmazonPaymentsNotifications/Impl/ |
Current File : /home/lightco1/www/plugins/vmpayment/amazon/library/OffAmazonPaymentsNotifications/Impl/Message.php |
<?php /******************************************************************************* * Copyright 2013 Amazon.com, Inc. or its affiliates. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * * You may not use this file except in compliance with the License. * You may obtain a copy of the License at: * http://aws.amazon.com/apache2.0 * This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR * CONDITIONS OF ANY KIND, either express or implied. See the License * for the * specific language governing permissions and limitations under the * License. * ***************************************************************************** */ require_once 'OffAmazonPaymentsNotifications/InvalidMessageException.php'; /** * Class to wrap a message * */ class Message { /** * Json message as associative array * * @var array */ private $_message; /** * Metadata for the request * * @var NotificationMetadata */ private $_notificationMetadata = null; /** * Create a new instance of the message and * wraps the contents in a class * * Throws an exception if the message is not valid * as defined by the implementation of this class * * @param string $json json string * * @throws OffAmazonPaymentsNotifications_InvalidMessageException * * @return new instance of concreate class */ public function __construct($json) { $this->_message = json_decode($json, true); $json_error = json_last_error(); if ($json_error != 0) { $errorMsg = "Error with message - content is not in json format" . self::_getErrorMessageForJsonError($json_error) . " " . $json; throw new OffAmazonPaymentsNotifications_InvalidMessageException( $errorMsg ); } } /** * Set the notification metadata * * @param NotificationMetadata $notificationMetadata value to set * * @return void */ public function setNotificationMetadata($notificationMetadata) { $this->_notificationMetadata = $notificationMetadata; } /** * Get the notification metadata * * @return NotificationMetadata */ public function getNotificationMetadata() { return $this->_notificationMetadata; } /** * Extract the mandatory field from the message and return the contents * * @param string $fieldName name of the field to extract * * @throws OffAmazonPaymentsNotifications_InvalidMessageException if not found * * @return string field contents if found */ public function getMandatoryField($fieldName) { $value = $this->getField($fieldName); if (is_null($value)) { throw new OffAmazonPaymentsNotifications_InvalidMessageException( "Error with json message - mandatory field " . $fieldName . " cannot be found" ); } return $value; } /** * Extract the field if present, return null if not defined * * @param string $fieldName name of the field to extract * * @return string field contents if found, null otherwise */ public function getField($fieldName) { if (array_key_exists($fieldName, $this->_message)) { return $this->_message[$fieldName]; } else { return null; } } /** * Convert a json error code to a descriptive error * message * * @param int $json_error message code * * @return string error message */ private static function _getErrorMessageForJsonError($json_error) { switch ($json_error) { case JSON_ERROR_DEPTH: return " - maximum stack depth exceeded."; break; case JSON_ERROR_STATE_MISMATCH: return " - invalid or malformed JSON."; break; case JSON_ERROR_CTRL_CHAR: return " - control character error."; break; case JSON_ERROR_SYNTAX: return " - syntax error."; break; default: return "."; break; } } }