bindings/ruby/rblm-ssl.c
changeset 383 926c939af071
parent 382 bc887affb431
child 384 0b66f7d71abf
equal deleted inserted replaced
382:bc887affb431 383:926c939af071
    26 ssl_allocate (VALUE klass)
    26 ssl_allocate (VALUE klass)
    27 {
    27 {
    28 	return Data_Wrap_Struct (klass, NULL, ssl_free, NULL);
    28 	return Data_Wrap_Struct (klass, NULL, ssl_free, NULL);
    29 }
    29 }
    30 
    30 
       
    31 static VALUE
       
    32 ssl_is_supported (VALUE self)
       
    33 {
       
    34 	return GBOOL2RVAL (lm_ssl_is_supported ());
       
    35 }
       
    36 
    31 static LmSSLResponse
    37 static LmSSLResponse
    32 ssl_func_callback (LmSSL       *ssl,
    38 ssl_func_callback (LmSSL       *ssl,
    33 		   LmSSLStatus  status,
    39 		   LmSSLStatus  status,
    34 		   gpointer     user_data)
    40 		   gpointer     user_data)
    35 {
    41 {
    43 			       INT2FIX (status));
    49 			       INT2FIX (status));
    44 
    50 
    45 	return rb_lm_ssl_response_from_ruby_object (response);
    51 	return rb_lm_ssl_response_from_ruby_object (response);
    46 }
    52 }
    47 
    53 
    48 VALUE
    54 static VALUE
    49 ssl_initialize (int argc, VALUE *argv, VALUE self)
    55 ssl_initialize (int argc, VALUE *argv, VALUE self)
    50 {
    56 {
    51 	LmSSL    *ssl;
    57 	LmSSL    *ssl;
    52 	VALUE     fingerprint;
    58 	VALUE     fingerprint;
    53 	VALUE     func;
    59 	VALUE     func;
    78 	DATA_PTR (self) = ssl;
    84 	DATA_PTR (self) = ssl;
    79 
    85 
    80 	return self;
    86 	return self;
    81 }
    87 }
    82 
    88 
       
    89 static VALUE
       
    90 ssl_get_fingerprint (VALUE self)
       
    91 {
       
    92 	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
       
    93 
       
    94 	if (lm_ssl_get_fingerprint (ssl)) {
       
    95 		return rb_str_new2 (lm_ssl_get_fingerprint (ssl));
       
    96 	}
       
    97 
       
    98 	return Qnil;
       
    99 }
       
   100 
       
   101 static VALUE
       
   102 ssl_get_use_starttls (VALUE self)
       
   103 {
       
   104 	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
       
   105 
       
   106 	return GBOOL2RVAL (lm_ssl_get_use_starttls (ssl));
       
   107 }
       
   108 
       
   109 static VALUE
       
   110 ssl_set_use_starttls (VALUE self, VALUE use)
       
   111 {
       
   112 	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
       
   113 
       
   114 	lm_ssl_use_starttls (ssl,
       
   115 			     RVAL2GBOOL (use),
       
   116 			     lm_ssl_get_require_starttls (ssl));
       
   117 
       
   118 	return Qnil;
       
   119 }
       
   120 
       
   121 static VALUE
       
   122 ssl_get_require_starttls (VALUE self)
       
   123 {
       
   124 	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
       
   125 
       
   126 	return GBOOL2RVAL (lm_ssl_get_require_starttls (ssl));
       
   127 }
       
   128 
       
   129 static VALUE
       
   130 ssl_set_require_starttls (VALUE self, VALUE require)
       
   131 {
       
   132 	LmSSL *ssl = rb_lm_ssl_from_ruby_object (self);
       
   133 
       
   134 	lm_ssl_use_starttls (ssl,
       
   135 			     lm_ssl_get_use_starttls (ssl),
       
   136 			     RVAL2GBOOL (require));
       
   137 
       
   138 	return Qnil;
       
   139 }
       
   140 
    83 extern void
   141 extern void
    84 Init_lm_ssl (VALUE lm_mLM)
   142 Init_lm_ssl (VALUE lm_mLM)
    85 {
   143 {
    86 	lm_cSSL = rb_define_class_under (lm_mLM, "SSL", rb_cObject);
   144 	lm_cSSL = rb_define_class_under (lm_mLM, "SSL", rb_cObject);
    87 
   145 
    88 	rb_define_alloc_func (lm_cSSL, ssl_allocate);
   146 	rb_define_alloc_func (lm_cSSL, ssl_allocate);
    89 
   147 
       
   148 	rb_define_singleton_method (lm_cSSL, "supported?", 
       
   149 				    ssl_is_supported, 0);
       
   150 
    90 	rb_define_method (lm_cSSL, "initialize", ssl_initialize, -1);
   151 	rb_define_method (lm_cSSL, "initialize", ssl_initialize, -1);
       
   152 	rb_define_method (lm_cSSL, "fingerprint", ssl_get_fingerprint, 0);
       
   153 	rb_define_method (lm_cSSL, "use_starttls", ssl_get_use_starttls, 0);
       
   154 	rb_define_method (lm_cSSL, "use_starttls=", ssl_set_use_starttls, 1);
       
   155 	rb_define_method (lm_cSSL, "require_starttls", ssl_get_require_starttls, 0);
       
   156 	rb_define_method (lm_cSSL, "require_starttls=", ssl_set_require_starttls, 1);
    91 }
   157 }
    92 
   158