/* * $Id$ * * ede-bug-report, a tool to report bugs on EDE bugzilla instance * Part of Equinox Desktop Environment (EDE). * Copyright (c) 2009 EDE Authors. * * This program is licensed under terms of the * GNU General Public License version 2 or newer. * See COPYING for details. */ #ifndef __BUGZILLA_H__ #define __BUGZILLA_H__ /* * This is asynchronous Bugzilla interface (xmlrpc calls to Bugzilla installation). This means * that all calls will be processed without blocking and all results will be reported via callbacks. * * To keep things simple, we have two type of callbacks, IdResponseCallback and VersionResponseCallback. * VersionResponseCallback will be called when request is sent via bugzilla_get_version() and * IdResponseCallback when bugzilla_login() and bugzilla_submit_bug(). In first case, we will get * user ID or -1 (and set errnum > 0 and err != NULL) if user does not exists or something was wrong * with the connection. bugzilla_submit_bug() behaves the same, except it returns bug ID if bug was * created successfully. * * Callbacks are sev bia bugzilla_set_id_response_callback() and bugzilla_set_version_response_callback() * and data passed to the callback is done via bugzilla_set_callback_data(). * * The reason why IdResponseCallback was used for both bugzilla_login() and bugzilla_submit_bug() * is because both mark returned values as 'id' and to not clutter things with callbacks types such * as BugIdResponseCallback or LoginIdResponse-bla-bla... you get it :) */ struct BugzillaData; typedef void (*IdResponseCallback)(int, void *data, int errnum, const char *err); typedef void (*VersionResponseCallback)(const char *, void *data, int errnum, const char *err); BugzillaData *bugzilla_new(const char *url); void bugzilla_free(BugzillaData *data); /* callbacks when response arrives */ void bugzilla_set_id_response_callback(BugzillaData *data, IdResponseCallback cb); void bugzilla_set_version_response_callback(BugzillaData *data, VersionResponseCallback cb); /* data sent to callbacks */ void bugzilla_set_callback_data(BugzillaData *data, void *param); void bugzilla_event_loop_finish_timeout(BugzillaData *data, unsigned long ms); void bugzilla_event_loop_finish(BugzillaData *data); /* get bugzilla version; VersionResponseCallback will be called */ void bugzilla_get_version(BugzillaData *data); /* login to bugzilla instance; IdResponseCallback will be called */ void bugzilla_login(BugzillaData *data, const char *user, const char *passwd); void bugzilla_logout(BugzillaData *data); /* submit bug (must be logged); retuned bug id will be reported via IdResponseCallback */ void bugzilla_submit_bug(BugzillaData *data, const char *product, const char *component, const char *summary, const char *version, const char *description, const char *op_sys, const char *platform, const char *priority, const char *severity); #endif