GNU/Weeb Mailing List <[email protected]>
 help / color / mirror / Atom feed
From: Muhammad Rizki <[email protected]>
To: Ammar Faizi <[email protected]>
Cc: Muhammad Rizki <[email protected]>,
	Alviro Iskandar Setiawan <[email protected]>,
	GNU/Weeb Mailing List <[email protected]>
Subject: [PATCH v4 02/17] fix: utils: Fix .patch file payload
Date: Wed, 21 Dec 2022 08:33:32 +0700	[thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>

From the previous version 59d20af68a05, the .patch file payload uses the
prepare_patch() `text` parameter that taken from the create_template()
`caption` returned which is the caption is already trimmed. With the
current fix, this should be use the full email payload instead so its
not bothering with the trimmed payload from the create_template().

Fixes: 59d20af68a05 ("daemon: Move prepare for patch and clean up patch functions")
Signed-off-by: Muhammad Rizki <[email protected]>
---
 daemon/atom/utils.py | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/daemon/atom/utils.py b/daemon/atom/utils.py
index 03453b4..6597c41 100644
--- a/daemon/atom/utils.py
+++ b/daemon/atom/utils.py
@@ -213,7 +213,7 @@ def create_template(thread: Message, platform: Platform, to=None, cc=None):
 	return ret, files, is_patch
 
 
-def prepare_patch(mail, text, url, platform: Platform):
+def prepare_patch(mail: Message, text, url, platform: Platform):
 	tmp = gen_temp(url, platform)
 	fnm = str(mail.get("subject"))
 	sch = re.search(PATCH_PATTERN, fnm, re.IGNORECASE)
@@ -230,7 +230,23 @@ def prepare_patch(mail, text, url, platform: Platform):
 	cap = text.split("\n\n")[0]
 
 	with open(file, "wb") as f:
-		f.write(bytes(text, encoding="utf8"))
+		write_payload = bytes(f"{cap}\n\n".encode())
+
+		# sometimes an email PATCH is a multipart
+		# so, we must loop the payload first
+		# then, check if each payload is a PATCH payload
+		# or no, if it's a PATCH payload then write payload
+		# to the file.
+		if mail.is_multipart():
+			for m in mail.get_payload():
+				subject = mail.get("subject")
+				if not __is_patch(subject, str(m)):
+					continue
+				write_payload += m.get_payload(decode=True)
+		else:
+			write_payload += mail.get_payload(decode=True)
+
+		f.write(write_payload)
 
 	caption = "#patch #ml"
 	if platform is Platform.TELEGRAM:
-- 
Muhammad Rizki


  parent reply	other threads:[~2022-12-21  1:34 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-21  1:33 [PATCH v4 00/17] Fix, improvement and implement a bot logger Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 01/17] discord: Fix typo on _flood_exception() Muhammad Rizki
2022-12-21  1:33 ` Muhammad Rizki [this message]
2022-12-21  1:33 ` [PATCH v4 03/17] fix: utils: add a substr for the patch media caption Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 04/17] fix: utils: Fix the extract_list() utility function Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 05/17] utils: Back to use decode=True for the get_payload() Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 06/17] utils: Improve fix_utf8_char() Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 07/17] utils: Add catch_err() for the log message Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 08/17] logger: Initial work for the bot logger for future use Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 09/17] telegram: Use the created BotLogger() class Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 10/17] telegram: Add variable LOG_CHANNEL_ID declaration Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 11/17] telegram: Add send_log_file() in the DaemonClient() Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 12/17] telegram: Implement the log message for catching errors Muhammad Rizki
2022-12-24 21:22   ` Ammar Faizi
2022-12-24 21:39     ` Ammar Faizi
2022-12-21  1:33 ` [PATCH v4 13/17] discord: Add variable LOG_CHANNEL_ID declaration Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 14/17] discord: Use the BotLogger() to the GWClient() Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 15/17] discord: Add send_log_file in " Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 16/17] discord: Implement the catch erros and logs Muhammad Rizki
2022-12-21  1:33 ` [PATCH v4 17/17] Remove some unused imports Muhammad Rizki
2022-12-24 20:54 ` [PATCH v4 00/17] Fix, improvement and implement a bot logger Ammar Faizi
2022-12-24 21:05 ` Ammar Faizi
2022-12-24 21:09   ` Ammar Faizi
2022-12-24 23:31     ` Muhammad Rizki
2022-12-24 23:33       ` Ammar Faizi
2022-12-24 23:37         ` Muhammad Rizki
2022-12-24 23:34       ` Muhammad Rizki
2022-12-24 23:35         ` Ammar Faizi
2022-12-24 23:36           ` Ammar Faizi
2022-12-24 23:39             ` Muhammad Rizki
2022-12-25 11:16 ` Ammar Faizi
2022-12-25 11:29   ` Alviro Iskandar Setiawan
2022-12-25 11:34     ` Ammar Faizi

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    [email protected] \
    [email protected] \
    [email protected] \
    [email protected] \
    [email protected] \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox