Архив метки: api

Gitlab API — создание, обновление файла на PHP

Ранее я писал как можно через curl в Linux выполнить запрос в Linux на создание файла или его обновление в репозитории Gitlab через его API. Ниже показано как это сделать через Curl, но уже в PHP.

Получить информацию по репозиторию:

<?php
$headers = ['PRIVATE-TOKEN: 123ABC'];

$url = 'https://main-git.ru/api/v4/projects/Dima/%2Fdima-tools';

$curl = curl_init();
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);                                                                                                                                        
curl_setopt($curl, CURLOPT_URL, $url);

$result = curl_exec($curl);
$info = curl_getinfo($curl);
curl_close($curl);

var_dump($info);
var_dump($result);

Создать файл в репозитории:


<?php

$json_array = array("branch" => "master", "author_email" => "dima@example.com", "author_name" => "Firstname Lastname", "content" => "some content", "commit_message" => "create a new file");

$JSON = json_encode($json_array);

$headers = array('PRIVATE-TOKEN: 123ABC', 'Content-Type: application/json');
$url = 'https://main-git.ru/api/v4/projects/1/repository/files/app%2Fmain';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($curl, CURLOPT_POSTFIELDS, $JSON);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);                                                                                                                                               
$result = curl_exec($curl);
$info = curl_getinfo($curl);
curl_close($curl);

Обновить файл в репозитории, при этом наполнить его содержимым из другого файла (create json array from file in php):


<?php

//читаем файл в строку, в файле должны быть переводы строк "\n" если хотите, чтобы в  //Gitlab была не одна строка без переносов
$hosts = file_get_contents('./file/hosts.txt');

$json_array = array("branch" => "master", "author_email" => "dima@russia.ru", "author_name" => "Red Dima", "content" => $hosts, "commit_message" => "update file");

$JSON = json_encode($json_array);

$headers = array('PRIVATE-TOKEN: 123ABC', 'Content-Type: application/json');
$url = 'https://main-git.msk.ru/api/v4/projects/1/repository/files/ansible%2Fhosts';

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_setopt($curl, CURLOPT_POSTFIELDS, $JSON);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);                                                                                                                                               
$result = curl_exec($curl);
$info = curl_getinfo($curl);
curl_close($curl);

var_dump($info);
var_dump($result);

Яндекс Вебмастер API — добавление оригинального текста PHP

<?php
//header("Content-Type: application/xml; charset=utf-8");

$user_id = 99999;
$host_id = 'https:site.ru:443';
$OAuth = 'key_here';


$data = 'Варкалось. Хливкие шорьки 
Пырялись по наве, 
И хрюкотали зелюки, 
Как мюмзики в мове. ';

$data = strip_tags($data);
$data = htmlspecialchars($data);
$data = iconv(mb_detect_encoding($data, mb_detect_order(), true), "UTF-8", $data);

$data = "<Data><content>{$data}</content></Data>";

$headers = array(
    'Content-type: application/xml;charset=UTF-8',
    'Authorization: OAuth '.$OAuth.''
);

$ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "https://api.webmaster.yandex.net/v4/user/$user_id/hosts/$host_id/original-texts/"); // отправка текста в яндекс
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS , $data);
    $output = curl_exec($ch);
    $debug = curl_getinfo($ch);;
		curl_close($ch);

   $info = json_decode($output, true);
    print_r($info);
    print_r($debug);

У Яндекс условие — текст должен быть более 500 символов.

Яндекс Вебмастер API — как получить оригинальные тексты PHP

<?php
$ch = curl_init('https://login.yandex.ru/info');
		curl_setopt($ch, CURLOPT_POST, 1);
		curl_setopt($ch, CURLOPT_POSTFIELDS, array('format' => 'json')); 
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth AADSDSddffdfdfdfdfdfjhkh777'));
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_HEADER, false);
		$info = curl_exec($ch);
		curl_close($ch);
 
		$info = json_decode($info, true);
		print_r($info);

Яндекс Вебмастер API — как получить host-id в PHP

Выполняем следующий скрипт, получение токена и user-id было произведено ранее.

<?php

$user_id = 4299035;
$token = '232sASDSDFweeregr';
 $ch = curl_init('https://api.webmaster.yandex.net/v4/user/".$user_id."/hosts'); //получение списка сайтов
		curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: OAuth ".$token."'));
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
		curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($ch, CURLOPT_HEADER, false);
		$info = curl_exec($ch);
		curl_close($ch);
 
		$info = json_decode($info, true);
		print_r($info);