newsAdvanced Gtk+ Sequencer - News


GSequencer v3.0.0 has got support for libsoup2.4 XMLRPC

Item posted by Joël Krähemann <jkraehemann> on Thu 12 Dec 2019 06:28:37 PM UTC.

Few days ago, I have closed the task "Implement AgsServer and related controllers". I decided to strip the code to very basic implementation. AgsFrontController is all you got with authentication and session support. Read more here:

Advanced Gtk+ Sequencer dropped native sockets support in favor of GIO's implementation. The XMLRPC server is implemented using libsoup2.4:

The following cookies are responsible for session tracking:

The AgsPluginController interface

Extending AgsServer is done by implementing AgsPluginController interface. Additionally, you should derive your object from AgsController in order to match :context-path property.

The AgsPluginController::do_request() function is invoked as the context matches to the XMLRPC request's path.

gpointer ags_plugin_controller_do_request(AgsPluginController *plugin_controller,
                                          SoupMessage *msg,
                                          GHashTable *query,
                                          SoupClientContext *client,
                                          GObject *security_context,
                                          gchar *path,
                                          gchar *login,
                                          gchar *security_token);

You might want to set the response of @msg using following function:

void soup_message_set_response(SoupMessage *msg,
                               const char *content_type,
                               SoupMemoryUse resp_use,
                               const char *resp_body,
                               gsize resp_length);

Authentication and session modules

GSequencer provides autentication and session abstraction. These are the provided interfaces:

The following singletons match the configured module:

libags library provides ready to use implementation using XML backend.

Hands on: ags_functional_server_test.c

If you want to see GSequencer's XMLRPC in action, checkout the integration test:

Or just invoke: `./configure --enable-run-functional-tests && make check`

Default configuration directory missing

I consider to require a system configuration directory:


This would provide:

  1. ags_authentication.xml
  2. ags_password_store.xml

For its valid content please check:

Thought, I have to solve howto store realm and salt ...

A possibility would be to put it into AgsConfig.


by Joël

Back to the top

Powered by Savane 3.13-3cd0.
Corresponding source code