Minishlink\WebPush\Encryption::padPayload PHP Method

padPayload() public static method

public static padPayload ( string $payload, boolean $maxLengthToPad ) : string
$payload string
$maxLengthToPad boolean
return string padded payload (plaintext)
    public static function padPayload($payload, $maxLengthToPad)
    {
        $payloadLen = Utils::safeStrlen($payload);
        $padLen = $maxLengthToPad ? $maxLengthToPad - $payloadLen : 0;
        return pack('n*', $padLen) . str_pad($payload, $padLen + $payloadLen, chr(0), STR_PAD_LEFT);
    }

Usage Example

Exemplo n.º 1
0
 /**
  * Send a notification.
  *
  * @param string      $endpoint
  * @param string|null $payload       If you want to send an array, json_encode it
  * @param string|null $userPublicKey
  * @param string|null $userAuthToken
  * @param bool        $flush         If you want to flush directly (usually when you send only one notification)
  * @param array       $options       Array with several options tied to this notification. If not set, will use the default options that you can set in the WebPush object
  * @param array       $auth          Use this auth details instead of what you provided when creating WebPush
  *
  * @return array|bool Return an array of information if $flush is set to true and the queued requests has failed.
  *                    Else return true
  *
  * @throws \ErrorException
  */
 public function sendNotification($endpoint, $payload = null, $userPublicKey = null, $userAuthToken = null, $flush = false, $options = array(), $auth = array())
 {
     if (isset($payload)) {
         if (Utils::safeStrlen($payload) > Encryption::MAX_PAYLOAD_LENGTH) {
             throw new \ErrorException('Size of payload must not be greater than ' . Encryption::MAX_PAYLOAD_LENGTH . ' octets.');
         }
         $payload = Encryption::padPayload($payload, $this->automaticPadding);
     }
     if (array_key_exists('VAPID', $auth)) {
         $auth['VAPID'] = VAPID::validate($auth['VAPID']);
     }
     $this->notifications[] = new Notification($endpoint, $payload, $userPublicKey, $userAuthToken, $options, $auth);
     if ($flush) {
         $res = $this->flush();
         // if there has been a problem with at least one notification
         if (is_array($res)) {
             // if there was only one notification, return the information directly
             if (count($res) === 1) {
                 return $res[0];
             }
             return $res;
         }
         return true;
     }
     return true;
 }
All Usage Examples Of Minishlink\WebPush\Encryption::padPayload