From: Jean-Philippe Orsini Date: Tue, 17 May 2011 08:41:53 +0000 (+0000) Subject: added package status option X-Git-Tag: v1.3.0~167 X-Git-Url: http://git.wpitchoune.net/gitweb/?p=ppastats.git;a=commitdiff_plain;h=74fc2b9b120839961cd0a4d25b4c77138994be16 added package status option --- diff --git a/src/html.c b/src/html.c index 786ea98..28fe195 100644 --- a/src/html.c +++ b/src/html.c @@ -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) { diff --git a/src/html.h b/src/html.h index f5cf6a5..79ed705 100644 --- a/src/html.h +++ b/src/html.h @@ -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 diff --git a/src/lp_ws.c b/src/lp_ws.c index aa6ace7..09e9ede 100644 --- a/src/lp_ws.c +++ b/src/lp_ws.c @@ -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); diff --git a/src/lp_ws.h b/src/lp_ws.h index f4489dc..e50790b 100644 --- a/src/lp_ws.h +++ b/src/lp_ws.h @@ -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); diff --git a/src/main.c b/src/main.c index 662a87e..1997551 100644 --- a/src/main.c +++ b/src/main.c @@ -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(); diff --git a/src/ppastats.c b/src/ppastats.c index 078eeab..baca55c 100644 --- a/src/ppastats.c +++ b/src/ppastats.c @@ -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) { diff --git a/src/ppastats.h b/src/ppastats.h index f6bace5..1f8ea61 100644 --- a/src/ppastats.h +++ b/src/ppastats.h @@ -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