48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| 
 | |
| class MastodonAPI
 | |
| {
 | |
|     private $token;
 | |
|     private $instance_url;
 | |
| 
 | |
|     public function __construct($token, $instance_url)
 | |
|     {
 | |
|         $this->token = $token;
 | |
|         $this->instance_url = $instance_url;
 | |
|     }
 | |
| 
 | |
|     public function postStatus($status)
 | |
|     {
 | |
|         return $this->callAPI('/api/v1/statuses', 'POST', $status);
 | |
|     }
 | |
| 
 | |
|     public function uploadMedia($media)
 | |
|     {
 | |
|         return $this->callAPI('/api/v1/media', 'POST', $media);
 | |
|     }
 | |
| 
 | |
|     public function callAPI($endpoint, $method, $data)
 | |
|     {
 | |
|         $headers = [
 | |
|             'Authorization: Bearer '.$this->token,
 | |
|             'Content-Type: multipart/form-data',
 | |
|         ];
 | |
| 
 | |
|         $ch = curl_init();
 | |
|         curl_setopt($ch, CURLOPT_URL, $this->instance_url.$endpoint);
 | |
|         curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
 | |
|         curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
 | |
|         curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
 | |
|         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
 | |
|         $reply = curl_exec($ch);
 | |
| 
 | |
|         if (!$reply) {
 | |
|             return json_encode(['ok'=>false, 'curl_error_code' => curl_errno($ch_status), 'curl_error' => curl_error(ch_status)]);
 | |
|         }
 | |
|         curl_close($ch);
 | |
| 
 | |
|         return json_decode($reply);
 | |
|     }
 | |
| }
 |