mac のターミナルで打つ、curl コマンドに出てくる引数、 -d や -u などを、PHPではどう書くのかを調べました。
↓こちらのサイトを参考にしました。
TestException.php
<?php
class TestException extends \RuntimeException {
private $type;
private $status;
public function construct($message, $type, $status) {
parent::construct($message);
$this->type = $type;
$this->status = $status;
}
public function __toString() {
return "[$this->status] $this->type: {$this->getMessage()}";
}
public function getType() {
return $this->type;
}
public function getStatusCode() {
return $this->status;
}
}
TestClient.php
<?php
class TestClient {
private $apikey;
private $baseurl;
public function __construct($apikey, $baseurl){
$this->apikey = $apikey;
$this->baseurl = $baseurl;
}
public function post(array $params=[]){
$ch = curl_init();
curl_setopt_array($ch,[
CURLOPT_URL => "$this->baseurl",
CURLOPT_USERPWD => "$this->apikey:",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params, '', '&'),
]);
$r = json_decode(curl_exec($ch));
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if (curl_errno($ch)) {
throw new TestException(curl_error($ch), 'curl_error', 0);
}
if ($status >= 400) {
if (isset($r->error)) {
throw new TestException($r->error->message, $r->error->type, $status);
}
throw new TestException('不明なエラー', 'unknown', $status);
}
return $r;
}
}
Main
<?php
require_once 'TestClient.php';
require_once 'TestException.php';
$api_url = '[API_URL]';
$api_key = '[API_KEY]';
$msg = 'test';
try {
$client = new TestClient($api_key,$api_url);
$r = $client->post([
'text' => "'".$msg."'",
]);
} catch (TestException $e) {
var_dump((string)$e);
}