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



 

Здравствуйте, гость (

| Вход | Регистрация )

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


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


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

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

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


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


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


Цитата(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


Код
$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


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


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


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


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

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

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.


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


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


Свернуть

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

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) ✅ sms.chekons.com - ⭐ Сервис для получения SMS на реальные номера USA "Non-VoIP, безлим SMS, API" ⭐
Сервис для получения SMS на реальные номера USA
13 Chekon 4078 18.4.2024, 11:48
автор: Chekon
Открытая тема (нет новых ответов) Если в сайт с одними ключами, которые там долго, добавить новую рубрику с новыми ключами
2 Tutich 1234 16.4.2024, 8:27
автор: Tutich
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6845 8.4.2024, 17:17
автор: spoyer_ru
Открытая тема (нет новых ответов) Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на первый заказ.
Мегамаркет. Скидка 1000 рублей при покупке от 5000 рублей на все, на п
7 stu999 1753 31.3.2024, 11:19
автор: stu999
Открытая тема (нет новых ответов) Продажа аккаунтов ChatGPT (OpenAI / DALL·E) с балансом API KEY 5$
10 Gagablik 2958 13.2.2024, 0:05
автор: malamut


 



RSS Текстовая версия Сейчас: 20.4.2024, 7:11
Дизайн