instance = $instance; } public function login(string $username, string $password): ?string { try { $request = new LemmyRequest($this->instance); $response = $request->post('user/login', [ 'username_or_email' => $username, 'password' => $password, ]); if (!$response->successful()) { logger()->error('Lemmy login failed', [ 'status' => $response->status(), 'body' => $response->body() ]); return null; } $data = $response->json(); return $data['jwt'] ?? null; } catch (Exception $e) { logger()->error('Lemmy login exception', ['error' => $e->getMessage()]); return null; } } public function getCommunityId(string $communityName): int { try { $request = new LemmyRequest($this->instance); $response = $request->get('community', ['name' => $communityName]); if (!$response->successful()) { throw new Exception('Failed to fetch community: ' . $response->status()); } $data = $response->json(); return $data['community_view']['community']['id'] ?? throw new Exception('Community not found'); } catch (Exception $e) { logger()->error('Community lookup failed', ['error' => $e->getMessage()]); throw $e; } } public function createPost(string $token, string $title, string $body, int $communityId, ?string $url = null, ?string $thumbnail = null): array { try { $request = new LemmyRequest($this->instance, $token); $postData = [ 'name' => $title, 'body' => $body, 'community_id' => $communityId, ]; if ($url) { $postData['url'] = $url; } if ($thumbnail) { $postData['custom_thumbnail'] = $thumbnail; } $response = $request->post('post', $postData); if (!$response->successful()) { throw new Exception('Failed to create post: ' . $response->status() . ' - ' . $response->body()); } return $response->json(); } catch (Exception $e) { logger()->error('Post creation failed', ['error' => $e->getMessage()]); throw $e; } } }