Save to database #13

Merged
haylan merged 42 commits from save-to-database into main 2026-07-12 21:51:57 +00:00
2 changed files with 19 additions and 17 deletions
Showing only changes of commit 5e27a5bc93 - Show all commits
+9 -9
View File
@@ -25,7 +25,9 @@ final class GitLabProvider implements ProviderInterface
private readonly string $token, private readonly string $token,
private readonly LoggerInterface $logger, private readonly LoggerInterface $logger,
private readonly string $baseUrl = '', private readonly string $baseUrl = '',
) {} ) {
$this->baseUrl = rtrim($this->baseUrl !== '' ? $this->baseUrl : 'https://gitlab.com', '/');
}
public function getName(): string public function getName(): string
{ {
@@ -39,9 +41,8 @@ final class GitLabProvider implements ProviderInterface
public function ping(): void public function ping(): void
{ {
$baseUrl = rtrim($this->baseUrl !== '' ? $this->baseUrl : 'https://gitlab.com', '/');
$this->client->request('GET', "$baseUrl/api/v4/user", [ $this->client->request('GET', "$this->baseUrl/api/v4/user", [
'headers' => ['PRIVATE-TOKEN' => $this->token], 'headers' => ['PRIVATE-TOKEN' => $this->token],
])->getContent(); ])->getContent();
} }
@@ -56,23 +57,22 @@ final class GitLabProvider implements ProviderInterface
*/ */
public function startFetch(): array public function startFetch(): array
{ {
$baseUrl = rtrim($this->baseUrl !== '' ? $this->baseUrl : 'https://gitlab.com', '/');
$this->logger->debug('GitLabProvider: fetching contributions', ['user' => $this->username, 'url' => $baseUrl]); $this->logger->debug('GitLabProvider: fetching contributions', ['user' => $this->username, 'url' => $this->baseUrl]);
$userResponse = $this->client->request('GET', "$baseUrl/api/v4/users", [ $userResponse = $this->client->request('GET', "$this->baseUrl/api/v4/users", [
'headers' => ['PRIVATE-TOKEN' => $this->token], 'headers' => ['PRIVATE-TOKEN' => $this->token],
'query' => ['username' => $this->username], 'query' => ['username' => $this->username],
]); ]);
$users = $userResponse->toArray(); $users = $userResponse->toArray();
if (empty($users)) { if (empty($users)) {
throw new NotFoundHttpException("GitLab: user '{$this->username}' not found on $baseUrl"); throw new NotFoundHttpException("GitLab: user '{$this->username}' not found on $this->baseUrl");
} }
$userId = $users[0]['id']; $userId = $users[0]['id'];
$after = (new \DateTimeImmutable('-365 days'))->format('Y-m-d'); $after = (new \DateTimeImmutable('-365 days'))->format('Y-m-d');
$response = $this->client->request('GET', "$baseUrl/api/v4/users/$userId/events", [ $response = $this->client->request('GET', "$this->baseUrl/api/v4/users/$userId/events", [
'headers' => ['PRIVATE-TOKEN' => $this->token], 'headers' => ['PRIVATE-TOKEN' => $this->token],
'query' => [ 'query' => [
'after' => $after, 'after' => $after,
@@ -81,7 +81,7 @@ final class GitLabProvider implements ProviderInterface
], ],
]); ]);
return ['baseUrl' => $baseUrl, 'userId' => $userId, 'after' => $after, 'page' => 1, 'response' => $response]; return ['baseUrl' => $this->baseUrl, 'userId' => $userId, 'after' => $after, 'page' => 1, 'response' => $response];
} }
/** /**
+8 -6
View File
@@ -26,7 +26,9 @@ final class GiteaProvider implements ProviderInterface
private readonly string $token, private readonly string $token,
private readonly string $baseUrl, private readonly string $baseUrl,
private readonly LoggerInterface $logger, private readonly LoggerInterface $logger,
) {} ) {
$this->baseUrl = rtrim($this->baseUrl, '/');
}
public function getName(): string public function getName(): string
{ {
@@ -40,20 +42,20 @@ final class GiteaProvider implements ProviderInterface
public function ping(): void public function ping(): void
{ {
$baseUrl = rtrim($this->baseUrl, '/');
$this->client->request('GET', "$baseUrl/api/v1/user", [
$this->client->request('GET', "$this->baseUrl/api/v1/user", [
'headers' => ['Authorization' => "token {$this->token}"], 'headers' => ['Authorization' => "token {$this->token}"],
])->getContent(); ])->getContent();
} }
public function startFetch(): ResponseInterface public function startFetch(): ResponseInterface
{ {
$baseUrl = rtrim($this->baseUrl, '/');
$this->logger->debug('GiteaProvider: fetching contributions', ['user' => $this->username, 'url' => $baseUrl]);
return $this->client->request('GET', "$baseUrl/api/v1/users/{$this->username}/heatmap", [ $this->logger->debug('GiteaProvider: fetching contributions', ['user' => $this->username, 'url' => $this->baseUrl]);
return $this->client->request('GET', "$this->baseUrl/api/v1/users/{$this->username}/heatmap", [
'headers' => ['Authorization' => "token {$this->token}"], 'headers' => ['Authorization' => "token {$this->token}"],
]); ]);
} }