Created
October 8, 2020 10:28
-
-
Save b4oshany/b2e99ffc16a22a8a04eb8b5d15ec7615 to your computer and use it in GitHub Desktop.
Discourse API - Generate new topics, posts and PM
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
header('Content-Type: application/json'); | |
//Make sure that it is a POST request. | |
if (strcasecmp($_SERVER['REQUEST_METHOD'], 'POST') != 0) { | |
echo json_encode(array("error" => 'Request method must be POST!')); | |
} | |
//Make sure that the content type of the POST request has been set to application/json | |
$contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : ''; | |
if (strcasecmp($contentType, 'application/json') != 0) { | |
echo json_encode(array("error" => 'Content type must be: application/json')); | |
} | |
//Receive the RAW post data. | |
$content = trim(file_get_contents("php://input")); | |
//Attempt to decode the incoming RAW post data from JSON. | |
$payload = json_decode($content, true); | |
//If json_decode failed, the JSON is invalid. | |
if (!is_array($payload)) { | |
echo json_encode(array("error" => 'Received content contained invalid JSON!')); | |
die(); | |
} | |
if (empty($payload['discourse_endpoint'])) { | |
echo json_encode(array("error" => 'Discourse endpoint must be provided in the json body!')); | |
die(); | |
} | |
if (empty($payload['api_key'])) { | |
echo json_encode(array("error" => 'Discourse API Key must be provided in the json body!')); | |
die(); | |
} | |
if (empty($payload['api_username'])) { | |
echo json_encode(array("error" => 'Discourse API User must be provided in the json body!')); | |
die(); | |
} | |
$discourse_endpoint = $payload['discourse_endpoint']; | |
$api_key = $payload['api_key']; | |
$api_user = $payload['api_username']; | |
unset($payload['discourse_endpoint']); | |
unset($payload['api_key']); | |
unset($payload['api_username']); | |
$data_string = json_encode($payload); | |
$ch = curl_init($discourse_endpoint); | |
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); | |
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string); | |
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); | |
curl_setopt($ch, CURLOPT_HTTPHEADER, array( | |
'Content-Type: application/json', | |
"Api-key: $api_key", | |
"Api-username: $api_user", | |
'Content-Length: ' . strlen($data_string) | |
)); | |
$result = curl_exec($ch); | |
echo $result; | |
?> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment