Skip to content

LibSoup server example ​

Tiny Soup.Server with two routes, from the archived GNOME Wiki page Projects/Genie/LibSoupSample. This targets libsoup 2.4 (Soup.Server style APIs).

genie
uses
	GLib
	Soup

def default_handler (server : Soup.Server, msg : Soup.Message, path : string,
	query : GLib.HashTable?, client : Soup.ClientContext)

	response_text : string = (
		"<html><body><p>Current location: %s</p>"
		+ "<p><a href=\"/xml\">Test XML</a></p></body></html>").printf (path)

	msg.set_response ("text/html", Soup.MemoryUse.COPY, response_text.data)

def xml_handler (server : Soup.Server, msg : Soup.Message, path : string,
	query : GLib.HashTable?, client : Soup.ClientContext)

	response_text : string = "<node><subnode>test</subnode></node>"
	msg.set_response ("text/xml", Soup.MemoryUse.COPY, response_text.data)

init
	var server = new Soup.Server (Soup.SERVER_PORT, 8088)
	server.add_handler ("/", default_handler)
	server.add_handler ("/xml", xml_handler)
	server.run ()

Compile and run ​

shell
valac --pkg libsoup-2.4 --thread soup-server-example.gs
./soup-server-example