View file sdark.mobi/fs/resources/fotostrana.subrequest.php

File size: 2.64Kb
<?php

/**
 * Подкласс, формирующий URL и SIG для запроса к API
 */
class fotostranaSubRequest
{

    private $server_methods = array(
        'User.giveFBAchievment',
        'User.sendNotification',
        'Userphoto.checkAccess',
        'Billing.getUserBalanceAny',
        'Billing.withDrawMoneySafe',
        'User.sendAppEmail',
        'User.giveAchievment',
        'User.getAuthInfo',
        'Billing.getAppBalance',
		'User.getUserSettingsAny'
		// добавьте методы при необходимости
    );

    private function makeSig(array $params) {

        ksort($params);

        if (in_array($params['method'],$this->server_methods)) {
            $p_string='';
        } else {
            $p_string=FOTOSTRANA_VIEWER_ID;
        }

        foreach ($params as $k=>$v)
        {
            if ($k && $v) {
                if (is_array($v)) {
                    $p_string .= str_replace('&', '', urldecode(http_build_query(array($k => $v))));
                }
                else {
                    $p_string .= $k . '=' . $v;
                }
            }
        }

        if (in_array($params['method'],$this->server_methods)) {
            $p_string.=FOTOSTRANA_SERVERKEY;
        } else {
            $p_string.=FOTOSTRANA_CLIENTKEY;
        }

        if (FOTOSTRANA_DEBUG) { echo "p_string: ".$p_string."<br/><br/>\n"; }

        $sig = md5($p_string);
        return $sig;

    }

    function makeApiRequestUrl(array $params) {

        if (!array_key_exists('appId',$params))     { $params['appId']=FOTOSTRANA_APPID; }
        if (!array_key_exists('timestamp',$params)) { $params['timestamp']=time(); }
        if (!array_key_exists('format',$params))    { $params['format']=1; }
        if (!array_key_exists('rand',$params))      { $params['rand']=rand(1,999999); }

        if (!in_array($params['method'],$this->server_methods)) {
            $params['sessionKey'] = FOTOSTRANA_SESSION_KEY;
            $params['viewerId'] = FOTOSTRANA_VIEWER_ID;
        }

        ksort($params);
        $url=FOTOSTRANA_API_BASEURL.'?sig='.$this->makeSig($params);

        foreach ($params as $k=>$v)
        {
            if ($k && $v) {
                if (is_array($v)) {
                    $url .= '&' . urldecode(http_build_query(array($k => $v)));
                }
                else {
                    $url .= '&' . $k . '=' . urlencode($v);
                }
            }
        }

        if (!in_array($params['method'],$this->server_methods)) {
            $url.='&sessionKey='.FOTOSTRANA_SESSION_KEY.'&viewerId='.FOTOSTRANA_VIEWER_ID;
        }

        if (FOTOSTRANA_DEBUG) { echo "URL: ".htmlspecialchars($url)."<br/><br/>\n"; }

        return $url;

    }

}

?>