X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Добавить ответ в эту тему
> Yii. Добавить API Key при подключении к внешнему ресурсу., Как правильно прописать код?
phoenix_kys
phoenix_kys
Topic Starter сообщение 14.5.2020, 14:49; Ответить: phoenix_kys
Сообщение #1


Старожил
******

Группа: Active User
Сообщений: 1543
Регистрация: 15.5.2009
Поблагодарили: 242 раза
Репутация:   37  


Yii. Добавить API Key при подключении к https://api.adm.com/v1/

1 вариант - Via a custom header named API-KEY-1
2 вариант - Via a query string parameter named API-KEY-3

Как я понимаю, это делается через $APIREST:
Код
$ApiKey='API-KEY';
$C1Url='https://api.adm.com/v1/';
$APIREST = new APIREST($C1Url);
$C2Coins= $APIREST->call(
    array('API-KEY-1:'.$ApiKey)
);


Но в программировании не силен, из-за чего нужна помощь, как правильно вписать в мой код.

Код
<?php

namespace app\controllers;

use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\web\Response;
use yii\filters\VerbFilter;
use app\models\LoginForm;
use app\models\ContactForm;
use app\models\Cry2;
use app\models\Cry3;
use app\models\UserSmsModel;
use app\models\UserSmsSearchModel;
use yii\web\NotFoundHttpException;

class C2Controller extends Controller
{
    public function behaviors()
    {
        return [
            'access' => [
                'class' => AccessControl::className(),
                'only' => ['index', 'update', 'delete', 'history', 'delete-message'],
                'rules' => [
                    [
                        'allow' => true,
                        'actions' => ['index', 'update', 'delete', 'history', 'delete-message'],
                        'roles' => ['@'],
                    ],
                ],
            ]
        ];
    }

    public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }

    public function actionIndex()
    {
        $Cry2 = new Cry2();

        if ($Cry2->load(Yii::$app->request->post()) && $Cry2->validate()) {
            $json_string = Yii::$app->params['urlApi9'] . $Cry2->name . '/?convert=USD';
            $jsondata = file_get_contents($json_string);
            $obj = json_decode($jsondata, true);

            if (isset($obj[0]['price_usd'])) {
                $Cry2->price = $obj[0]['price_usd'];
                $Cry2->time_start = date('Y-m-d H:i:s', time());
                $Cry2->save();
            }
            else {
                $message = 'Неверный запрос к валюте ' . $Cry2->name;
                Yii::$app->session->setFlash('message', '<strong>' . $message . '</strong>');
            }
            return $this->redirect(['index']);
        }

        $searchModel = new Cry3();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        $currencies = self::getNewCurrenciesNames(Yii::$app->params['urlApi9']);

        return $this->render('index', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
            'Cry2' => $Cry2,
            'currencies' => $currencies,
        ]);
    }

    public function actionUpdate($id)
    {
        $Cry2 = $this->findModel(Cry2::className(), $id);
        
        if ($Cry2->load(Yii::$app->request->post()) && $Cry2->save()) {
            return $this->redirect(['index']);
        }

        $currencies = self::getNewCurrenciesNames(Yii::$app->params['urlApi9'], $Cry2->name);

        return $this->render('update', [
            'Cry2' => $Cry2,
            'currencies' => $currencies,
        ]);
    }

    public function actionDelete($id)
    {
        $Cry2 = $this->findModel(Cry2::className(), $id);
        $Cry2->delete();
        
        return $this->redirect(['index']);
    }

    public function actionHistory()
    {
        $searchModel = new UserSmsSearchModel();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('history', [
            'searchModel' => $searchModel,
            'dataProvider' => $dataProvider,
        ]);
    }

    public function actionDeleteMessage($id)
    {
        $UserSmsModel = $this->findModel(UserSmsModel::className(), $id);
        $userSmsModel->delete();
        
        return $this->redirect(['history']);
    }

    protected function findModel($className, $id)
    {
        if (($model = $className::findOne($id)) !== null) {
            return $model;
        } else {
            throw new NotFoundHttpException('The requested model does not exist.');
        }
    }

    private function getNewCurrenciesNames($path, $name = null) {
        $jsondata = file_get_contents($path);
        $obj = json_decode($jsondata, true);

        $allCurrencies = [];
        foreach ($obj as $currency) {
            $allCurrencies[$currency['name']] = $currency['id'];
        }

        $cr9Names =[];
        $Cry2s = Cry2::find()->all();
        foreach ($Cry2s as $Cry2) {
            $cr9Names[] = $Cry2->name;
        }
            
        if ($name) {
            $key = array_search($name, $cr9Names);
            if (false !== $key) unset($cr9Names[$key]);
        }

        $currencies = array_diff($allCurrencies, $cr9Names);
        $currencies = array_flip($currencies);
        asort($currencies);

        return $currencies;
    }
}



urlApi9 такой:

Код
<?php

return [
    'adminEmail' => 'adm@adm.net',
    'urlApi9' => 'https://api.adm.com/v1/',
    'urlWm'    => 'https://api2.adm.ru/',
];


--------------------
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KOLIAN
KOLIAN
сообщение 14.5.2020, 15:31; Ответить: KOLIAN
Сообщение #2


Участник
***

Группа: User
Сообщений: 141
Регистрация: 9.7.2015
Поблагодарили: 23 раза
Репутация:   4  


Цитата
$ApiKey='API-KEY';

Сюда ключ впишете и все.

Сообщение отредактировал KOLIAN - 14.5.2020, 15:33


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
phoenix_kys
phoenix_kys
Topic Starter сообщение 15.5.2020, 1:52; Ответить: phoenix_kys
Сообщение #3


Старожил
******

Группа: Active User
Сообщений: 1543
Регистрация: 15.5.2009
Поблагодарили: 242 раза
Репутация:   37  


Цитата(KOLIAN @ 14.5.2020, 14:31) *
Как я понимаю, это делается через $APIREST:


код $APIREST я привел как пример.. и нужно вписать в мой код.
где вызывается - $json_string = Yii::$app->params['urlApi9'] . $Cry2->name . '/?convert=USD';
но как правильно вписать я не знаю
...
как вписать приведенный первый код в 2 или 3 ?
вопрос все же актуальный:)

Сообщение отредактировал phoenix_kys - 15.5.2020, 1:52


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Adspect
Adspect
сообщение 18.5.2020, 16:35; Ответить: Adspect
Сообщение #4


Новичок
*


Группа: User
Сообщений: 20
Регистрация: 18.5.2020
Поблагодарили: 3 раза
Репутация:   0  


Код
$json_string = Yii::$app->params['urlApi9'] . $Cry2->name . '/?convert=USD&API-KEY-3=' . $ApiKey;


--------------------
https://www.adspect.ai/ — клоакинг Facebook, Google Ads, ExoClick, PropellerAds.


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Adspect
Adspect
сообщение 19.5.2020, 19:00; Ответить: Adspect
Сообщение #5


Новичок
*


Группа: User
Сообщений: 20
Регистрация: 18.5.2020
Поблагодарили: 3 раза
Репутация:   0  


phoenix_kys, я не могу пока писать личные сообщения из-за недостаточного количества постов. Продолжим здесь:

Цитата
ругается на name.


Что конкретно пишет?


--------------------
https://www.adspect.ai/ — клоакинг Facebook, Google Ads, ExoClick, PropellerAds.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
phoenix_kys
phoenix_kys
Topic Starter сообщение 20.5.2020, 12:45; Ответить: phoenix_kys
Сообщение #6


Старожил
******

Группа: Active User
Сообщений: 1543
Регистрация: 15.5.2009
Поблагодарили: 242 раза
Репутация:   37  


Цитата
Что конкретно пишет?


Undefined index: name на $allCurrencies[$currency['name']] = $currency['id'];

Если включаю - error_reporting(E_ALL & ~E_NOTICE);
То выводит:

PHP Warning – yii\base\ErrorException
array_flip(): Can only flip STRING and INTEGER values!

$currencies = array_flip($currencies);

Сообщение отредактировал phoenix_kys - 20.5.2020, 12:46


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Adspect
Adspect
сообщение 20.5.2020, 14:28; Ответить: Adspect
Сообщение #7


Новичок
*


Группа: User
Сообщений: 20
Регистрация: 18.5.2020
Поблагодарили: 3 раза
Репутация:   0  


Цитата
Undefined index: name на $allCurrencies[$currency['name']] = $currency['id'];

Это странно, так как в том JSON, что ты мне прислал, объекты имеют свойство "name". Давай для начала разберемся: какой формат должен быть у массива, который возвращается этим методом? Эта функция в целом написана очень коряво, поэтому мне проще понять ее логику и переписать целиком как надо.

Сообщение отредактировал Adspect - 20.5.2020, 14:29


--------------------
https://www.adspect.ai/ — клоакинг Facebook, Google Ads, ExoClick, PropellerAds.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Добавить ответ в эту тему
Быстрый ответ
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) тИЦ отменили! Новый показатель Яндекса ИКС! Лучшие площадки под размещение. Бесплатное написание статей при любом заказе.
Эксклюзивное предложение. Успей получить написание статей БЕСПЛАТНО
76 VIMstat 50632 7.7.2020, 13:17
автор: VIMstat
Открытая тема (нет новых ответов) Как избежать проблем с законом при создании адалт сайта?
4 7Assassin7 322 7.7.2020, 11:26
автор: EvilGomel
Открытая тема (нет новых ответов) 301 редирект заменит директиву Host при выборе главного зеркала
3 artstyle 306 30.6.2020, 23:17
автор: Tradedude
Открытая тема (нет новых ответов) Подскажите по внешнему виду и функционалу
15 Iga 1584 25.6.2020, 23:54
автор: DocAnton64
Открытая тема (нет новых ответов) Вакансия php+yii. Удаленно. 4 часа в день. 25000 р.
0 giovanni 237 17.6.2020, 10:31
автор: giovanni


 



RSS Текстовая версия Сейчас: 12.7.2020, 1:40
Дизайн