From 576d67af79dfab7c2a570fc805f2cb1ba19f5f1e Mon Sep 17 00:00:00 2001
From: Etienne LOUPIAS <eloupias@grandlyon.com>
Date: Wed, 6 Dec 2023 15:26:29 +0100
Subject: [PATCH] refactor(newsletter): add error detail

---
 src/newsletter/newsletter.service.ts | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/newsletter/newsletter.service.ts b/src/newsletter/newsletter.service.ts
index 1203e197e..cc4b79941 100644
--- a/src/newsletter/newsletter.service.ts
+++ b/src/newsletter/newsletter.service.ts
@@ -87,9 +87,15 @@ export class NewsletterService {
 
       return newsletterSubscription;
     } catch (e) {
-      if (e.status === 400 && e.response?.text?.includes('fake')) {
-        this.logger.log(`newsletterSubscribe: Fake or invalid email: ${email}`);
-        throw new HttpException('Fake or invalid email', HttpStatus.I_AM_A_TEAPOT);
+      if (e.status === 400) {
+        if (e.response?.text?.includes('fake')) {
+          this.logger.log(`newsletterSubscribe: Fake or invalid email: ${email}`);
+          throw new HttpException('Fake or invalid email', HttpStatus.I_AM_A_TEAPOT);
+        } else {
+          // Example: email "has signed up to a lot of lists very recently; we're not allowing more signups for now"
+          this.logger.error(`newsletterSubscribe ${email}: ${JSON.stringify(e)}`);
+          throw new HttpException(JSON.parse(e.response?.text)?.detail, HttpStatus.BAD_REQUEST);
+        }
       } else {
         this.logger.error(`newsletterSubscribe ${email}: ${JSON.stringify(e)}`);
         throw new HttpException('Subscribe error', HttpStatus.INTERNAL_SERVER_ERROR);
-- 
GitLab