|
prif
|
Firefox
|
SevenShores\Hubspot\Exceptions\BadRequest: Client SevenShores\Hubspot\Exceptions\BadRequest: Client error: `POST https://api.hubapi.com/crm/v3/objects/contact/search` resulted in a `429 Too Many Requests` response: {"status":"error","message":"You have reached your secondly limit.","errorType":"RATE_LIMIT — Work...
|
NULL
|
|
pril
|
Claude
|
Claude
|
NULL
|
|
prin
|
Slack
|
Toast (DM) - Jiminny Inc - 4 new items - Slack
|
NULL
|
|
prio
|
PhpStorm
|
faVsco.js – ProviderRateLimiter.php
|
NULL
|
|
prio
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
NULL
|
|
pro
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
|
pro
|
Claude
|
Claude
|
NULL
|
|
pro
|
Slack
|
Steliyan Georgiev (DM) - Jiminny Inc - 4 new items Steliyan Georgiev (DM) - Jiminny Inc - 4 new items - Slack...
|
NULL
|
|
pro
|
Slack
|
Steliyan Georgiev (DM) - Jiminny Inc - 4 new items Steliyan Georgiev (DM) - Jiminny Inc - 4 new items - Slack...
|
NULL
|
|
pro
|
Slack
|
Steliyan Georgiev (DM) - Jiminny Inc - 4 new items Steliyan Georgiev (DM) - Jiminny Inc - 4 new items - Slack...
|
NULL
|
|
pro
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 6 new items - Galya Dimitrova (DM) - Jiminny Inc - 6 new items - Slack...
|
NULL
|
|
pro
|
Firefox
|
[JY-20776] Automated report - sentry - Jira — Work
|
NULL
|
|
pro
|
Slack
|
Steliyan Georgiev (DM) - Jiminny Inc - 4 new items Steliyan Georgiev (DM) - Jiminny Inc - 4 new items - Slack...
|
NULL
|
|
proactive
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
NULL
|
|
prod
|
iTerm2
|
PROD (-zsh)
|
NULL
|
|
prod
|
iTerm2
|
PROD (-zsh)
|
NULL
|
|
project is descrui
|
Claude
|
Claude
|
NULL
|
|
promot
|
Firefox
|
Jy 20820 es reindex stream model hydration by Vasi Jy 20820 es reindex stream model hydration by Vasil-Jiminny · Pull Request #12059 · jiminny/app — Work...
|
NULL
|
|
prompt for
|
Firefox
|
Jy 20820 es reindex stream model hydration by Vasi Jy 20820 es reindex stream model hydration by Vasil-Jiminny · Pull Request #12059 · jiminny/app — Work...
|
NULL
|
|
properly
|
PhpStorm
|
faVsco.js – Hubspot/Service.php
|
NULL
|
|
provemetn 2
|
PhpStorm
|
faVsco.js – ProspectCache.php
|
NULL
|
|
provide
|
Firefox
|
Jy 20820 es reindex stream model hydration by Vasi Jy 20820 es reindex stream model hydration by Vasil-Jiminny · Pull Request #12059 · jiminny/app — Work...
|
NULL
|
|
provider
|
PhpStorm
|
faVsco.js – console [PROD]
|
NULL
|
|
provider
|
Claude
|
Claude
|
NULL
|
|
prowerih
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 5 new items - Galya Dimitrova (DM) - Jiminny Inc - 5 new items - Slack...
|
NULL
|
|
psa
|
Claude
|
Claude
|
NULL
|
|
pswa[e
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 6 new items - Galya Dimitrova (DM) - Jiminny Inc - 6 new items - Slack...
|
NULL
|
|
pt
|
PhpStorm
|
faVsco.js – DeleteCrmEntityTrait.php
|
NULL
|
|
pt
|
Firefox
|
Jy 20820 es reindex stream model hydration by Vasi Jy 20820 es reindex stream model hydration by Vasil-Jiminny · Pull Request #12059 · jiminny/app — Work...
|
NULL
|
|
ption
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
|
ption hea
|
PhpStorm
|
faVsco.js – RateLimitException.php
|
NULL
|
|
pu
|
Firefox
|
Search the CRM - HubSpot docs — Work
|
NULL
|
|
pu
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
|
public
|
PhpStorm
|
faVsco.js – Client.php
|
NULL
|
|
public function handle(): void {
$this->upd public function handle(): void {
$this->updateDatabase(); // ✅ Already ran
$this->dispatchAnotherJob(); // ✅ Already ran
$crmService->matchByName(...); // ❌ Throws RateLimitException
$this->finalizeProcessing(); // ❌ Never runs
}...
|
NULL
|
NULL
|
NULL
|
|
public function handle(): void {
$this->upd public function handle(): void {
$this->updateDatabase(); // ✅ Already ran
$this->dispatchAnotherJob(); // ✅ Already ran
$crmService->matchByName(...); // ❌ Throws RateLimitException
$this->finalizeProcessing(); // ❌ Never runs
}...
|
NULL
|
NULL
|
NULL
|
|
public function isUnauthorizedException(\Exception public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') |......
|
NULL
|
NULL
|
NULL
|
|
public function isUnauthorizedException(\Exception public function isUnauthorizedException(\Exception $e): bool
{
// Check for specific HubSpot API exception types first
if ($e instanceof BadRequest) {
// BadRequest can contain 401 status codes
return $e->getCode() === 401;
}
// Check for HTTP client exceptions with status codes
if ($e instanceof \GuzzleHttp\Exception\RequestException && $e->hasResponse()) {
$response = $e->getResponse();
if ($response !== null) {
return $response->getStatusCode() === 401;
}
}
// Check for Guzzle HTTP exceptions
if ($e instanceof \GuzzleHttp\Exception\ClientException) {
return $e->getCode() === 401;
}
// Fallback to string matching as last resort, but be more specific
$message = strtolower($e->getMessage());
return str_contains($message, '401 unauthorized') ||
str_contains($message, 'http 401') |......
|
NULL
|
NULL
|
NULL
|
|
public function matchExactlyByEmail(string $email, public function matchExactlyByEmail(string $email, ?int $userId = null): ?array
{
if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
$this->logger->warning('[Prospect match] Invalid email address', [
'identifier_type' => ProspectCache::PROSPECT_TYPE_EMAIL,
'identifier' => $email,
]);
// The email address of the prospect is invalid.
// Return null, so we can try to match by phone or name.
return null;
}
return $this->matchByProspectIdentifier(
identifierType: ProspectCache::PROSPECT_TYPE_EMAIL,
identifierValue: $email,
userId: $userId
);
}...
|
NULL
|
NULL
|
NULL
|
|
public function parseRetryAfter(Throwable $e): int public function parseRetryAfter(Throwable $e): int
{
// First try to get Retry-After from response headers
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
// For search APIs, headers are often missing - check response body for policyName
if (method_exists($e, 'getResponseBody')) {
$body = $e->getResponseBody();
if (is_string($body)) {
$body = json_decode($body, true) ?? [];
}
$policyName = $body['policyName'] ?? $body['policy'] ?? null;
// Map policy names to retry delays
if ($policyName === 'TEN_SECONDLY_ROLLING' || $policyName === 'ten......
|
NULL
|
NULL
|
NULL
|
|
public function parseRetryAfter(Throwable $e): int public function parseRetryAfter(Throwable $e): int
{
// First try to get Retry-After from response headers
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
// For search APIs, headers are often missing - check response body for policyName
if (method_exists($e, 'getResponseBody')) {
$body = $e->getResponseBody();
if (is_string($body)) {
$body = json_decode($body, true) ?? [];
}
$policyName = $body['policyName'] ?? $body['policy'] ?? null;
// Map policy names to retry delays
if ($policyName === 'TEN_SECONDLY_ROLLING' || $policyName === 'ten......
|
NULL
|
NULL
|
NULL
|
|
public function parseRetryAfter(Throwable $e): int public function parseRetryAfter(Throwable $e): int
{
// First try to get Retry-After from response headers
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
// For search APIs, headers are often missing - check response body for policyName
if (method_exists($e, 'getResponseBody')) {
$body = $e->getResponseBody();
if (is_string($body)) {
$body = json_decode($body, true) ?? [];
}
$policyName = $body['policyName'] ?? $body['policy'] ?? null;
// Map policy names to retry delays
if ($policyName === 'TEN_SECONDLY_ROLLING' || $policyName === 'ten......
|
NULL
|
NULL
|
NULL
|
|
public function parseRetryAfter(Throwable $e): int public function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$this->log->info('[Hubspot] DEBUG Getting headers', [
'headers' => $headers,
]);
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}...
|
NULL
|
NULL
|
NULL
|
|
public function parseRetryAfter(Throwable $e): int public function parseRetryAfter(Throwable $e): int
{
if (method_exists($e, 'getResponseHeaders')) {
$headers = $e->getResponseHeaders() ?: [];
$this->log->info('[Hubspot] DEBUG Getting headers', [
'headers' => $headers,
]);
$value = $headers['Retry-After'] ?? $headers['retry-after'] ?? null;
if (is_array($value)) {
$value = $value[0] ?? null;
}
if (is_numeric($value)) {
return (int) $value;
}
}
return 10;
}...
|
NULL
|
NULL
|
NULL
|
|
puska
|
Slack
|
Galya Dimitrova (DM) - Jiminny Inc - 5 new items - Galya Dimitrova (DM) - Jiminny Inc - 5 new items - Slack...
|
NULL
|
|
put orher
|
PhpStorm
|
faVsco.js – RateLimitException.php
|
NULL
|
|
pwd
|
Claude
|
Claude
|
NULL
|
|
q
|
PhpStorm
|
faVsco.js – JiminnyDebugCommand.php
|
NULL
|
|
q
|
Slack
|
! Galya Dimitrova (DM) - Jiminny Inc - 6 new items ! Galya Dimitrova (DM) - Jiminny Inc - 6 new items - Slack...
|
NULL
|
|
q
|
Slack
|
Vasil Vasilev (DM) - Jiminny Inc - 5 new items - S Vasil Vasilev (DM) - Jiminny Inc - 5 new items - Slack...
|
NULL
|