!C99Shell v. 2.5 [PHP 8 Update] [24.05.2025]!

Software: Apache. PHP/8.1.30 

uname -a: Linux server1.tuhinhossain.com 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC
2025 x86_64
 

uid=1002(picotech) gid=1003(picotech) groups=1003(picotech),0(root)  

Safe-mode: OFF (not secure)

/home/picotech/domains/wataxi.picotech.app/public_html/vendor/berkayk/onesignal-laravel/src/   drwxr-xr-x
Free 28.36 GB of 117.98 GB (24.04%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Self remove    Logout    


Viewing file:     OneSignalClient.php (14.17 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

namespace Berkayk\OneSignal;

use 
GuzzleHttp\Client;
use 
GuzzleHttp\Exception\ConnectException;
use 
GuzzleHttp\Exception\RequestException;
use 
GuzzleHttp\Handler\CurlHandler;
use 
GuzzleHttp\HandlerStack;
use 
GuzzleHttp\Middleware;
use 
GuzzleHttp\Psr7\Request as Psr7Request;
use 
GuzzleHttp\Psr7\Response as Psr7Response;

class 
OneSignalClient
{
    const 
API_URL "https://onesignal.com/api/v1";

    const 
ENDPOINT_NOTIFICATIONS "/notifications";
    const 
ENDPOINT_PLAYERS "/players";
    const 
ENDPOINT_APPS "/apps";

    protected 
$client;
    protected 
$headers;
    protected 
$appId;
    protected 
$restApiKey;
    protected 
$userAuthKey;
    protected 
$additionalParams;

    
/**
     * @var bool
     */
    
public $requestAsync false;

    
/**
     * @var int
     */
    
public $maxRetries 2;

    
/**
     * @var int
     */
    
public $retryDelay 500;

    
/**
     * @var Callable
     */
    
private $requestCallback;

    
/**
     * Turn on, turn off async requests
     *
     * @param bool $on
     * @return $this
     */
    
public function async($on true)
    {
        
$this->requestAsync $on;
        return 
$this;
    }

    
/**
     * Callback to execute after OneSignal returns the response
     * @param Callable $requestCallback
     * @return $this
     */
    
public function callback(Callable $requestCallback)
    {
        
$this->requestCallback $requestCallback;
        return 
$this;
    }

    
/**
     * @param $appId
     * @param $restApiKey
     * @param $userAuthKey
     * @param int $guzzleClientTimeout
     */
    
public function __construct($appId$restApiKey$userAuthKey$guzzleClientTimeout 0)
    {
        
$this->appId $appId;
        
$this->restApiKey $restApiKey;
        
$this->userAuthKey $userAuthKey;

        
$this->client = new Client([
            
'handler' => $this->createGuzzleHandler(),
            
'timeout' => $guzzleClientTimeout,
        ]);
        
$this->headers = ['headers' => []];
        
$this->additionalParams = [];
    }

    private function 
createGuzzleHandler() {
        return 
tap(HandlerStack::create(new CurlHandler()), function (HandlerStack $handlerStack) {
            
$handlerStack->push(Middleware::retry(function ($retriesPsr7Request $requestPsr7Response $response nullRequestException $exception null) {
                if (
$retries >= $this->maxRetries) {
                    return 
false;
                }

                if (
$exception instanceof ConnectException) {
                    return 
true;
                }

                if (
$response && $response->getStatusCode() >= 500) {
                    return 
true;
                }

                return 
false;
            }), 
$this->retryDelay);
        });
    }

    public function 
testCredentials() {
        return 
"APP ID: ".$this->appId." REST: ".$this->restApiKey;
    }

    private function 
requiresAuth() {
        
$this->headers['headers']['Authorization'] = 'Basic '.$this->restApiKey;
    }

    private function 
requiresUserAuth() {
        
$this->headers['headers']['Authorization'] = 'Basic '.$this->userAuthKey;
    }

    private function 
usesJSON() {
        
$this->headers['headers']['Content-Type'] = 'application/json';
    }

    public function 
addParams($params = [])
    {
        
$this->additionalParams $params;

        return 
$this;
    }

    public function 
setParam($key$value)
    {
        
$this->additionalParams[$key] = $value;

        return 
$this;
    }

    public function 
sendNotificationToUser($message$userId$url null$data null$buttons null$schedule null$headings null$subtitle null) {
        
$contents = array(
            
"en" => $message
        
);

        
$params = array(
            
'app_id' => $this->appId,
            
'contents' => $contents,
            
'include_player_ids' => is_array($userId) ? $userId : array($userId)
        );

        if (isset(
$url)) {
            
$params['url'] = $url;
        }

        if (isset(
$data)) {
            
$params['data'] = $data;
        }

        if (isset(
$buttons)) {
            
$params['buttons'] = $buttons;
        }

        if(isset(
$schedule)){
            
$params['send_after'] = $schedule;
        }

        if(isset(
$headings)){
            
$params['headings'] = array(
                
"en" => $headings
            
);
        }
        
        if(isset(
$subtitle)){
            
$params['subtitle'] = array(
                
"en" => $subtitle
            
);
        }

        
$this->sendNotificationCustom($params);
    }

    
/**
     * @param $message
     * @param $userId
     * @param null $url
     * @param null $data
     * @param null $buttons
     * @param null $schedule
     * @param null $headings
     * @param null $subtitle
     */
    
public function sendNotificationToExternalUser($message$userId$url null$data null$buttons null$schedule null$headings null$subtitle null) {
        
$contents = array(
            
"en" => $message
        
);

        
$params = array(
            
'app_id' => $this->appId,
            
'contents' => $contents,
            
'include_external_user_ids' => is_array($userId) ? $userId : array($userId)
        );

        if (isset(
$url)) {
            
$params['url'] = $url;
        }

        if (isset(
$data)) {
            
$params['data'] = $data;
        }

        if (isset(
$buttons)) {
            
$params['buttons'] = $buttons;
        }

        if(isset(
$schedule)){
            
$params['send_after'] = $schedule;
        }

        if(isset(
$headings)){
            
$params['headings'] = array(
                
"en" => $headings
            
);
        }

        if(isset(
$subtitle)){
            
$params['subtitle'] = array(
                
"en" => $subtitle
            
);
        }

        
$this->sendNotificationCustom($params);
    }
    public function 
sendNotificationUsingTags($message$tags$url null$data null$buttons null$schedule null$headings null$subtitle null) {
        
$contents = array(
            
"en" => $message
        
);

        
$params = array(
            
'app_id' => $this->appId,
            
'contents' => $contents,
            
'filters' => $tags,
        );

        if (isset(
$url)) {
            
$params['url'] = $url;
        }

        if (isset(
$data)) {
            
$params['data'] = $data;
        }

        if (isset(
$buttons)) {
            
$params['buttons'] = $buttons;
        }

        if(isset(
$schedule)){
            
$params['send_after'] = $schedule;
        }

        if(isset(
$headings)){
            
$params['headings'] = array(
                
"en" => $headings
            
);
        }
        
        if(isset(
$subtitle)){
            
$params['subtitle'] = array(
                
"en" => $subtitle
            
);
        }

        
$this->sendNotificationCustom($params);
    }

    public function 
sendNotificationToAll($message$url null$data null$buttons null$schedule null$headings null$subtitle null) {
        
$contents = array(
            
"en" => $message
        
);

        
$params = array(
            
'app_id' => $this->appId,
            
'contents' => $contents,
            
'included_segments' => array('All')
        );

        if (isset(
$url)) {
            
$params['url'] = $url;
        }

        if (isset(
$data)) {
            
$params['data'] = $data;
        }

        if (isset(
$buttons)) {
            
$params['buttons'] = $buttons;
        }

        if(isset(
$schedule)){
            
$params['send_after'] = $schedule;
        }

        if(isset(
$headings)){
            
$params['headings'] = array(
                
"en" => $headings
            
);
        }
        
        if(isset(
$subtitle)){
            
$params['subtitle'] = array(
                
"en" => $subtitle
            
);
        }

        
$this->sendNotificationCustom($params);
    }

    public function 
sendNotificationToSegment($message$segment$url null$data null$buttons null$schedule null$headings null$subtitle null) {
        
$contents = array(
            
"en" => $message
        
);

        
$params = array(
            
'app_id' => $this->appId,
            
'contents' => $contents,
            
'included_segments' => [$segment]
        );

        if (isset(
$url)) {
            
$params['url'] = $url;
        }

        if (isset(
$data)) {
            
$params['data'] = $data;
        }

        if (isset(
$buttons)) {
            
$params['buttons'] = $buttons;
        }

        if(isset(
$schedule)){
            
$params['send_after'] = $schedule;
        }

        if(isset(
$headings)){
            
$params['headings'] = array(
                
"en" => $headings
            
);
        }
        
        if(isset(
$subtitle)){
            
$params['subtitle'] = array(
                
"en" => $subtitle
            
);
        }

        
$this->sendNotificationCustom($params);
    }

    public function 
deleteNotification($notificationId$appId null) {
        
$this->requiresAuth();

        if(!
$appId)
            
$appId $this->appId;
        
$notificationCancelNode "/$notificationId?app_id=$this->appId";
        return 
$this->delete(self::ENDPOINT_NOTIFICATIONS $notificationCancelNode);

    }

    
/**
     * Send a notification with custom parameters defined in
     * https://documentation.onesignal.com/reference#section-example-code-create-notification
     * @param array $parameters
     * @return mixed
     */
    
public function sendNotificationCustom($parameters = []){
        
$this->requiresAuth();
        
$this->usesJSON();

        if (isset(
$parameters['api_key'])) {
            
$this->headers['headers']['Authorization'] = 'Basic '.$parameters['api_key'];
        }

        
// Make sure to use app_id
        
if (!isset($parameters['app_id'])) {
            
$parameters['app_id'] = $this->appId;
        }

        
// Make sure to use included_segments
        
if (empty($parameters['included_segments']) && empty($parameters['include_player_ids']) && empty('include_external_user_ids')) {
            
$parameters['included_segments'] = ['All'];
        }

        
$parameters array_merge($parameters$this->additionalParams);

        
$this->headers['body'] = json_encode($parameters);
        
$this->headers['buttons'] = json_encode($parameters);
        
$this->headers['verify'] = false;
        return 
$this->post(self::ENDPOINT_NOTIFICATIONS);
    }

    public function 
getNotification($notification_id$app_id null) {
        
$this->requiresAuth();
        
$this->usesJSON();

        if(!
$app_id)
            
$app_id $this->appId;

        return 
$this->get(self::ENDPOINT_NOTIFICATIONS '/'.$notification_id '?app_id='.$app_id);
    }

    public function 
getNotifications($app_id null$limit null$offset null) {
        
$this->requiresAuth();
        
$this->usesJSON();

        
$endpoint self::ENDPOINT_NOTIFICATIONS;
        
        if(!
$app_id) {
            
$app_id $this->appId;
        }

        
$endpoint.='?app_id='.$app_id;

        if(
$limit) {
            
$endpoint.="&limit=".$limit;
        }

        if(
$offset) {
            
$endpoint.="&offset=".$$offset;
        }

        return 
$this->get($endpoint);
    }

    public function 
getApp($app_id null) {
        
$this->requiresUserAuth();
        
$this->usesJSON();

        if(!
$app_id)
            
$app_id $this->appId;

        return 
$this->get(self::ENDPOINT_APPS '/'.$app_id);
    }

    public function 
getApps() {
        
$this->requiresUserAuth();
        
$this->usesJSON();

        return 
$this->get(self::ENDPOINT_APPS);
    }

    
/**
     * Creates a user/player
     *
     * @param array $parameters
     * @return mixed
     * @throws \Exception
     */
    
public function createPlayer(Array $parameters) {
        if(!isset(
$parameters['device_type']) or !is_numeric($parameters['device_type'])) {
            throw new 
\Exception('The `device_type` param is required as integer to create a player(device)');
        }
        return 
$this->sendPlayer($parameters'POST'self::ENDPOINT_PLAYERS);
    }

    
/**
     * Edit a user/player
     *
     * @param array $parameters
     * @return mixed
     */
    
public function editPlayer(Array $parameters) {
        return 
$this->sendPlayer($parameters'PUT'self::ENDPOINT_PLAYERS '/' $parameters['id']);
    }

    public function 
requestPlayersCSV($app_id null, Array $parameters null) {
        
$this->requiresAuth();
        
$this->usesJSON();

        
$endpoint self::ENDPOINT_PLAYERS."/csv_export?";
        
$endpoint .= "app_id" $app_id?$app_id:$this->appId;

        return 
$this->sendPlayer($parameters'POST'$endpoint);
    }

    
/**
     * Create or update a by $method value
     *
     * @param array $parameters
     * @param $method
     * @param $endpoint
     * @return mixed
     */
    
private function sendPlayer(Array $parameters$method$endpoint)
    {
        
$this->requiresAuth();
        
$this->usesJSON();

        
$parameters['app_id'] = $this->appId;
        
$this->headers['body'] = json_encode($parameters);

        
$method strtolower($method);
        return 
$this->{$method}($endpoint);
    }

    public function 
post($endPoint) {
        if(
$this->requestAsync === true) {
            
$promise $this->client->postAsync(self::API_URL $endPoint$this->headers);
            return (
is_callable($this->requestCallback) ? $promise->then($this->requestCallback) : $promise);
        }
        return 
$this->client->post(self::API_URL $endPoint$this->headers);
    }

    public function 
put($endPoint) {
        if(
$this->requestAsync === true) {
            
$promise $this->client->putAsync(self::API_URL $endPoint$this->headers);
            return (
is_callable($this->requestCallback) ? $promise->then($this->requestCallback) : $promise);
        }
        return 
$this->client->put(self::API_URL $endPoint$this->headers);
    }

    public function 
get($endPoint) {
        return 
$this->client->get(self::API_URL $endPoint$this->headers);
    }

    public function 
delete($endPoint) {
        if(
$this->requestAsync === true) {
            
$promise $this->client->deleteAsync(self::API_URL $endPoint$this->headers);
            return (
is_callable($this->requestCallback) ? $promise->then($this->requestCallback) : $promise);
        }
        return 
$this->client->delete(self::API_URL $endPoint$this->headers);
    }
}

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ ok ]

:: Make Dir ::
 
[ ok ]
:: Make File ::
 
[ ok ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v. 2.5 [PHP 8 Update] [24.05.2025] | Generation time: 0.0053 ]--