Moved ruby bindings to it's own repository
authorMikael Hallendal <micke@imendio.com>
Tue, 15 Apr 2008 17:45:12 +0200
changeset 393 1df93aba3b9a
parent 392 2da579e4780f
child 394 03933ba2fb40
Moved ruby bindings to it's own repository
bindings/ruby/.gitignore
bindings/ruby/examples/send-message.rb
bindings/ruby/extconf.rb
bindings/ruby/src/rblm-connection.c
bindings/ruby/src/rblm-constants.c
bindings/ruby/src/rblm-message-node.c
bindings/ruby/src/rblm-message.c
bindings/ruby/src/rblm-private.c
bindings/ruby/src/rblm-private.h
bindings/ruby/src/rblm-proxy.c
bindings/ruby/src/rblm-ssl.c
bindings/ruby/src/rblm.c
bindings/ruby/src/rblm.h
--- a/bindings/ruby/.gitignore	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,2 +0,0 @@
-loudmouth.so
-
--- a/bindings/ruby/examples/send-message.rb	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-# To change this template, choose Tools | Templates
-# and open the template in the editor.
-
-require 'loudmouth'
-require 'glib2'
-
-puts "Enter your JID: "
-jid = gets.chomp
-
-puts "Enter connect host: "
-host = gets.chomp
-
-puts "Enter your password: "
-password = gets.chomp
-
-if /(.+)@(.+)/ =~ jid
-  login = $1
-end
-
-puts "Logging in as '#{login}' to '#{host}'"
-
-main_loop = GLib::MainLoop.new
-
-conn = LM::Connection.new(host)
-conn.jid = jid
-conn.ssl = LM::SSL.new
-conn.ssl.use_starttls = true
-conn.ssl.require_starttls = true
-
-recipient = ""
-
-conn.open do |result|
-  puts "Connection open block"
-  if result
-    puts "Connection opened correctly"
-    conn.authenticate(login, password, "Test") do |auth_result|
-      unless auth_result
-        puts "Failed to authenticate"
-      end
-      authenticated_cb(conn)
-      main_loop.quit
-    end
-  else
-    puts "Failed to connect"
-    main_loop.quit
-  end
-end
-
-def authenticated_cb(conn)
-  puts "Authenticated!"
-  puts "Who do you want to message: "
-  recipient = gets.chomp
-  
-  puts "Enter message: "
-  body = gets.chomp
-  
-  m = LM::Message.new(recipient, LM::MessageType::MESSAGE)
-  m.node.add_child('body', body)
-  
-  conn.send(m)
-  conn.close
-  
-  puts "Message sent to #{recipient}"
-end
-
-main_loop.run
-
-puts "Quitting"
--- a/bindings/ruby/extconf.rb	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,15 +0,0 @@
-require 'pkg-config'
-
-PACKAGE_NAME = "loudmouth"
-PACKAGE_ID = "loudmouth"
-
-# SRCDIR = File.expand_path(File.dirname(__FILE__) + '/src')
-
-require 'mkmf'
-
-srcdir = File.join(File.expand_path(File.dirname(__FILE__)), 'src')
-
-PKGConfig.have_package("loudmouth-1.0", 1, 3, 4) or exit 1
-PKGConfig.have_package("glib-2.0", 2, 4, 0) or exit 1
-
-create_makefile("loudmouth", srcdir)
--- a/bindings/ruby/src/rblm-connection.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,364 +0,0 @@
-#include "rblm.h"
-#include "rblm-private.h"
-
-VALUE lm_cConnection;
-
-VALUE conn_set_server (VALUE self, VALUE server);
-
-/* -- START of GMainContext hack -- 
- * This is a hack to get the GMainContext from a ruby VALUE, this will break if
- * internals change in Ruby/GLib.
- */
-typedef struct {
-    gpointer boxed;
-    gboolean own;
-    gsize    type;
-} boxed_holder;
-
-static GMainContext *
-rb_lm_hack_get_main_context_from_rval (VALUE ctx_rval)
-{
-	boxed_holder *holder;
-
-	Data_Get_Struct (ctx_rval, boxed_holder, holder);
-
-	return holder->boxed;
-}
-/* -- END of GMainContext hack -- */
-
-LmConnection *
-rb_lm_connection_from_ruby_object (VALUE obj)
-{
-	LmConnection *conn;
-
-	if (!rb_lm__is_kind_of (obj, lm_cConnection)) {
-		rb_raise (rb_eTypeError, "not a LmConnection");
-	}
-
-	Data_Get_Struct (obj, LmConnection, conn);
-
-	return conn;
-}
-
-void
-conn_free (LmConnection *self)
-{
-	lm_connection_unref (self);
-}
-
-VALUE
-conn_allocate (VALUE klass)
-{
-	return Data_Wrap_Struct (klass, NULL, conn_free, NULL);
-}
-
-VALUE
-conn_initialize (int argc, VALUE *argv, VALUE self)
-{
-	LmConnection *conn;
-	char         *srv_str = NULL;
-	VALUE         server, context;
-
-	rb_scan_args (argc, argv, "02", &server, &context);
-
-	if (!NIL_P (context)) {
-		GMainContext *ctx;
-
-		ctx = rb_lm_hack_get_main_context_from_rval (context);
-
-		conn = lm_connection_new_with_context (NULL, ctx);
-	} else {
-		conn = lm_connection_new (NULL);
-	}
-
-	DATA_PTR (self) = conn;
-
-	if (!NIL_P (server)) {
-		conn_set_server (self, server);
-	}
-
-	return self;
-}
-
-static void
-open_callback (LmConnection *conn, gboolean success, gpointer user_data)
-{
-	rb_funcall((VALUE)user_data, rb_intern ("call"), 1,
-		   GBOOL2RVAL (success));
-}
-
-VALUE
-conn_open (int argc, VALUE *argv, VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-	VALUE         func;
-
-	rb_scan_args (argc, argv, "0&", &func);
-	if (NIL_P (func)) {
-		func = rb_block_proc ();
-	}
-
-	return GBOOL2RVAL (lm_connection_open (conn, open_callback, 
-					       (gpointer) func, NULL, NULL));
-}
-
-VALUE
-conn_close (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return GBOOL2RVAL (lm_connection_close (conn, NULL));
-}
-
-static void
-auth_callback (LmConnection *conn, gboolean success, gpointer user_data)
-{
-	rb_funcall((VALUE)user_data, rb_intern ("call"), 1,
-		   GBOOL2RVAL (success));
-}
-
-VALUE
-conn_auth (int argc, VALUE *argv, VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-	VALUE         name, password, resource, func; 
-
-	rb_scan_args (argc, argv, "21&", &name, &password, &resource, &func);
-	if (NIL_P (func)) {
-		func = rb_block_proc ();
-	}
-
-	return GBOOL2RVAL (lm_connection_authenticate (conn, 
-						       StringValuePtr (name),
-						       StringValuePtr (password), 
-						       StringValuePtr (resource),
-						       auth_callback,
-						       (gpointer) func, NULL,
-						       NULL));
-}
-
-VALUE
-conn_set_keep_alive_rate (VALUE self, VALUE rate)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	lm_connection_set_keep_alive_rate (conn, NUM2UINT (rate));
-
-	return Qnil;
-}
-
-/*
- * VALUE
-conn_get_keep_alive_rate (VALUE self)
-{
-	LmConnection *connection;
-} */
-
-VALUE
-conn_is_open (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return GBOOL2RVAL (lm_connection_is_open (conn));
-}
-
-VALUE
-conn_is_authenticated (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return GBOOL2RVAL (lm_connection_is_authenticated (conn));
-}
-
-VALUE
-conn_get_server (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return rb_str_new2 (lm_connection_get_server (conn));
-}
-
-VALUE
-conn_set_server (VALUE self, VALUE server)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	if (!rb_respond_to (server, rb_intern ("to_s"))) {
-		rb_raise (rb_eArgError, "server should respond to to_s");
-	} else {
-		VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0);
-		lm_connection_set_server (conn, StringValuePtr (str_val));
-	}
-
-	return Qnil;
-}
-
-VALUE
-conn_get_jid (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return rb_str_new2 (lm_connection_get_jid (conn));
-}
-
-VALUE
-conn_set_jid (VALUE self, VALUE jid)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	if (!rb_respond_to (jid, rb_intern ("to_s"))) {
-		rb_raise (rb_eArgError, "jid should respond to to_s");
-	} else {
-		VALUE str_val = rb_funcall (jid, rb_intern ("to_s"), 0);
-		lm_connection_set_jid (conn, StringValuePtr (str_val));
-	}
-
-	return Qnil;
-}
-
-VALUE
-conn_get_port (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return UINT2NUM (lm_connection_get_port (conn));
-}
-
-VALUE
-conn_set_port (VALUE self, VALUE port)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	lm_connection_set_port (conn, NUM2UINT (port));
-
-	return Qnil;
-}
-
-VALUE
-conn_get_ssl (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return LMSSL2RVAL (lm_connection_get_ssl (conn));
-}
-
-VALUE
-conn_set_ssl (VALUE self, VALUE ssl_rval)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-	LmSSL        *ssl  = rb_lm_ssl_from_ruby_object (ssl_rval);
-
-	lm_connection_set_ssl (conn, ssl);
-
-	return Qnil;
-}
-
-VALUE
-conn_get_proxy (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return LMPROXY2RVAL (lm_connection_get_proxy (conn));
-}
-
-VALUE
-conn_set_proxy (VALUE self, VALUE proxy_rval)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-	LmProxy      *proxy = rb_lm_proxy_from_ruby_object (proxy_rval);
-
-	lm_connection_set_proxy (conn, proxy);
-
-	return Qnil;
-}
-
-VALUE
-conn_send (VALUE self, VALUE msg)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-	LmMessage    *m = rb_lm_message_from_ruby_object (msg);
-
-	return GBOOL2RVAL (lm_connection_send (conn, m, NULL));
-}
-
-VALUE
-conn_get_state (VALUE self)
-{
-	LmConnection *conn = rb_lm_connection_from_ruby_object (self);
-
-	return INT2FIX (lm_connection_get_state (conn));
-}
-
-static LmHandlerResult
-msg_handler_cb (LmMessageHandler *handler,
-		LmConnection     *connection,
-		LmMessage        *message,
-		gpointer          user_data)
-{
-	rb_funcall ((VALUE)user_data, rb_intern ("call"), 1, 
-		    LMMESSAGE2RVAL (message));
-
-	return LM_HANDLER_RESULT_ALLOW_MORE_HANDLERS;
-}
-
-VALUE
-conn_add_msg_handler (int argc, VALUE *argv, VALUE self)
-{
-	LmConnection     *conn = rb_lm_connection_from_ruby_object (self);
-	VALUE             type, func;
-	LmMessageHandler *handler;
-
-	rb_scan_args (argc, argv, "1&", &type, &func);
-	if (NIL_P (func)) {
-		func = rb_block_proc ();
-	}
-
-	handler = lm_message_handler_new (msg_handler_cb, (gpointer) func, NULL);
-
-	lm_connection_register_message_handler (conn, handler,
-						rb_lm_message_type_from_ruby_object (type),
-						LM_HANDLER_PRIORITY_NORMAL);
-	lm_message_handler_unref (handler);
-
-	return Qnil;
-}
-
-void
-Init_lm_connection (VALUE lm_mLM)
-{
-	lm_cConnection = rb_define_class_under (lm_mLM, "Connection", 
-						rb_cObject);
-
-	rb_define_alloc_func (lm_cConnection, conn_allocate);
-
-	rb_define_method (lm_cConnection, "initialize", conn_initialize, -1);
-	rb_define_method (lm_cConnection, "open", conn_open, -1);
-	rb_define_method (lm_cConnection, "close", conn_close, 0);
-	rb_define_method (lm_cConnection, "authenticate", conn_auth, -1);
-	rb_define_method (lm_cConnection, "keep_alive_rate=", conn_set_keep_alive_rate, 1);
-	/* rb_define_method (lm_cConnection, "keep_alive_rate", conn_get_keep_alive_rate, 0); */
-	rb_define_method (lm_cConnection, "open?", conn_is_open, 0);
-	rb_define_method (lm_cConnection, "authenticated?", conn_is_authenticated, 0);
-	rb_define_method (lm_cConnection, "server", conn_get_server, 0);
-	rb_define_method (lm_cConnection, "server=", conn_set_server, 1);
-	rb_define_method (lm_cConnection, "jid", conn_get_jid, 0);
-	rb_define_method (lm_cConnection, "jid=", conn_set_jid, 1);
-	rb_define_method (lm_cConnection, "port", conn_get_port, 0);
-	rb_define_method (lm_cConnection, "port=", conn_set_port, 1);
-
-	rb_define_method (lm_cConnection, "ssl", conn_get_ssl, 0);
-	rb_define_method (lm_cConnection, "ssl=", conn_set_ssl, 1);
-	rb_define_method (lm_cConnection, "proxy", conn_get_proxy, 0);
-	rb_define_method (lm_cConnection, "proxy=", conn_set_proxy, 1);
-
-	/* Use one send message and check if there is a block passed? */
-	
-	rb_define_method (lm_cConnection, "send", conn_send, 1);
-	/*
-	rb_define_method (lm_cConnection, "send_with_reply", conn_send_with_reply, -1);
-	rb_define_method (lm_cConnection, "send_raw", conn_send_raw, 1);
-	*/
-
-	rb_define_method (lm_cConnection, "state", conn_get_state, 0);
-	rb_define_method (lm_cConnection, "add_message_handler", conn_add_msg_handler, -1);
-}
--- a/bindings/ruby/src/rblm-constants.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-#include "rblm.h"
-
-VALUE lm_mMessageType;
-VALUE lm_mMessageSubType;
-VALUE lm_mDisconnectReason;
-VALUE lm_mConnectionState;
-VALUE lm_mProxyType;
-VALUE lm_mCertificateStatus;
-VALUE lm_mSSLStatus;
-VALUE lm_mSSLResponse;
-
-LmConnectionState
-rb_lm_connection_state_from_ruby_object (VALUE obj)
-{
-	LmConnectionState state;
-
-	state = FIX2INT (obj);
-	if (state < LM_CONNECTION_STATE_CLOSED ||
-	    state > LM_CONNECTION_STATE_AUTHENTICATED) {
-		rb_raise (rb_eArgError,
-			  "invalid LmConnectionState: %d (expected %d <= LmConnectionState <= %d)",
-			  state, LM_CONNECTION_STATE_CLOSED, 
-			  LM_CONNECTION_STATE_AUTHENTICATED);
-	}
-
-	return state;
-}
-
-LmDisconnectReason
-rb_lm_disconnect_reason_from_ruby_object (VALUE obj)
-{
-	LmDisconnectReason reason;
-
-	reason = FIX2INT (obj);
-	if (reason < LM_DISCONNECT_REASON_OK ||
-	    reason > LM_DISCONNECT_REASON_UNKNOWN) {
-		rb_raise (rb_eArgError,
-			  "invalid LmDisconnectReason: %d (expected %d <= LmDisconnectReason <= %d)",
-			  reason, 
-			  LM_DISCONNECT_REASON_OK, 
-			  LM_DISCONNECT_REASON_UNKNOWN);
-	}
-
-	return reason;
-}
-
-LmMessageType
-rb_lm_message_type_from_ruby_object (VALUE obj)
-{
-	LmMessageType type;
-
-	type = FIX2INT (obj);
-	if (type < LM_MESSAGE_TYPE_MESSAGE ||
-	    type > LM_MESSAGE_TYPE_IQ) {
-		rb_raise (rb_eArgError,
-			  "invalid LmMessageType: %d (expected %d <= LmMessageType <= %d)",
-			  type, LM_MESSAGE_TYPE_MESSAGE,
-			  LM_MESSAGE_TYPE_IQ);
-	}
-
-	return type;
-}
-
-LmMessageSubType
-rb_lm_message_sub_type_from_ruby_object (VALUE obj)
-{
-	LmMessageSubType type;
-
-	type = FIX2INT (obj);
-	if (type < LM_MESSAGE_SUB_TYPE_AVAILABLE ||
-	    type > LM_MESSAGE_SUB_TYPE_ERROR) {
-		rb_raise (rb_eArgError,
-			  "invalid LmMessageSubType: %d (expected %d <= LmMessageSubType <= %d)",
-			  type, LM_MESSAGE_SUB_TYPE_AVAILABLE,
-			  LM_MESSAGE_SUB_TYPE_ERROR);
-	}
-
-	return type;
-}
-
-LmProxyType
-rb_lm_proxy_type_from_ruby_object (VALUE obj)
-{
-	LmProxyType type;
-
-	type = FIX2INT (obj);
-	if (type < LM_PROXY_TYPE_NONE || type > LM_PROXY_TYPE_HTTP) {
-		rb_raise (rb_eArgError,
-			  "invalid LmProxyType: %d (expected %d <= LmProxyType <= %d)",
-			  type, LM_PROXY_TYPE_NONE, LM_PROXY_TYPE_HTTP);
-	}
-
-	return type;
-}
-
-LmCertificateStatus
-rb_lm_certificate_status_from_ruby_object (VALUE obj)
-{
-	LmCertificateStatus status;
-
-	status = FIX2INT (obj);
-	if (status < LM_CERT_INVALID || status > LM_CERT_REVOKED) {
-		rb_raise (rb_eArgError,
-			  "invalid LmCertificateStatus: %d (expected %d <= LmCertificateStatus <= %d)",
-			  status, LM_CERT_INVALID, LM_CERT_REVOKED);
-	}
-
-	return status;
-}
-
-LmSSLStatus 
-rb_lm_ssl_status_from_ruby_object (VALUE obj)
-{
-	LmSSLStatus status;
-
-	status = FIX2INT (obj);
-	if (status < LM_SSL_STATUS_NO_CERT_FOUND || 
-	    status > LM_SSL_STATUS_GENERIC_ERROR) {
-		rb_raise (rb_eArgError, 
-			  "invalid LmSSLStatus: %d (expected %d <= LmSSLStatus <= %d)",
-			  status, LM_SSL_STATUS_NO_CERT_FOUND, 
-			  LM_SSL_STATUS_GENERIC_ERROR);
-	}
-
-	return status;
-}
-
-LmSSLResponse
-rb_lm_ssl_response_from_ruby_object (VALUE obj)
-{
-	LmSSLResponse response;
-	
-	response = FIX2INT (obj);
-	if (response < LM_SSL_RESPONSE_CONTINUE || 
-	    response > LM_SSL_RESPONSE_STOP) {
-		rb_raise (rb_eArgError,
-			  "invalid LmSSLResponse: %d (expected %d <= LmSSLResponse <= %d)",
-			  response,
-			  LM_SSL_RESPONSE_CONTINUE, LM_SSL_RESPONSE_STOP);
-	}
-
-	return response;
-}
-
-void 
-Init_lm_constants (VALUE lm_mLM)
-{
-	/* LmMessageType */
-	lm_mMessageType = rb_define_module_under (lm_mLM, "MessageType");
-
-	rb_define_const (lm_mMessageType, "MESSAGE",
-			 INT2FIX (LM_MESSAGE_TYPE_MESSAGE));
-	rb_define_const (lm_mMessageType, "PRESENCE",
-			 INT2FIX (LM_MESSAGE_TYPE_PRESENCE));
-	rb_define_const (lm_mMessageType, "IQ",
-			 INT2FIX (LM_MESSAGE_TYPE_IQ));
-
-	/* LmMessageSubType */
-	lm_mMessageSubType = rb_define_module_under (lm_mLM, "MessageSubType");
-
-	rb_define_const (lm_mMessageSubType, "AVAILABLE",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_AVAILABLE));
-	rb_define_const (lm_mMessageSubType, "NORMAL",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_NORMAL));
-	rb_define_const (lm_mMessageSubType, "CHAT",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_CHAT));
-	rb_define_const (lm_mMessageSubType, "GROUPCHAT",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_GROUPCHAT));
-	rb_define_const (lm_mMessageSubType, "HEADLINE",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_HEADLINE));
-	rb_define_const (lm_mMessageSubType, "UNAVAILABLE",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_UNAVAILABLE));
-	rb_define_const (lm_mMessageSubType, "PROBE",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_PROBE));
-	rb_define_const (lm_mMessageSubType, "SUBSCRIBE",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_SUBSCRIBE));
-	rb_define_const (lm_mMessageSubType, "UNSUBSCRIBE",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_UNSUBSCRIBE));
-	rb_define_const (lm_mMessageSubType, "SUBSCRIBED",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_SUBSCRIBED));
-	rb_define_const (lm_mMessageSubType, "UNSUBSCRIBED",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_UNSUBSCRIBED));
-	rb_define_const (lm_mMessageSubType, "GET",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_GET));
-	rb_define_const (lm_mMessageSubType, "SET",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_SET));
-	rb_define_const (lm_mMessageSubType, "RESULT",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_RESULT));
-	rb_define_const (lm_mMessageSubType, "ERROR",
-			 INT2FIX (LM_MESSAGE_SUB_TYPE_ERROR));
-
-	/* LmDisconnectReason */
-	lm_mDisconnectReason = rb_define_module_under (lm_mLM, "DisconnectReason");
-
-	rb_define_const (lm_mDisconnectReason, "OK",
-			 INT2FIX (LM_DISCONNECT_REASON_OK));
-	rb_define_const (lm_mDisconnectReason, "PING_TIME_OUT",
-			 INT2FIX (LM_DISCONNECT_REASON_PING_TIME_OUT));
-	rb_define_const (lm_mDisconnectReason, "HUP",
-			 INT2FIX (LM_DISCONNECT_REASON_HUP));
-	rb_define_const (lm_mDisconnectReason, "ERROR",
-			 INT2FIX (LM_DISCONNECT_REASON_ERROR));
-	rb_define_const (lm_mDisconnectReason, "RESOURCE_CONFLICT",
-			 INT2FIX (LM_DISCONNECT_REASON_RESOURCE_CONFLICT));
-	rb_define_const (lm_mDisconnectReason, "INVALID_XML",
-			 INT2FIX (LM_DISCONNECT_REASON_INVALID_XML));
-	rb_define_const (lm_mDisconnectReason, "UNKNOWN",
-			 INT2FIX (LM_DISCONNECT_REASON_UNKNOWN));
-
-	/* LmConnectionState */
-	lm_mConnectionState = rb_define_module_under (lm_mLM, "ConnectionState");
-	rb_define_const (lm_mConnectionState, "CLOSED",
-			 INT2FIX (LM_CONNECTION_STATE_CLOSED));
-	rb_define_const (lm_mConnectionState, "OPENING",
-			 INT2FIX (LM_CONNECTION_STATE_OPENING));
-	rb_define_const (lm_mConnectionState, "OPEN",
-			 INT2FIX (LM_CONNECTION_STATE_OPEN));
-	rb_define_const (lm_mConnectionState, "AUTHENTICATING",
-			 INT2FIX (LM_CONNECTION_STATE_AUTHENTICATING));
-	rb_define_const (lm_mConnectionState, "AUTHENTICATED",
-			 INT2FIX (LM_CONNECTION_STATE_AUTHENTICATED));
-
-	/* LmProxyType */
-	lm_mProxyType = rb_define_module_under (lm_mLM, "ProxyType");
-
-	rb_define_const (lm_mProxyType, "NONE",
-			 INT2FIX (LM_PROXY_TYPE_NONE));
-	rb_define_const (lm_mProxyType, "HTTP",
-			 INT2FIX (LM_PROXY_TYPE_HTTP));
-
-	/* LmCertificateStatus */
-	lm_mCertificateStatus = rb_define_module_under (lm_mLM, 
-							"CertificateStatus");
-	rb_define_const (lm_mCertificateStatus, "INVALID",
-			 INT2FIX (LM_CERT_INVALID));
-	rb_define_const (lm_mCertificateStatus, "ISSUER_NOT_FOUND",
-			 INT2FIX (LM_CERT_ISSUER_NOT_FOUND));
-	rb_define_const (lm_mCertificateStatus, "REVOKED",
-			 INT2FIX (LM_CERT_REVOKED));
-
-	/* LmSSLStatus */
-	lm_mSSLStatus = rb_define_module_under (lm_mLM, "SSLStatus");
-
-	rb_define_const (lm_mSSLStatus, "NO_CERT_FOUND",
-			 INT2FIX (LM_SSL_STATUS_NO_CERT_FOUND));
-	rb_define_const (lm_mSSLStatus, "UNTRUSTED_CERT",
-			 INT2FIX (LM_SSL_STATUS_UNTRUSTED_CERT));
-	rb_define_const (lm_mSSLStatus, "CERT_EXPIRED",
-			 INT2FIX (LM_SSL_STATUS_CERT_EXPIRED));
-	rb_define_const (lm_mSSLStatus, "CERT_NOT_ACTIVATED",
-			 INT2FIX (LM_SSL_STATUS_CERT_NOT_ACTIVATED));
-	rb_define_const (lm_mSSLStatus, "CERT_HOSTNAME_MISMATCH",
-			 INT2FIX (LM_SSL_STATUS_CERT_HOSTNAME_MISMATCH));
-	rb_define_const (lm_mSSLStatus, "CERT_FINGERPRINT_MISMATCH",
-			 INT2FIX (LM_SSL_STATUS_CERT_FINGERPRINT_MISMATCH));
-	rb_define_const (lm_mSSLStatus, "GENERIC_ERROR",
-			 INT2FIX (LM_SSL_STATUS_GENERIC_ERROR));
-
-	/* LmSSLResponse */
-	lm_mSSLResponse = rb_define_module_under (lm_mLM, "SSLResponse");
-
-	rb_define_const (lm_mSSLResponse, "CONTINUE",
-			 INT2FIX (LM_SSL_RESPONSE_CONTINUE));
-	rb_define_const (lm_mSSLResponse, "STOP",
-			 INT2FIX (LM_SSL_RESPONSE_STOP));
-}
--- a/bindings/ruby/src/rblm-message-node.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,240 +0,0 @@
-#include <rblm.h>
-#include <rblm-private.h>
-
-VALUE lm_cMessageNode;
-
-LmMessageNode *
-rb_lm_message_node_from_ruby_object (VALUE obj)
-{
-	LmMessageNode *node;
-
-	if (!rb_lm__is_kind_of (obj, lm_cMessageNode)) {
-		rb_raise (rb_eTypeError, "not a LmMessageNode");
-	}
-
-	Data_Get_Struct (obj, LmMessageNode, node);
-
-	return node;
-}
-
-void
-msg_node_free (LmMessageNode *node)
-{
-	lm_message_node_unref (node);
-}
-
-VALUE
-rb_lm_message_node_to_ruby_object (LmMessageNode *node)
-{
-	if (node) {
-		lm_message_node_ref (node);
-		return Data_Wrap_Struct (lm_cMessageNode, NULL, 
-					 msg_node_free, node);
-	} else {
-		return Qnil;
-	}
-}
-
-VALUE
-msg_node_allocate (VALUE klass)
-{
-	return Data_Wrap_Struct (klass, NULL, msg_node_free, NULL);
-}
-
-VALUE
-msg_node_get_name (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	return rb_str_new2 (node->name);
-}
-
-VALUE
-msg_node_get_value (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	if (lm_message_node_get_value (node)) {
-		return rb_str_new2 (lm_message_node_get_value (node));
-	} 
-
-	return Qnil;
-}
-
-VALUE
-msg_node_set_value (VALUE self, VALUE value)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);	
-	char          *value_str = NULL;
-	
-	if (!rb_respond_to (value, rb_intern ("to_s"))) {
-		rb_raise (rb_eArgError, "value should respond to to_s");
-	} else {
-		VALUE str_val = rb_funcall (value, rb_intern ("to_s"), 0);
-		value_str = StringValuePtr (str_val);
-	}
-
-	lm_message_node_set_value (node, value_str);
-}
-
-VALUE
-msg_node_add_child (int argc, VALUE *argv, VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-	LmMessageNode *child;
-	VALUE          name, value;
-	char          *value_str = NULL;
-	
-	rb_scan_args (argc, argv, "11", &name, &value);
-
-	if (!NIL_P (value)) {
-		if (!rb_respond_to (value, rb_intern ("to_s"))) {
-			rb_raise (rb_eArgError, "value should respond to to_s");
-		} else {
-			VALUE str_val = rb_funcall (value, rb_intern ("to_s"), 0);
-			value_str = StringValuePtr (str_val);
-		}
-	}
-
-	child = lm_message_node_add_child (node, StringValuePtr (name),
-					   value_str);
-
-	return LMMESSAGENODE2RVAL (child);
-}
-
-VALUE
-msg_node_get_attribute (VALUE self, VALUE attr)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	if (lm_message_node_get_attribute (node, StringValuePtr (attr))) {
-	    return rb_str_new2 (lm_message_node_get_attribute (node, 
-							       StringValuePtr (attr)));
-	}
-
-	return Qnil;
-}
-
-VALUE
-msg_node_set_attribute (VALUE self, VALUE attr, VALUE value)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-	char          *value_str = NULL;
-
-	if (!NIL_P (value)) {
-		value_str = StringValuePtr (value);
-	}
-	
-	lm_message_node_set_attribute (node, StringValuePtr (attr), value_str);
-	 
-	return Qnil;
-}
-
-VALUE 
-msg_node_get_child (VALUE self, VALUE name)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-	LmMessageNode *child;
-
-	child = lm_message_node_get_child (node, StringValuePtr (name));
-	
-	return LMMESSAGENODE2RVAL (child);
-}
-
-VALUE
-msg_node_find_child (VALUE self, VALUE name)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-	LmMessageNode *child;
-
-	child = lm_message_node_find_child (node, StringValuePtr (name));
-
-	return LMMESSAGENODE2RVAL (child);
-}
-
-VALUE
-msg_node_get_is_raw_mode (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	return GBOOL2RVAL (lm_message_node_get_raw_mode (node));
-}
-
-VALUE
-msg_node_set_is_raw_mode (VALUE self, VALUE raw_mode)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	lm_message_node_set_raw_mode (node, RVAL2GBOOL (raw_mode));
-
-	return Qnil;
-}
-
-VALUE
-msg_node_to_string (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	return rb_str_new2 (lm_message_node_to_string (node));
-}
-
-VALUE
-msg_node_get_next (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	return LMMESSAGENODE2RVAL (node->next);
-}
-
-VALUE
-msg_node_get_prev (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	return LMMESSAGENODE2RVAL (node->prev);
-}
-
-VALUE
-msg_node_get_parent (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	return LMMESSAGENODE2RVAL (node->parent);
-}
-
-VALUE 
-msg_node_get_children (VALUE self)
-{
-	LmMessageNode *node = rb_lm_message_node_from_ruby_object (self);
-
-	return LMMESSAGENODE2RVAL (node->children);
-}
-
-extern void 
-Init_lm_message_node (VALUE lm_mLM)
-{
-	lm_cMessageNode = rb_define_class_under (lm_mLM, "MessageNode", 
-						 rb_cObject);
-
-	rb_define_alloc_func (lm_cMessageNode, msg_node_allocate);
-
-	rb_define_method (lm_cMessageNode, "name", msg_node_get_name, 0);
-	rb_define_method (lm_cMessageNode, "value", msg_node_get_value, 0);
-	rb_define_method (lm_cMessageNode, "value=", msg_node_set_value, 1);
-
-	rb_define_method (lm_cMessageNode, "add_child", msg_node_add_child, -1);
-	rb_define_method (lm_cMessageNode, "get_attribute", msg_node_get_attribute, 1);
-	rb_define_method (lm_cMessageNode, "set_attribute", msg_node_set_attribute, 2);
-	rb_define_method (lm_cMessageNode, "get_child", msg_node_get_child, 1);
-	rb_define_method (lm_cMessageNode, "find_child", msg_node_find_child, 1);
-
-	rb_define_method (lm_cMessageNode, "raw_mode", msg_node_get_is_raw_mode, 0);
-	rb_define_method (lm_cMessageNode, "raw_mode=", msg_node_set_is_raw_mode, 1);
-
-	rb_define_method (lm_cMessageNode, "to_s", msg_node_to_string, 0);
-
-	rb_define_method (lm_cMessageNode, "next", msg_node_get_next, 0);
-	rb_define_method (lm_cMessageNode, "prev", msg_node_get_prev, 0);
-	rb_define_method (lm_cMessageNode, "parent", msg_node_get_parent, 0);
-	rb_define_method (lm_cMessageNode, "children", msg_node_get_children, 0);
-}	
--- a/bindings/ruby/src/rblm-message.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,117 +0,0 @@
-#include "rblm.h"
-#include "rblm-private.h"
-
-/* How to handle type, sub_type and root node*/
-
-VALUE lm_cMessage;
-
-LmMessage *
-rb_lm_message_from_ruby_object (VALUE obj)
-{
-	LmMessage *m;
-
-	if (!rb_lm__is_kind_of (obj, lm_cMessage)) {
-		rb_raise (rb_eTypeError, "not a LmMessage");
-	}
-
-	Data_Get_Struct (obj, LmMessage, m);
-
-	return m;
-}
-
-void
-msg_free (LmMessage *m)
-{
-	lm_message_unref (m);
-}
-
-VALUE
-rb_lm_message_to_ruby_object (LmMessage *m)
-{
-	if (m) {
-		lm_message_ref (m);
-		return Data_Wrap_Struct (lm_cMessage, NULL,
-					 msg_free, m);
-	} else {
-		return Qnil;
-	}
-}
-
-VALUE
-msg_allocate (VALUE klass)
-{
-	return Data_Wrap_Struct (klass, NULL, msg_free, NULL);
-}
-
-VALUE
-msg_initialize (int argc, VALUE *argv, VALUE self)
-{
-	LmMessage  *m;
-	VALUE       to, type, sub_type;
-	char       *to_str = NULL;
-
-	rb_scan_args (argc, argv, "21", &to, &type, &sub_type);
-
-	/* To can be nil */
-	if (!NIL_P (to)) {
-		if (!rb_respond_to (to, rb_intern ("to_s"))) {
-			rb_raise (rb_eArgError, "to should respond to to_s");
-		} else {
-			VALUE str_val = rb_funcall (to, rb_intern ("to_s"), 0);
-			to_str = StringValuePtr (str_val);
-		}
-	} 
-
-	if (NIL_P (sub_type)) {
-		/* Without sub_type */
-		m = lm_message_new (to_str, FIX2INT (type));
-	} else {
-		m = lm_message_new_with_sub_type (to_str,
-						  FIX2INT (type),
-						  FIX2INT (sub_type));
-	}
-
-	DATA_PTR (self) = m;
-
-	return self;
-}
-
-VALUE
-msg_get_type (VALUE self)
-{
-	LmMessage *m = rb_lm_message_from_ruby_object (self);
-
-	return INT2FIX (lm_message_get_type (m));
-}
-
-VALUE
-msg_get_sub_type (VALUE self)
-{
-	LmMessage *m = rb_lm_message_from_ruby_object (self);
-
-	return INT2FIX (lm_message_get_sub_type (m));
-}
-
-VALUE
-msg_get_root_node (VALUE self)
-{
-	LmMessage *m = rb_lm_message_from_ruby_object (self);
-
-	return LMMESSAGENODE2RVAL (m->node);
-}
-
-extern void 
-Init_lm_message (VALUE lm_mLM)
-{
-	lm_cMessage = rb_define_class_under (lm_mLM, "Message", rb_cObject);
-
-	rb_define_alloc_func (lm_cMessage, msg_allocate);
-	
-	rb_define_method (lm_cMessage, "initialize", msg_initialize, -1);
-	rb_define_method (lm_cMessage, "type", msg_get_type, 0);
-	rb_define_method (lm_cMessage, "sub_type", msg_get_sub_type, 0);
-	rb_define_method (lm_cMessage, "root_node", msg_get_root_node, 0);
-
-	rb_define_alias (lm_cMessage, "node", "root_node");
-}
-
--- a/bindings/ruby/src/rblm-private.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,8 +0,0 @@
-#include "rblm-private.h"
-
-gboolean
-rb_lm__is_kind_of (VALUE object, VALUE klass)
-{
-	return RVAL2GBOOL (rb_obj_is_kind_of (object, klass));
-}
-
--- a/bindings/ruby/src/rblm-private.h	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-
-#ifndef __RBLM_PRIVATE_H__
-#define __RBLM_PRIVATE_H__
-
-#include <glib.h>
-#include <ruby.h>
-#include <loudmouth/loudmouth.h>
-
-#define GBOOL2RVAL(x) (x == TRUE ? Qtrue : Qfalse)
-#define RVAL2GBOOL(x) RTEST(x)
-
-#define LMMESSAGENODE2RVAL(x) (rb_lm_message_node_to_ruby_object(x))
-#define LMSSL2RVAL(x) (rb_lm_ssl_to_ruby_object(x))
-#define LMPROXY2RVAL(x) (rb_lm_proxy_to_ruby_object(x))
-#define LMMESSAGE2RVAL(x) (rb_lm_message_to_ruby_object(x))
-
-gboolean            rb_lm__is_kind_of (VALUE object, VALUE klass);
-
-VALUE               rb_lm_message_to_ruby_object      (LmMessage     *m);
-VALUE               rb_lm_message_node_to_ruby_object (LmMessageNode *node);
-VALUE               rb_lm_ssl_to_ruby_object          (LmSSL         *ssl);
-VALUE               rb_lm_proxy_to_ruby_object        (LmProxy       *proxy);
-
-LmConnection *      rb_lm_connection_from_ruby_object         (VALUE obj);
-LmMessage *         rb_lm_message_from_ruby_object            (VALUE obj);
-LmMessageNode *     rb_lm_message_node_from_ruby_object       (VALUE obj);
-LmSSL *             rb_lm_ssl_from_ruby_object                (VALUE obj);
-LmProxy *           rb_lm_proxy_from_ruby_object              (VALUE obj);
-
-LmConnectionState   rb_lm_connection_state_from_ruby_object   (VALUE obj);
-LmDisconnectReason  rb_lm_disconnect_reason_from_ruby_object  (VALUE obj);
-LmMessageType       rb_lm_message_type_from_ruby_object       (VALUE obj);
-LmMessageSubType    rb_lm_message_sub_type_from_ruby_object   (VALUE obj);
-LmProxyType         rb_lm_proxy_type_from_ruby_object         (VALUE obj);
-LmCertificateStatus rb_lm_certificate_status_from_ruby_object (VALUE obj);
-LmSSLStatus         rb_lm_ssl_status_from_ruby_object         (VALUE obj);
-LmSSLResponse       rb_lm_ssl_response_from_ruby_object       (VALUE obj);
-
-#endif /* __RBLM_PRIVATE_H__ */
-
--- a/bindings/ruby/src/rblm-proxy.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,210 +0,0 @@
-#include "rblm.h"
-
-VALUE lm_cProxy;
-
-LmProxy *
-rb_lm_proxy_from_ruby_object (VALUE obj)
-{
-	LmProxy *proxy;
-
-	if (!rb_lm__is_kind_of (obj, lm_cProxy)) {
-		rb_raise (rb_eTypeError, "not a LmProxy");
-	}
-
-	Data_Get_Struct (obj, LmProxy, proxy);
-
-	return proxy;
-}
-
-void
-proxy_free (LmProxy *proxy)
-{
-	lm_proxy_unref (proxy);
-}
-
-VALUE
-rb_lm_proxy_to_ruby_object (LmProxy *proxy)
-{
-	if (proxy) {
-		lm_proxy_ref (proxy);
-		return Data_Wrap_Struct (lm_cProxy, NULL, 
-					 proxy_free, proxy);
-	} else {
-		return Qnil;
-	}
-}
-VALUE
-proxy_allocate (VALUE klass)
-{
-	return Data_Wrap_Struct (klass, NULL, proxy_free, NULL);
-}
-
-VALUE
-proxy_initialize (int argc, VALUE *argv, VALUE self)
-{
-	LmProxy *proxy;
-	VALUE    type, server, port;
-	char    *server_str = NULL;
-
-	rb_scan_args (argc, argv, "12", &type, &server, &port);
-
-	proxy = lm_proxy_new (FIX2INT (type));
-
-	if (!NIL_P (server)) {
-		if (!rb_respond_to (server, rb_intern ("to_s"))) {
-			rb_raise (rb_eArgError, "server should respond to to_s");
-		} else {
-			VALUE str_val = rb_funcall (server, rb_intern ("to_s"), 0);
-			lm_proxy_set_server (proxy, StringValuePtr (str_val));
-		}
-	}
-
-	if (!NIL_P (port)) {
-		lm_proxy_set_port (proxy, NUM2UINT (port));
-	}
-
-	DATA_PTR (self) = proxy;
-
-	return self;
-}
-
-VALUE
-proxy_get_type (VALUE self)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-
-	return INT2FIX (lm_proxy_get_type (proxy));
-}
-
-VALUE
-proxy_set_type (VALUE self, VALUE type)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-
-	lm_proxy_set_type (proxy, FIX2INT (type));
-
-	return Qnil;
-}
-
-VALUE
-proxy_get_server (VALUE self)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-
-	if (lm_proxy_get_server (proxy)) {
-		return rb_str_new2 (lm_proxy_get_server (proxy));
-	}
-
-	return Qnil;
-}
-
-VALUE
-proxy_set_server (VALUE self, VALUE server)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-	VALUE    str_val;
-
-	if (!rb_respond_to (server, rb_intern ("to_s"))) {
-		rb_raise (rb_eArgError, "server should respond to to_s");
-	} 
-
-	str_val = rb_funcall (server, rb_intern ("to_s"), 0);
-	lm_proxy_set_server (proxy, StringValuePtr (str_val));
-
-	return Qnil;
-}
-
-VALUE 
-proxy_get_port (VALUE self)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-
-	return UINT2NUM (lm_proxy_get_port (proxy));
-}
-
-VALUE
-proxy_set_port (VALUE self, VALUE port)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-
-	lm_proxy_set_port (proxy, NUM2UINT (port));
-
-	return Qnil;
-}
-
-VALUE
-proxy_get_username (VALUE self)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-
-	if (lm_proxy_get_username (proxy)) {
-		return rb_str_new2 (lm_proxy_get_username (proxy));
-	}
-
-	return Qnil;
-}
-
-VALUE
-proxy_set_username (VALUE self, VALUE username)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-	VALUE    str_val;
-
-	if (!rb_respond_to (username, rb_intern ("to_s"))) {
-		rb_raise (rb_eArgError, "username should respond to to_s");
-	} 
-
-	str_val = rb_funcall (username, rb_intern ("to_s"), 0);
-	lm_proxy_set_username (proxy, StringValuePtr (str_val));
-
-	return Qnil;
-}
-
-VALUE
-proxy_get_password (VALUE self)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-
-	if (lm_proxy_get_password (proxy)) {
-		return rb_str_new2 (lm_proxy_get_password (proxy));
-	}
-
-	return Qnil;
-}
-
-VALUE
-proxy_set_password (VALUE self, VALUE password)
-{
-	LmProxy *proxy = rb_lm_proxy_from_ruby_object (self);
-	VALUE    str_val;
-
-	if (!rb_respond_to (password, rb_intern ("to_s"))) {
-		rb_raise (rb_eArgError, "password should respond to to_s");
-	} 
-
-	str_val = rb_funcall (password, rb_intern ("to_s"), 0);
-	lm_proxy_set_password (proxy, StringValuePtr (str_val));
-
-	return Qnil;
-}
-
-extern void
-Init_lm_proxy (VALUE lm_mLM)
-{
-	lm_cProxy = rb_define_class_under (lm_mLM, "Proxy", rb_cObject);
-
-	rb_define_alloc_func (lm_cProxy, proxy_allocate);
-
-	rb_define_method (lm_cProxy, "initialize", proxy_initialize, -1);
-	rb_define_method (lm_cProxy, "type", proxy_get_type, 0);
-	rb_define_method (lm_cProxy, "type=", proxy_set_type, 1);
-	rb_define_method (lm_cProxy, "server", proxy_get_server, 0);
-	rb_define_method (lm_cProxy, "server=", proxy_set_server, 1);
-	rb_define_method (lm_cProxy, "port", proxy_get_port, 0);
-	rb_define_method (lm_cProxy, "port=", proxy_set_port, 1);
-	rb_define_method (lm_cProxy, "username", proxy_get_username, 0);
-	rb_define_method (lm_cProxy, "username=", proxy_set_username, 1);
-	rb_define_method (lm_cProxy, "password", proxy_get_password, 0);
-	rb_define_method (lm_cProxy, "password=", proxy_set_password, 1);
-}
-
--- a/bindings/ruby/src/rblm-ssl.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,171 +0,0 @@
-#include "rblm.h"
-#include "rblm-private.h"
-
-VALUE lm_cSSL;
-
-LmSSL *
-rb_lm_ssl_from_ruby_object (VALUE obj)
-{
-	LmSSL *ssl;
-
-	if (!rb_lm__is_kind_of (obj, lm_cSSL)) {
-		rb_raise (rb_eTypeError, "not a LmSSL");
-	}
-
-	Data_Get_Struct (obj, LmSSL, ssl);
-
-	return ssl;
-}
-
-void
-ssl_free (LmSSL *ssl)
-{
-	lm_ssl_unref (ssl);
-}
-
-VALUE
-rb_lm_ssl_to_ruby_object (LmSSL *ssl)
-{
-	if (ssl) {
-		lm_ssl_ref (ssl);
-		return Data_Wrap_Struct (lm_cSSL, NULL, 
-					 ssl_free, ssl);
-	} else {
-		return Qnil;
-	}
-}
-
-VALUE
-ssl_allocate (VALUE klass)
-{
-	return Data_Wrap_Struct (klass, NULL, ssl_free, NULL);
-}
-
-static VALUE
-ssl_is_supported (VALUE self)
-{
-	return GBOOL2RVAL (lm_ssl_is_supported ());
-}
-
-static LmSSLResponse
-ssl_func_callback (LmSSL       *ssl,
-		   LmSSLStatus  status,
-		   gpointer     user_data)
-{
-	VALUE response;
-
-	if (!user_data) {
-		return LM_SSL_RESPONSE_CONTINUE;
-	}
-
-	response = rb_funcall ((VALUE)user_data, rb_intern ("call"), 1,
-			       INT2FIX (status));
-
-	return rb_lm_ssl_response_from_ruby_object (response);
-}
-
-static VALUE
-ssl_initialize (int argc, VALUE *argv, VALUE self)
-{
-	LmSSL    *ssl;
-	VALUE     fingerprint;
-	VALUE     func;
-	char     *fingerprint_str = NULL;
-	gpointer  func_ptr = NULL;
-
-	rb_scan_args (argc, argv, "01&", &fingerprint, &func);
-
-	if (!NIL_P (func)) {
-		func_ptr = (gpointer) func;
-	}
-
-	if (!NIL_P (fingerprint)) {
-		VALUE str_val;
-
-		if (!rb_respond_to (fingerprint, rb_intern ("to_s"))) {
-			rb_raise (rb_eArgError, 
-				  "fingerprint should respond to to_s");
-		}
-
-		str_val = rb_funcall (fingerprint, rb_intern ("to_s"), 0);
-		fingerprint_str = StringValuePtr (str_val);
-	}
-
-	ssl = lm_ssl_new (fingerprint_str, ssl_func_callback,
-			  func_ptr, NULL);
-
-	DATA_PTR (self) = ssl;
-
-	return self;
-}
-
-static VALUE
-ssl_get_fingerprint (VALUE self)
-{
-	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
-
-	if (lm_ssl_get_fingerprint (ssl)) {
-		return rb_str_new2 (lm_ssl_get_fingerprint (ssl));
-	}
-
-	return Qnil;
-}
-
-static VALUE
-ssl_get_use_starttls (VALUE self)
-{
-	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
-
-	return GBOOL2RVAL (lm_ssl_get_use_starttls (ssl));
-}
-
-static VALUE
-ssl_set_use_starttls (VALUE self, VALUE use)
-{
-	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
-
-	lm_ssl_use_starttls (ssl,
-			     RVAL2GBOOL (use),
-			     lm_ssl_get_require_starttls (ssl));
-
-	return Qnil;
-}
-
-static VALUE
-ssl_get_require_starttls (VALUE self)
-{
-	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
-
-	return GBOOL2RVAL (lm_ssl_get_require_starttls (ssl));
-}
-
-static VALUE
-ssl_set_require_starttls (VALUE self, VALUE require)
-{
-	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
-
-	lm_ssl_use_starttls (ssl,
-			     lm_ssl_get_use_starttls (ssl),
-			     RVAL2GBOOL (require));
-
-	return Qnil;
-}
-
-extern void
-Init_lm_ssl (VALUE lm_mLM)
-{
-	lm_cSSL = rb_define_class_under (lm_mLM, "SSL", rb_cObject);
-
-	rb_define_alloc_func (lm_cSSL, ssl_allocate);
-
-	rb_define_singleton_method (lm_cSSL, "supported?", 
-				    ssl_is_supported, 0);
-
-	rb_define_method (lm_cSSL, "initialize", ssl_initialize, -1);
-	rb_define_method (lm_cSSL, "fingerprint", ssl_get_fingerprint, 0);
-	rb_define_method (lm_cSSL, "use_starttls", ssl_get_use_starttls, 0);
-	rb_define_method (lm_cSSL, "use_starttls=", ssl_set_use_starttls, 1);
-	rb_define_method (lm_cSSL, "require_starttls", ssl_get_require_starttls, 0);
-	rb_define_method (lm_cSSL, "require_starttls=", ssl_set_require_starttls, 1);
-}
-
--- a/bindings/ruby/src/rblm.c	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#include "rblm.h"
-
-void
-Init_loudmouth (void)
-{
-	VALUE lm_mLM;
-	
-	lm_mLM = rb_define_module ("LM");
-
-	Init_lm_connection (lm_mLM);
-	Init_lm_message (lm_mLM);
-	Init_lm_message_node (lm_mLM);
-	Init_lm_constants (lm_mLM);
-	Init_lm_ssl (lm_mLM);
-	Init_lm_proxy (lm_mLM);
-}
-
--- a/bindings/ruby/src/rblm.h	Fri Apr 11 18:15:58 2008 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,17 +0,0 @@
-#ifndef __RLM_H__
-#define __RLM_H__
-
-#include <ruby.h>
-#include <loudmouth/loudmouth.h> 
-#include <glib.h>
-
-extern void Init_loudmouth          (void);
-extern void Init_lm_connection      (VALUE lm_mLM);
-extern void Init_lm_message         (VALUE lm_mLM);
-extern void Init_lm_message_node    (VALUE lm_mLM);
-extern void Init_lm_constants       (VALUE lm_mLM);
-extern void Init_lm_ssl             (VALUE lm_mLM);
-extern void Init_lm_proxy           (VALUE lm_mLM);
-
-#endif /* __RLM_H__ */
-