Skip to content

Commit 622ffee

Browse files
committed
Merge branch 'master' of https://github.com/alchemy-fr/phrasea into PS-887-aws-translator
2 parents 03f1453 + 051b6d4 commit 622ffee

File tree

14 files changed

+113
-60
lines changed

14 files changed

+113
-60
lines changed

databox/client/src/components/Media/Asset/Attribute/types/JsonType.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@ export default class JsonType extends CodeType {
77
}
88

99
protected prettifyCode(code: string): string {
10-
return JSON.stringify(JSON.parse(code), null, 2);
10+
try {
11+
return JSON.stringify(JSON.parse(code), null, 2);
12+
} catch (e) {
13+
console.error('Error prettifying JSON code:', e);
14+
return code; // Return original code if parsing fails
15+
}
1116
}
1217
}

databox/indexer/src/handlers/phraseanet/indexer.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,8 @@ export const phraseanetIndexer: IndexIterator<PhraseanetConfig> =
297297
searchParams,
298298
0, // offset
299299
PAGESIZE,
300-
query
300+
query,
301+
dm.importStories ?? false
301302
);
302303
for (const record of records) {
303304
logger.info(

databox/indexer/src/handlers/phraseanet/phraseanetClient.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -107,14 +107,16 @@ export default class PhraseanetClient {
107107
params: Record<string, any>,
108108
offset: number = 0,
109109
limit: number = 50,
110-
searchQuery: string
110+
searchQuery: string,
111+
importStories: boolean
111112
): Promise<CPhraseanetRecord[]> {
112113
return this.search(
113114
params,
114115
offset,
115116
PhraseanetSearchType.Record,
116117
searchQuery,
117-
limit
118+
limit,
119+
importStories
118120
) as unknown as Promise<CPhraseanetRecord[]>;
119121
}
120122

@@ -129,7 +131,8 @@ export default class PhraseanetClient {
129131
offset,
130132
PhraseanetSearchType.Story,
131133
searchQuery,
132-
limit
134+
limit,
135+
true
133136
) as unknown as Promise<CPhraseanetStory[]>;
134137
}
135138

@@ -138,7 +141,8 @@ export default class PhraseanetClient {
138141
offset: number = 0,
139142
searchType: PhraseanetSearchType,
140143
searchQuery: string,
141-
limit: number = 100
144+
limit: number = 100,
145+
importStories: boolean
142146
): Promise<(CPhraseanetRecord | CPhraseanetStory)[]> {
143147
let last_error: any = null;
144148
for (let ttry = 1; ttry <= 3; ttry++) {
@@ -168,6 +172,17 @@ export default class PhraseanetClient {
168172
if (searchType === PhraseanetSearchType.Record) {
169173
res.data.response.results.records.map(
170174
(r: PhraseanetRecord) => {
175+
if (r.stories === undefined) {
176+
if (importStories) {
177+
ttry = 3; // deadly error, no need to retry
178+
throw new Error(
179+
'Phraseanet is not up-to-date : importStories requires https://github.com/alchemy-fr/Phraseanet/pull/4602'
180+
);
181+
} else {
182+
// be nice: fix old phraseanet versions
183+
r.stories = [];
184+
}
185+
}
171186
recs.push(new CPhraseanetRecord(r, this));
172187
}
173188
);

lib/php/messenger-bundle/AlchemyMessengerBundle.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,15 @@
44

55
namespace Alchemy\MessengerBundle;
66

7+
use Alchemy\MessengerBundle\DependencyInjection\Compiler\ReplaceAddErrorStampListenerPass;
8+
use Symfony\Component\DependencyInjection\ContainerBuilder;
79
use Symfony\Component\HttpKernel\Bundle\Bundle;
810

911
class AlchemyMessengerBundle extends Bundle
1012
{
13+
public function build(ContainerBuilder $container): void
14+
{
15+
parent::build($container);
16+
$container->addCompilerPass(new ReplaceAddErrorStampListenerPass());
17+
}
1118
}

lib/php/messenger-bundle/Attribute/MessengerMessage.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
final public const TAG = 'messenger.message';
99

1010
public function __construct(
11-
private string $queue
11+
private string $queue,
1212
) {
1313
}
1414

lib/php/messenger-bundle/DependencyInjection/AlchemyMessengerExtension.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ private function buildMessengerMessages(ContainerBuilder $container): void
7878
'1', 'y', 'true', 'on',
7979
], true);
8080

81-
$container->setParameter('alchemy_messenger.amqp_transport_dsn', 'amqp'.($isSsl ? 's': '').'://%env(RABBITMQ_USER)%:%env(RABBITMQ_PASSWORD)%@%env(RABBITMQ_HOST)%:%env(RABBITMQ_PORT)%/%env(RABBITMQ_VHOST)%');
81+
$container->setParameter('alchemy_messenger.amqp_transport_dsn', 'amqp'.($isSsl ? 's' : '').'://%env(RABBITMQ_USER)%:%env(RABBITMQ_PASSWORD)%@%env(RABBITMQ_HOST)%:%env(RABBITMQ_PORT)%/%env(RABBITMQ_VHOST)%');
8282
$container->setParameter('alchemy_messenger.amqp_transport_options', [
8383
'confirm_timeout' => 3,
8484
'read_timeout' => 3,
@@ -92,21 +92,21 @@ private function buildMessengerMessages(ContainerBuilder $container): void
9292
'default_serializer' => 'messenger.transport.symfony_serializer',
9393
'symfony_serializer' => [
9494
'format' => 'json',
95-
'context' => []
96-
]
95+
'context' => [],
96+
],
9797
],
9898
'failure_transport' => 'failed',
9999
'transports' => [
100100
'failed' => 'doctrine://default?queue_name=failed',
101-
'sync' => 'sync://'
101+
'sync' => 'sync://',
102102
],
103103
'buses' => [
104104
'command_bus' => [
105105
'middleware' => [
106106
'doctrine_ping_connection',
107107
RetryCountMiddleware::class,
108-
]
109-
]
108+
],
109+
],
110110
],
111111
'routing' => $routing,
112112
],
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Alchemy\MessengerBundle\DependencyInjection\Compiler;
6+
7+
use Alchemy\MessengerBundle\Listener\AddErrorDetailsStampListener;
8+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
9+
use Symfony\Component\DependencyInjection\ContainerBuilder;
10+
11+
class ReplaceAddErrorStampListenerPass implements CompilerPassInterface
12+
{
13+
public function process(ContainerBuilder $container): void
14+
{
15+
$id = 'messenger.failure.add_error_details_stamp_listener';
16+
17+
if (!$container->hasDefinition($id)) {
18+
return;
19+
}
20+
21+
$service = $container->getDefinition($id);
22+
$service->setClass(AddErrorDetailsStampListener::class);
23+
}
24+
}

lib/php/messenger-bundle/DependencyInjection/Compiler/SearchIndexPass.php

Lines changed: 0 additions & 39 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace Alchemy\MessengerBundle\Listener;
4+
5+
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
6+
use Symfony\Component\Messenger\Event\WorkerMessageFailedEvent;
7+
use Symfony\Component\Messenger\Stamp\ErrorDetailsStamp;
8+
9+
/**
10+
* @see https://github.com/symfony/symfony/issues/45944#issuecomment-1167254325
11+
*/
12+
final readonly class AddErrorDetailsStampListener implements EventSubscriberInterface
13+
{
14+
public function onMessageFailed(WorkerMessageFailedEvent $event): void
15+
{
16+
$throwable = $event->getThrowable();
17+
if ($throwable instanceof HandlerFailedException) {
18+
$throwable = $throwable->getPrevious();
19+
}
20+
21+
if (null === $throwable) {
22+
return;
23+
}
24+
25+
$stamp = new ErrorDetailsStamp($throwable::class, $throwable->getCode(), $throwable->getMessage());
26+
27+
$previousStamp = $event->getEnvelope()->last(ErrorDetailsStamp::class);
28+
29+
// Do not append duplicate information
30+
if (null === $previousStamp || !$previousStamp->equals($stamp)) {
31+
$event->addStamps($stamp);
32+
}
33+
}
34+
35+
public static function getSubscribedEvents(): array
36+
{
37+
return [
38+
// must have higher priority than SendFailedMessageForRetryListener
39+
WorkerMessageFailedEvent::class => ['onMessageFailed', 200],
40+
];
41+
}
42+
}

lib/php/messenger-bundle/Listener/SentryMessengerListener.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,7 @@ public function __construct(
2626
private SerializerInterface $serializer,
2727
private HubInterface $hub,
2828
private bool $captureSoftFails = true,
29-
)
30-
{
29+
) {
3130
}
3231

3332
public function handleWorkerMessageFailedEvent(WorkerMessageFailedEvent $event): void

0 commit comments

Comments
 (0)