Blame 0001-ureport-implement-attaching-of-user-comments.patch

Jakub Filak 9dc4db8
From 8b3d8dd997d2103087cbaef4642b52147db97f16 Mon Sep 17 00:00:00 2001
Jakub Filak 9dc4db8
From: Jakub Filak <jfilak@redhat.com>
Jakub Filak 9dc4db8
Date: Tue, 8 Jul 2014 16:10:01 +0200
Jakub Filak 9dc4db8
Subject: [PATCH 1/8] ureport: implement attaching of user comments
Jakub Filak 9dc4db8
Jakub Filak 9dc4db8
Closes #199
Jakub Filak 9dc4db8
Jakub Filak 9dc4db8
Signed-off-by: Jakub Filak <jfilak@redhat.com>
Jakub Filak 9dc4db8
---
Jakub Filak 9dc4db8
 src/lib/json.c        | 10 ++++++++++
Jakub Filak 9dc4db8
 src/lib/ureport.h     |  4 ++++
Jakub Filak 9dc4db8
 src/plugins/ureport.c | 33 +++++++++++++++++++++++++++++----
Jakub Filak 9dc4db8
 3 files changed, 43 insertions(+), 4 deletions(-)
Jakub Filak 9dc4db8
Jakub Filak 9dc4db8
diff --git a/src/lib/json.c b/src/lib/json.c
Jakub Filak 9dc4db8
index 66db537..08ffe8c 100644
Jakub Filak 9dc4db8
--- a/src/lib/json.c
Jakub Filak 9dc4db8
+++ b/src/lib/json.c
Jakub Filak 9dc4db8
@@ -133,3 +133,13 @@ struct post_state *ureport_attach_email(const char *bthash, const char *email,
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
     return post_state;
Jakub Filak 9dc4db8
 }
Jakub Filak 9dc4db8
+
Jakub Filak 9dc4db8
+struct post_state *ureport_attach_comment(const char *bthash, const char *comment,
Jakub Filak 9dc4db8
+                                       struct ureport_server_config *config)
Jakub Filak 9dc4db8
+{
Jakub Filak 9dc4db8
+    char *json_attachment = new_json_attachment(bthash, "comment", comment);
Jakub Filak 9dc4db8
+    struct post_state *post_state = post_ureport(json_attachment, config);
Jakub Filak 9dc4db8
+    free(json_attachment);
Jakub Filak 9dc4db8
+
Jakub Filak 9dc4db8
+    return post_state;
Jakub Filak 9dc4db8
+}
Jakub Filak 9dc4db8
diff --git a/src/lib/ureport.h b/src/lib/ureport.h
Jakub Filak 9dc4db8
index 16f40f1..80f26d9 100644
Jakub Filak 9dc4db8
--- a/src/lib/ureport.h
Jakub Filak 9dc4db8
+++ b/src/lib/ureport.h
Jakub Filak 9dc4db8
@@ -51,6 +51,10 @@ struct post_state *ureport_attach_rhbz(const char *bthash, int rhbz_bug_id,
Jakub Filak 9dc4db8
 struct post_state *ureport_attach_email(const char *bthash, const char *email,
Jakub Filak 9dc4db8
                                         struct ureport_server_config *config);
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
+#define ureport_attach_comment libreport_ureport_attach_comment
Jakub Filak 9dc4db8
+struct post_state *ureport_attach_comment(const char *bthash, const char *comment,
Jakub Filak 9dc4db8
+                                        struct ureport_server_config *config);
Jakub Filak 9dc4db8
+
Jakub Filak 9dc4db8
 #define ureport_from_dump_dir libreport_ureport_from_dump_dir
Jakub Filak 9dc4db8
 char *ureport_from_dump_dir(const char *dump_dir_path);
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
diff --git a/src/plugins/ureport.c b/src/plugins/ureport.c
Jakub Filak 9dc4db8
index 59554f4..e6237cc 100644
Jakub Filak 9dc4db8
--- a/src/plugins/ureport.c
Jakub Filak 9dc4db8
+++ b/src/plugins/ureport.c
Jakub Filak 9dc4db8
@@ -435,6 +435,8 @@ int main(int argc, char **argv)
Jakub Filak 9dc4db8
     bool rhbz_bug_from_rt = false;
Jakub Filak 9dc4db8
     const char *email_address = NULL;
Jakub Filak 9dc4db8
     bool email_address_from_env = false;
Jakub Filak 9dc4db8
+    char *comment = NULL;
Jakub Filak 9dc4db8
+    bool comment_file = NULL;
Jakub Filak 9dc4db8
     struct dump_dir *dd = NULL;
Jakub Filak 9dc4db8
     struct options program_options[] = {
Jakub Filak 9dc4db8
         OPT__VERBOSE(&g_verbose),
Jakub Filak 9dc4db8
@@ -456,11 +458,16 @@ int main(int argc, char **argv)
Jakub Filak 9dc4db8
                           _("attach RHBZ bug (requires -a|-A, conflicts with -B)")),
Jakub Filak 9dc4db8
         OPT_BOOL('B', "bug-id-rt", &rhbz_bug_from_rt,
Jakub Filak 9dc4db8
                           _("attach last RHBZ bug from reported_to (requires -a|-A, conflicts with -b)")),
Jakub Filak 9dc4db8
+        OPT_STRING('o', "comment", &comment, "DESCRIPTION",
Jakub Filak 9dc4db8
+                          _("attach short text (requires -a|-A, conflicts with -D)")),
Jakub Filak 9dc4db8
+        OPT_BOOL('O', "comment-file", &comment_file,
Jakub Filak 9dc4db8
+                          _("attach short text from comment (requires -a|-A, conflicts with -d)")),
Jakub Filak 9dc4db8
+
Jakub Filak 9dc4db8
         OPT_END(),
Jakub Filak 9dc4db8
     };
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
     const char *program_usage_string = _(
Jakub Filak 9dc4db8
-        "& [-v] [-c FILE] [-u URL] [-k] [-t SOURCE] [-A -a bthash -B -b bug-id -E -e email] [-d DIR]\n"
Jakub Filak 9dc4db8
+        "& [-v] [-c FILE] [-u URL] [-k] [-t SOURCE] [-A -a bthash -B -b bug-id -E -e email -O -o comment] [-d DIR]\n"
Jakub Filak 9dc4db8
         "\n"
Jakub Filak 9dc4db8
         "Upload micro report or add an attachment to a micro report\n"
Jakub Filak 9dc4db8
         "\n"
Jakub Filak 9dc4db8
@@ -495,7 +502,10 @@ int main(int argc, char **argv)
Jakub Filak 9dc4db8
     if (email_address && email_address_from_env)
Jakub Filak 9dc4db8
         error_msg_and_die("You need to pass either -e bthash or -E");
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
-    if (ureport_hash_from_rt || rhbz_bug_from_rt)
Jakub Filak 9dc4db8
+    if (comment && comment_file)
Jakub Filak 9dc4db8
+        error_msg_and_die("You need to pass either -o comment or -O");
Jakub Filak 9dc4db8
+
Jakub Filak 9dc4db8
+    if (ureport_hash_from_rt || rhbz_bug_from_rt || comment_file)
Jakub Filak 9dc4db8
     {
Jakub Filak 9dc4db8
         dd = dd_opendir(dump_dir_path, DD_OPEN_READONLY);
Jakub Filak 9dc4db8
         if (!dd)
Jakub Filak 9dc4db8
@@ -533,6 +543,15 @@ int main(int argc, char **argv)
Jakub Filak 9dc4db8
             free_report_result(bz_result);
Jakub Filak 9dc4db8
         }
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
+        if (comment_file)
Jakub Filak 9dc4db8
+        {
Jakub Filak 9dc4db8
+            comment = dd_load_text(dd, FILENAME_COMMENT);
Jakub Filak 9dc4db8
+            if (comment == NULL)
Jakub Filak 9dc4db8
+                error_msg_and_die(_("Cannot attach comment from 'comment' file"));
Jakub Filak 9dc4db8
+            if (comment[0] == '\0')
Jakub Filak 9dc4db8
+                error_msg_and_die(_("'comment' file is empty"));
Jakub Filak 9dc4db8
+        }
Jakub Filak 9dc4db8
+
Jakub Filak 9dc4db8
         dd_close(dd);
Jakub Filak 9dc4db8
     }
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
@@ -546,8 +565,8 @@ int main(int argc, char **argv)
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
     if (ureport_hash)
Jakub Filak 9dc4db8
     {
Jakub Filak 9dc4db8
-        if (rhbz_bug < 0 && !email_address)
Jakub Filak 9dc4db8
-            error_msg_and_die(_("You need to specify bug ID, contact email or both"));
Jakub Filak 9dc4db8
+        if (rhbz_bug < 0 && !email_address && !comment)
Jakub Filak 9dc4db8
+            error_msg_and_die(_("You need to specify bug ID, contact email, comment or all of them"));
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
         if (rhbz_bug >= 0)
Jakub Filak 9dc4db8
         {
Jakub Filak 9dc4db8
@@ -561,6 +580,12 @@ int main(int argc, char **argv)
Jakub Filak 9dc4db8
                 goto finalize;
Jakub Filak 9dc4db8
         }
Jakub Filak 9dc4db8
 
Jakub Filak 9dc4db8
+        if (comment)
Jakub Filak 9dc4db8
+        {
Jakub Filak 9dc4db8
+            if (perform_attach(&config, ureport_hash, (attach_handler)ureport_attach_comment, (void *)comment))
Jakub Filak 9dc4db8
+                goto finalize;
Jakub Filak 9dc4db8
+        }
Jakub Filak 9dc4db8
+
Jakub Filak 9dc4db8
         ret = 0;
Jakub Filak 9dc4db8
         goto finalize;
Jakub Filak 9dc4db8
     }
Jakub Filak 9dc4db8
-- 
Jakub Filak 9dc4db8
1.9.3
Jakub Filak 9dc4db8