Remaining network functions
This commit is contained in:
parent
ce35f3e036
commit
75df539eca
105
src/APnutI.php
105
src/APnutI.php
@ -480,4 +480,109 @@ class APnutI
|
|||||||
{
|
{
|
||||||
return $this->get('/users/'.$user_id.'/avatar', $args);
|
return $this->get('/users/'.$user_id.'/avatar', $args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function updateAvatar(
|
||||||
|
string $file_path,
|
||||||
|
?string $filename = null,
|
||||||
|
?string $content_type = null
|
||||||
|
): User {
|
||||||
|
if (empty($content_type)) {
|
||||||
|
$content_type = mime_content_type($file_path);
|
||||||
|
}
|
||||||
|
if (empty($filename)) {
|
||||||
|
$filename = basename($file_path);
|
||||||
|
}
|
||||||
|
|
||||||
|
$cf = new \CURLFile($file_path, $content_type, $filename);
|
||||||
|
$parameters = ['avatar' => $cf];
|
||||||
|
return new User(
|
||||||
|
$this->post('/users/me/avatar', $parameters, 'multipart/form-data')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function updateAvatarFromUploaded($uploaded_file): User
|
||||||
|
{
|
||||||
|
$filename = $uploaded_file['name'];
|
||||||
|
$filedata = $uploaded_file['tmp_name'];
|
||||||
|
$filetype = $uploaded_file['type'];
|
||||||
|
return $this->updateAvatar($filedata, $filename, $filetype);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function replyToPost(
|
||||||
|
string $text,
|
||||||
|
int $reply_to,
|
||||||
|
bool $is_nsfw = false,
|
||||||
|
bool $auto_crop = false
|
||||||
|
): Post {
|
||||||
|
return createPost($text, $reply_to, $is_nsfw, $auto_crop);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function createPost(
|
||||||
|
string $text,
|
||||||
|
bool $is_nsfw = false,
|
||||||
|
bool $auto_crop = false,
|
||||||
|
?int $reply_to = null
|
||||||
|
): Post {
|
||||||
|
$text = $auto_crop ? substr($text, 0, $this->getMaxPostLength()) : $text;
|
||||||
|
$parameters = [
|
||||||
|
'text' => $text,
|
||||||
|
'reply_to' => $reply_to,
|
||||||
|
'is_nsfw' => $is_nsfw,
|
||||||
|
];
|
||||||
|
return new Post($this->post('posts', $parameters));
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function fetchPnutSystemConfig()
|
||||||
|
{
|
||||||
|
$config = $this->get('/sys/config');
|
||||||
|
self::$POST_MAX_LENGTH = $config['post']['max_length'];
|
||||||
|
//self::$POST_MAX_LENGTH_REPOST = $config['post']['repost_max_length'];
|
||||||
|
self::$POST_MAX_LENGTH_REPOST = self::$POST_MAX_LENGTH;
|
||||||
|
self::$POST_SECONDS_BETWEEN_DUPLICATES = $config['post']['seconds_between_duplicates'];
|
||||||
|
self::$MESSAGE_MAX_LENGTH = $config['message']['max_length'];
|
||||||
|
self::$RAW_MAX_LENGTH = $config['raw']['max_length'];
|
||||||
|
self::$USER_DESCRIPTION_MAX_LENGTH = $config['user']['description_max_length'];
|
||||||
|
self::$USER_USERNAME_MAX_LENGTH = $config['user']['username_max_length'];
|
||||||
|
$this->logger->info('-----------Pnut API config-----------');
|
||||||
|
$this->logger->info('');
|
||||||
|
$this->logger->info("Max post length: ".self::$POST_MAX_LENGTH);
|
||||||
|
$this->logger->info("Max repost length: ".self::$POST_MAX_LENGTH_REPOST);
|
||||||
|
$this->logger->info("Seconds between post duplicates: ".self::$POST_SECONDS_BETWEEN_DUPLICATES);
|
||||||
|
$this->logger->info("Max raw length: ".self::$RAW_MAX_LENGTH);
|
||||||
|
$this->logger->info("Max user description length: ".self::$USER_DESCRIPTION_MAX_LENGTH);
|
||||||
|
$this->logger->info("Max username length: ".self::$USER_USERNAME_MAX_LENGTH);
|
||||||
|
$this->logger->info('--------------------------------------');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getMaxPostLength(): int
|
||||||
|
{
|
||||||
|
if (empty(self::$POST_MAX_LENGTH)) {
|
||||||
|
$this->fetchPnutSystemConfig();
|
||||||
|
}
|
||||||
|
return self::$POST_MAX_LENGTH;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function authenticateServerToken()
|
||||||
|
{
|
||||||
|
$token = $this->getServerToken();
|
||||||
|
$this->server_token = $token;
|
||||||
|
$this->logger->info("ST:".$this->server_token);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getServerToken(): string
|
||||||
|
{
|
||||||
|
$this->logger->info('Requesting server access token from pnut');
|
||||||
|
$params = [
|
||||||
|
'client_id' => $this->client_id,
|
||||||
|
'client_secret' => $this->client_secret,
|
||||||
|
'grant_type' => 'client_credentials'
|
||||||
|
];
|
||||||
|
$resp = $this->post('oauth/access_token', $params);
|
||||||
|
if (!empty($resp['access_token'])) {
|
||||||
|
$this->logger->info(json_encode($resp));
|
||||||
|
return $resp['access_token'];
|
||||||
|
} else {
|
||||||
|
throw new PnutException("Error retrieving app access token: ".json_encode($resp));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user