/** Convert model to JSON. */ public static function convertToJSON($model, $toString = false) { $conversionRules = Models::getConversionRules(get_class($model)); $result = array(); // Keep original simple values: $objectVars = get_object_vars($model); foreach ($objectVars as $key => $value) { if (is_string($value) || is_numeric($value)) { $result[$key] = $value; } } foreach ($conversionRules as $conversionRule) { if ($conversionRule instanceof FieldConversionRule) { $fieldName = $conversionRule->field; // TODO what if field names in JSON and in model are not the same? $result[$fieldName] = $conversionRule->toJSON($model->{$fieldName}); } else { if ($conversionRule instanceof FieldConversionRule) { // TODO } } } if ($toString) { return json_encode($result); } return $result; }
use infobip\Models; class TerminalRoamingExtendedData extends AbstractObject { public $destinationAddress; public $statusId; public $doneTime; public $pricePerMessage; public $mccMnc; public $servingMsc; public $censoredServingMsc; public $gsmErrorCode; public $originalNetworkName; public $portedNetworkName; public $servingHlr; public $imsi; public $originalNetworkPrefix; public $originalCountryPrefix; public $originalCountryName; public $isNumberPorted; public $portedNetworkPrefix; public $portedCountryPrefix; public $portedCountryName; public $numberInRoaming; public function __construct() { parent::__construct(); } } Models::register('infobip\\models\\TerminalRoamingExtendedData');
<?php use infobip\Conversions; use infobip\Models; use infobip\models\AbstractObject; use infobip\ObjectArrayConversionRule; require_once 'oneapi/client.php'; class Person extends AbstractObject { public $name; public $surname; public $aliases; } Models::register('Person', array(new ObjectArrayConversionRule('Alias', 'aliases'))); class Alias extends AbstractObject { public $alias; } Models::register('Alias'); $json = '{"surname": "bbb", "name": "aaa", "aliases": [{"alias": "qqqq"}, {"alias": "wwww"}, {"alias": "yyyy"}]}'; $result = Conversions::createFromJSON('Person', $json, false); assert($result); assert($result->surname == 'bbb'); assert(sizeof($result->aliases) == 3); assert($result->aliases[1]->alias == 'wwww');
<?php namespace infobip\models; use infobip\Models; use infobip\SubObjectConversionRule; class AccountBalance extends AbstractObject { public $balance; public $currency; public function __construct() { parent::__construct(); } } Models::register('infobip\\models\\AccountBalance', new SubObjectConversionRule('infobip\\models\\Currency', 'currency'));
<?php namespace infobip\models; use infobip\Models; use infobip\SubFieldConversionRule; use infobip\SubObjectConversionRule; class TerminalRoamingStatusNotification extends AbstractObject { public $terminalRoamingStatus; public $callbackData; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\TerminalRoamingStatusNotification', array(new SubObjectConversionRule('infobip\\models\\TerminalRoamingStatus', 'terminalRoamingStatus', 'terminalRoamingStatusList.roaming'), new SubFieldConversionRule('callbackData', 'terminalRoamingStatusList.roaming.callbackData')));
<?php namespace infobip\models; use infobip\Models; use infobip\ObjectArrayConversionRule; class DeliveryReportSubscriptions extends AbstractObject { public $subscriptionId; public function __construct() { parent::__construct(); } } Models::register('infobip\\models\\DeliveryReportSubscriptions', new ObjectArrayConversionRule('infobip\\models\\DeliveryReportSubscription', 'deliveryReceiptSubscriptions'));
<?php namespace infobip\models; use infobip\Models; class Hlr extends AbstractObject { public $clientCorrelator; public $address; public $notifyURL; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\Hlr');
<?php namespace infobip\models; use infobip\Models; use infobip\ObjectConversionRule; use infobip\utils\Utils; class SmsException extends AbstractObject { public $messageId; public $text; public $variables; public function __construct($array = null) { parent::__construct($array, true); } } function __convert_sms_exception_from_json($object, $json) { $exception = Utils::getArrayValue($json, 'requestError.serviceException', Utils::getArrayValue($json, 'requestError.policyException', null)); if ($exception) { $object->messageId = Utils::getArrayValue($exception, 'messageId', ''); $object->text = Utils::getArrayValue($exception, 'text', ''); $object->variables = Utils::getArrayValue($exception, 'variables', array()); } } Models::register('infobip\\models\\SmsException', new ObjectConversionRule('infobip\\models\\__convert_sms_exception_from_json'));
<?php namespace infobip\models; use infobip\Conversions; use infobip\Models; use infobip\utils\Logs; use infobip\models\SmsException; class Language { public $languageCode; public $useSingleShift; public $useLockingShift; public function __construct($array = null, $success = true) { if (!$success) { $this->exception = new SmsException($array); } else { if ($array) { Logs::warn('Constructor with JSON params in ' . get_class($this) . ' is deprecated, use Conversions utility class!'); Conversions::fillFromJSON($this, $array, !$success); } } } } Models::register('infobip\\models\\Language');
<?php namespace infobip\models; use infobip\Models; class Country extends AbstractObject { public $id; public $code; public $prefix; public $name; public $locale; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\Country');
<?php namespace infobip\models\two_factor_authentication; use infobip\Models; use infobip\models\AbstractObject; class TfaApplicationConfiguration extends AbstractObject { public $pinTimeToLive; public $pinAttempts; public $verificationAttempts; public $verificationIntervalLength; public $initiationAttempts; public $initiationIntervalLength; public $overallInitiationAttempts; public $overallInitiationIntervalLength; public $initiationThrottlingProlongationFactor; public $initiationThrottlingWaitPeriod; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\two_factor_authentication\\TfaApplicationConfiguration');
<?php namespace infobip\models\iam; use infobip\Models; use infobip\models\AbstractObject; class IamServiceException extends AbstractObject { public $messageId; public $text; public $stackTrace; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\iam\\IamServiceException');
<?php namespace infobip\models; use infobip\Models; class CustomerProfile extends AbstractObject { public $id; public $username; public $forename; public $surname; public $street; public $city; public $zipCode; public $telephone; public $gsm; public $fax; public $email; public $msn; public $skype; public $countryId; public $timezoneId; public $primaryLanguageId; public $secondaryLanguageId; public function __construct() { parent::__construct(); } } Models::register('infobip\\models\\CustomerProfile');
<?php namespace infobip\models\two_factor_authentication; use infobip\Models; use infobip\models\AbstractObject; use infobip\SubObjectConversionRule; class TfaApplication extends AbstractObject { public $applicationId; public $name; public $enabled; public $processId; public $configuration; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\two_factor_authentication\\TfaApplication', array(new SubObjectConversionRule('infobip\\models\\two_factor_authentication\\TfaApplicationConfiguration', 'configuration')));
<?php namespace infobip\models; use infobip\Models; class Price extends AbstractObject { public $price; public $currency; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\Price');
<?php namespace infobip\models; use infobip\Models; use infobip\SubObjectConversionRule; class Network extends AbstractObject { public $id; public $name; public $country; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\Network', new SubObjectConversionRule('infobip\\models\\Country', 'country'));
<?php namespace infobip\models\iam; use infobip\Models; use infobip\models\AbstractObject; use infobip\SubObjectConversionRule; class IamRequestError extends AbstractObject { public $serviceException; public $clientCorrelator; public $variables; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\iam\\IamRequestError', array(new SubObjectConversionRule('infobip\\models\\iam\\IamServiceException', 'serviceException')));
<?php namespace infobip\models; use infobip\Models; class Currency extends AbstractObject { public $id; public $currencyName; public $symbol; public function __construct() { parent::__construct(); } } Models::register('infobip\\models\\Currency');
use infobip\models\AbstractObject; /** * SMS request object. */ class SMSRequest extends AbstractObject { public $senderAddress; public $senderName; public $message; public $address; public $language; /** Used later for querying about the message status. */ public $clientCorrelator; /** * If not empty -- this is the url where the delivery notification will be pushed. * * If empty -- the delivery notification may be queried using the * clientCorrelator string. */ public $notifyURL; /** Arbitrary string that will be pushed if notifyURL is set. */ public $callbackData; // TODO // public $dataCoding; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\SMSRequest');
<?php namespace infobip\models; use infobip\Models; /** * Social Invite request object. */ class SocialInviteRequest extends AbstractObject { public $senderAddress; public $recipients; public $messageKey; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\SocialInviteRequest');
<?php use infobip\Conversions; use infobip\Models; use infobip\models\AbstractObject; use infobip\SubscriptionIdFieldConversionRule; require_once '../oneapi/client.php'; $json = '{"deliveryReceiptSubscription":{"callbackReference":{"callbackData":null,"notifyURL":"http://192.168.10.111/save_requests"},"resourceURL":"http://oneapi.infobip.com/1/smsmessaging/outbound/subscriptions/q1id6ksfc8"}}'; class TestClass_32749789 extends AbstractObject { public $subscriptionId; public function __construct() { parent::__construct(); } } Models::register('TestClass_32749789', new SubscriptionIdFieldConversionRule('subscriptionId', 'deliveryReceiptSubscription.resourceURL')); $object = Conversions::createFromJSON('TestClass_32749789', $json, false); assert($object); assert($object->subscriptionId == 'q1id6ksfc8');
<?php namespace infobip\models; use infobip\Models; use infobip\SubscriptionIdFieldConversionRule; /** * Resulting object on message (HLR/LBS) send. */ class ResourceReference extends AbstractObject { /** * The client correlator for this message. This value may be used to query * for message status later. */ public $clientCorrelator; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\ResourceReference', new SubscriptionIdFieldConversionRule('clientCorrelator', 'resourceReference.resourceURL'));
<?php namespace infobip\models\two_factor_authentication; use infobip\Models; use infobip\models\AbstractObject; class TfaIsVerifiedRequest extends AbstractObject { public $applicationId; public $phoneNumber; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\two_factor_authentication\\TfaIsVerifiedRequest');
<?php namespace infobip\models; use infobip\Models; /** Generic object to be used for API methods that return without body. */ class GenericObject extends AbstractObject { public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\GenericObject');
<?php namespace infobip\models; use infobip\Models; class Timezone extends AbstractObject { public $id; public $name; public $standardUtcOffset; public $dstOffset; public $dstStartTime; public $dstEndTime; public $countryId; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\Timezone');
use infobip\Conversions; use infobip\Models; use infobip\ObjectConversionRule; use infobip\utils\Utils; class InboundSmsMessages extends AbstractObject { # FIXME: rename to messages public $inboundSMSMessage; public $numberOfMessagesInThisBatch; //public $resourceURL; public $totalNumberOfPendingMessages; public $callbackData; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } function __convert_inbound_sms_messages($object, $jsonData) { $messages = Utils::getArrayValue($jsonData, 'inboundSMSMessageList.inboundSMSMessage', array()); $object->inboundSMSMessage = array(); foreach ($messages as $message) { $object->inboundSMSMessage[] = Conversions::createFromJSON('infobip\\models\\InboundSmsMessage', $message, false); } $object->numberOfMessagesInThisBatch = Utils::getArrayValue($jsonData, 'inboundSMSMessageList.numberOfMessagesInThisBatch', 0); $object->totalNumberOfPendingMessages = Utils::getArrayValue($jsonData, 'inboundSMSMessageList.totalNumberOfPendingMessages', 0); $object->callbackData = Utils::getArrayValue($jsonData, 'inboundSMSMessageList.callbackData'); } Models::register('infobip\\models\\InboundSmsMessages', new ObjectConversionRule('infobip\\models\\__convert_inbound_sms_messages'));
<?php namespace infobip\models; use infobip\Models; class SmsMessageSubscription extends AbstractObject { public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\SmsMessageSubscription');
<?php namespace infobip\models\two_factor_authentication; use infobip\Models; use infobip\models\AbstractObject; class TfaResponse extends AbstractObject { public $smsId; public $phoneNumber; public $hlrStatus; public $smsStatus; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\two_factor_authentication\\TfaResponse');
<?php namespace infobip\models; use infobip\Models; class Captcha extends AbstractObject { public $id; public $width; public $height; public $imageFormat; public $image; public function __construct($array = null, $success = true) { parent::__construct($array, $success); } } Models::register('infobip\\models\\Captcha');
<?php namespace infobip\models; use infobip\Models; class ServingMccMnc extends AbstractObject { public $mcc; public $mnc; public function __construct() { parent::__construct(); } } Models::register('infobip\\models\\ServingMccMnc');