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 { |
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 |