added package status option
authorJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 17 May 2011 08:41:53 +0000 (08:41 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Tue, 17 May 2011 08:41:53 +0000 (08:41 +0000)
src/html.c
src/html.h
src/lp_ws.c
src/lp_ws.h
src/main.c
src/ppastats.c
src/ppastats.h

index 786ea98..28fe195 100644 (file)
@@ -188,14 +188,15 @@ build_data_str(struct binary_package_publishing_history **list)
        return str;
 }
 
-void ppa_to_html(const char *owner, const char *ppa)
+void ppa_to_html(const char *owner, const char *ppa, const char *package_status)
 {
        struct binary_package_publishing_history **list;
        char *archive_url = get_archive_url(owner, ppa);
        char *addcolumns_str;
        char *data_str;
 
-       list = get_binary_package_publishing_history_list(archive_url);
+       list = get_binary_package_publishing_history_list(archive_url,
+                                                         package_status);
        free(archive_url);
 
        if (!list) {
index f5cf6a5..79ed705 100644 (file)
@@ -22,6 +22,8 @@
 
 #include "lp.h"
 
-void ppa_to_html(const char *owner, const char *ppa);
+void ppa_to_html(const char *owner,
+                const char *ppa,
+                const char *package_status);
 
 #endif
index aa6ace7..09e9ede 100644 (file)
@@ -29,7 +29,7 @@
 #include "ppastats.h"
 
 #define QUERY_GET_PUBLISHED_BINARIES \
-       "?ws.op=getPublishedBinaries&status=Published"
+       "?ws.op=getPublishedBinaries"
 #define QUERY_GET_DOWNLOAD_COUNT "?ws.op=getDownloadCount"
 #define QUERY_GET_DAILY_DOWNLOAD_TOTALS \
        "?ws.op=getDailyDownloadTotals"
@@ -116,10 +116,13 @@ static json_object *get_json_object(const char *url)
 }
 
 struct binary_package_publishing_history * *
-get_binary_package_publishing_history_list(const char *archive_url)
+get_binary_package_publishing_history_list(const char *archive_url,
+                                          const char *package_status)
 {
        char *url = malloc(strlen(archive_url)+
                           strlen(QUERY_GET_PUBLISHED_BINARIES)+
+                          strlen("&status=")+
+                          9+
                           1);
        json_object *o;
        struct binary_package_publishing_history **result;
@@ -127,6 +130,12 @@ get_binary_package_publishing_history_list(const char *archive_url)
        strcpy(url, archive_url);
        strcat(url, QUERY_GET_PUBLISHED_BINARIES);
 
+
+       if (package_status) {
+               strcat(url, "&status=");
+               strcat(url, package_status);
+       }
+
        o = get_json_object(url);
        free(url);
 
index f4489dc..e50790b 100644 (file)
@@ -23,7 +23,8 @@
 #include "lp.h"
 
 struct binary_package_publishing_history * *
-get_binary_package_publishing_history_list(const char *archive_url);
+get_binary_package_publishing_history_list(const char *archive_url,
+                                          const char *package_status);
 
 int get_download_count(const char *archive_url);
 
index 662a87e..1997551 100644 (file)
@@ -31,7 +31,9 @@
 int debug;
 static const char *program_name;
 
-static void display_published_binaries(const char *owner, const char *ppa)
+static void display_published_binaries(const char *owner,
+                                      const char *ppa,
+                                      const char *package_status)
 {
        struct ppa_stats *ppastats;
        struct package_stats **packages;
@@ -39,7 +41,7 @@ static void display_published_binaries(const char *owner, const char *ppa)
        struct distro_stats **distros;
        struct arch_stats **archs;
 
-       ppastats = create_ppa_stats(owner, ppa);
+       ppastats = create_ppa_stats(owner, ppa, package_status);
        packages = ppastats->packages;
        while (packages && *packages) {
                struct package_stats *p = *packages;
@@ -86,6 +88,7 @@ static struct option long_options[] = {
        {"help", no_argument, 0, 'h'},
        {"html", no_argument, 0, 't'},
        {"debug", no_argument, 0, 'd'},
+       {"status", required_argument, 0, 's'},
        {0, 0, 0, 0}
 };
 
@@ -135,11 +138,12 @@ int main(int argc, char **argv)
        char *owner, *ppa;
        int optc;
        int output_html = 0;
+       char *package_status = NULL;
        int cmdok = 1;
 
        program_name = argv[0];
 
-       while ((optc = getopt_long(argc, argv, "vhtd", long_options,
+       while ((optc = getopt_long(argc, argv, "vhtds:", long_options,
                                   NULL)) != -1) {
                switch (optc) {
                case 't':
@@ -154,6 +158,10 @@ int main(int argc, char **argv)
                case 'v':
                        print_version();
                        exit(EXIT_SUCCESS);
+               case 's':
+                       if (optarg)
+                               package_status = strdup(optarg);
+                       break;
                default:
                        cmdok = 0;
                        break;
@@ -170,11 +178,12 @@ int main(int argc, char **argv)
        ppa = argv[optind+1];
 
        if (output_html)
-               ppa_to_html(owner, ppa);
+               ppa_to_html(owner, ppa, package_status);
        else
-               display_published_binaries(owner, ppa);
+               display_published_binaries(owner, ppa, package_status);
 
        /* for valgrind.... */
+       free(package_status);
        lp_ws_cleanup();
        cache_cleanup();
 
index 078eeab..baca55c 100644 (file)
@@ -137,7 +137,10 @@ static struct arch_stats *get_arch_stats(struct distro_stats *distro,
 }
 
 
-struct ppa_stats *create_ppa_stats(const char *owner, const char *ppa)
+struct ppa_stats *
+create_ppa_stats(const char *owner,
+                const char *ppa,
+                const char *package_status)
 {
        struct ppa_stats *ppastats;
        struct binary_package_publishing_history **history;
@@ -153,7 +156,8 @@ struct ppa_stats *create_ppa_stats(const char *owner, const char *ppa)
        int count;
 
        ppa_url = get_archive_url(owner, ppa);
-       history = get_binary_package_publishing_history_list(ppa_url);
+       history = get_binary_package_publishing_history_list(ppa_url,
+                                                            package_status);
        free(ppa_url);
 
        if (!history) {
index f6bace5..1f8ea61 100644 (file)
@@ -64,7 +64,9 @@ struct ppa_stats {
        struct daily_download_total *daily_download_totals;
 };
 
-struct ppa_stats *create_ppa_stats(const char *owner, const char *ppa);
+struct ppa_stats *create_ppa_stats(const char *owner,
+                                  const char *ppa,
+                                  const char *package_status);
 void ppa_stats_free(struct ppa_stats *ppastats);
 
 #endif