kennedy 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. data/.document +5 -0
  2. data/.gitignore +21 -0
  3. data/.yardoc +0 -0
  4. data/LICENSE +20 -0
  5. data/MAIN.rdoc +23 -0
  6. data/README.markdown +17 -0
  7. data/Rakefile +52 -0
  8. data/VERSION +1 -0
  9. data/bin/kennedy-gen +13 -0
  10. data/doc/Kennedy.html +98 -0
  11. data/doc/Kennedy/Backends.html +94 -0
  12. data/doc/Kennedy/Backends/LDAP.html +471 -0
  13. data/doc/Kennedy/BadTicketException.html +92 -0
  14. data/doc/Kennedy/Granter.html +570 -0
  15. data/doc/Kennedy/Server.html +258 -0
  16. data/doc/Kennedy/Ticket.html +875 -0
  17. data/doc/_index.html +170 -0
  18. data/doc/class_list.html +97 -0
  19. data/doc/css/common.css +1 -0
  20. data/doc/css/full_list.css +23 -0
  21. data/doc/css/style.css +261 -0
  22. data/doc/file.README.html +69 -0
  23. data/doc/file_list.html +29 -0
  24. data/doc/index.html +69 -0
  25. data/doc/js/app.js +91 -0
  26. data/doc/js/full_list.js +39 -0
  27. data/doc/js/jquery.js +19 -0
  28. data/doc/method_list.html +152 -0
  29. data/doc/top-level-namespace.html +80 -0
  30. data/kennedy.gemspec +114 -0
  31. data/lib/kennedy.rb +2 -0
  32. data/lib/kennedy/backends/ldap.rb +35 -0
  33. data/lib/kennedy/generator.rb +69 -0
  34. data/lib/kennedy/granter.rb +52 -0
  35. data/lib/kennedy/instance_configuration.rb +58 -0
  36. data/lib/kennedy/server.rb +164 -0
  37. data/lib/kennedy/ticket.rb +97 -0
  38. data/logo.png +0 -0
  39. data/template/config.ru.erb +22 -0
  40. data/template/config/api_keys.yml.erb +1 -0
  41. data/template/config/backend.rb +0 -0
  42. data/template/config/encryption.yml.erb +2 -0
  43. data/template/config/sessions.yml.erb +1 -0
  44. data/test/granter_test.rb +93 -0
  45. data/test/ldap_backend_test.rb +66 -0
  46. data/test/server_test.rb +285 -0
  47. data/test/teststrap.rb +34 -0
  48. data/test/ticket_test.rb +84 -0
  49. metadata +177 -0
@@ -0,0 +1,258 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=UTF-8" />
6
+ <title>Class: Kennedy::Server</title>
7
+ <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '..';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <div id="header">
20
+ <div id="menu">
21
+
22
+ <a href="../_index.html">Index (S)</a> &raquo;
23
+ <a title="Kennedy" href="../Kennedy.html">Kennedy</a>
24
+ &raquo;
25
+ <span class="title">Server</span>
26
+
27
+ </div>
28
+
29
+ <div id="search">
30
+ <a id="class_list_link" href="#">Namespace List</a>
31
+ <a id="method_list_link" href="#">Method List</a>
32
+ <a id ="file_list_link" href="#">File List</a>
33
+ </div>
34
+
35
+ <div class="clear"></div>
36
+ </div>
37
+
38
+ <iframe id="search_frame"></iframe>
39
+
40
+ <div id="content"><h1>Class: Kennedy::Server
41
+
42
+
43
+ </h1>
44
+
45
+ <dl class="box">
46
+
47
+ <dt class="r1">Inherits:</dt>
48
+ <dd class="r1">
49
+ <span class="inheritName">Sinatra::Base</span>
50
+
51
+ <ul class="fullTree">
52
+ <li>Object</li>
53
+
54
+ <li class="next">Sinatra::Base</li>
55
+
56
+ <li class="next">Kennedy::Server</li>
57
+
58
+ </ul>
59
+ <a href="#" class="inheritanceTree">show all</a>
60
+
61
+ </dd>
62
+
63
+
64
+
65
+
66
+
67
+
68
+
69
+
70
+ <dt class="r2 last">Defined in:</dt>
71
+ <dd class="r2 last">lib/kennedy/server.rb</dd>
72
+
73
+ </dl>
74
+ <div class="clear"></div>
75
+
76
+ <h2>Overview</h2><div class="docstring">
77
+ <div class="discussion">
78
+ <p>
79
+ Server
80
+ </p>
81
+
82
+
83
+ </div>
84
+ </div>
85
+ <div class="tags">
86
+
87
+ </div>
88
+
89
+
90
+
91
+ <h2>Method Summary</h2>
92
+ <ul class="summary">
93
+
94
+ <li class="public ">
95
+ <span class="summary_signature"><a title="create (class method)" href="#create-class_method">+ (Object) <strong>create</strong>(opts = {}) </a>
96
+
97
+ </span>
98
+
99
+
100
+
101
+
102
+
103
+
104
+ <span class="summary_desc">
105
+ Creates a new subclass of Kennedy::Server with the given options.
106
+
107
+ </span>
108
+
109
+ </li>
110
+
111
+
112
+ </ul>
113
+
114
+
115
+
116
+
117
+ <div id="method_details">
118
+ <h2>Method Details</h2>
119
+
120
+ <div class="method_details first">
121
+ <p class="signature first" id="create-class_method">
122
+
123
+ + (<tt>Object</tt>) <strong>create</strong>(opts = {})
124
+
125
+
126
+
127
+ </p><div class="docstring">
128
+ <div class="discussion">
129
+ <p>
130
+ Creates a new subclass of Kennedy::Server with the given options
131
+ </p>
132
+
133
+
134
+ </div>
135
+ </div>
136
+ <div class="tags">
137
+ <h3>Parameters:</h3>
138
+ <ul class="param">
139
+
140
+ <li>
141
+
142
+ <span class='type'>(<tt>Hash</tt>)</span>
143
+
144
+
145
+ <span class='name'>opts</span>
146
+
147
+
148
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
149
+
150
+
151
+ &mdash;
152
+
153
+ The options to use when building the subclass
154
+
155
+
156
+
157
+ </li>
158
+
159
+ </ul>
160
+
161
+
162
+
163
+
164
+ <h3>Options Hash (<tt>opts</tt>):</h3>
165
+ <ul class="option">
166
+
167
+ <li>
168
+ <span class="type">(<tt>Hash</tt>)</span>
169
+ <span class="name">:encryption</span>
170
+ <span class="default">
171
+
172
+ <span class="na">N/A</span>
173
+
174
+ </span>
175
+ &mdash;
176
+ The IV and passphrase to use when generating tickets, given as :iv and
177
+ :passphrase keys in a Hash.
178
+
179
+
180
+ </tr>
181
+
182
+ <li>
183
+ <span class="type">(<tt>Object</tt>)</span>
184
+ <span class="name">:backend</span>
185
+ <span class="default">
186
+
187
+ <span class="na">N/A</span>
188
+
189
+ </span>
190
+ &mdash;
191
+ An instance of a backend to use for authentication.
192
+
193
+
194
+ </tr>
195
+
196
+ <li>
197
+ <span class="type">(<tt>String</tt>)</span>
198
+ <span class="name">:session_secret</span>
199
+ <span class="default">
200
+
201
+ <span class="na">N/A</span>
202
+
203
+ </span>
204
+ &mdash;
205
+ A secret for Rack::Session::Cookie to use when generating session cookies.
206
+
207
+
208
+ </tr>
209
+
210
+ </ul>
211
+
212
+
213
+ </div><table class="source_code">
214
+ <tr>
215
+ <td>
216
+ <pre class="lines">
217
+
218
+
219
+ 17
220
+ 18
221
+ 19
222
+ 20
223
+ 21
224
+ 22
225
+ 23
226
+ 24
227
+ 25</pre>
228
+ </td>
229
+ <td>
230
+ <pre class="code"><span class="info file"># File 'lib/kennedy/server.rb', line 17</span>
231
+
232
+ <span class='def def kw'>def</span> <span class='self self kw'>self</span><span class='dot token'>.</span><span class='create identifier id'>create</span><span class='lparen token'>(</span><span class='opts identifier id'>opts</span> <span class='assign token'>=</span> <span class='lbrace token'>{</span><span class='rbrace token'>}</span><span class='rparen token'>)</span>
233
+ <span class='sc identifier id'>sc</span> <span class='assign token'>=</span> <span class='Class constant id'>Class</span><span class='dot token'>.</span><span class='new identifier id'>new</span><span class='lparen token'>(</span><span class='self self kw'>self</span><span class='rparen token'>)</span>
234
+ <span class='sc identifier id'>sc</span><span class='dot token'>.</span><span class='instance_eval identifier id'>instance_eval</span> <span class='do do kw'>do</span>
235
+ <span class='opts identifier id'>opts</span><span class='dot token'>.</span><span class='each identifier id'>each</span> <span class='lbrace token'>{</span> <span class='bitor op'>|</span><span class='k identifier id'>k</span><span class='comma token'>,</span><span class='v identifier id'>v</span><span class='bitor op'>|</span> <span class='set identifier id'>set</span> <span class='k identifier id'>k</span><span class='dot token'>.</span><span class='to_sym identifier id'>to_sym</span><span class='comma token'>,</span> <span class='v identifier id'>v</span> <span class='rbrace token'>}</span>
236
+ <span class='raise identifier id'>raise</span> <span class='ArgumentError constant id'>ArgumentError</span><span class='comma token'>,</span> <span class='string val'>&quot;A session secret must be set with :session_secret&quot;</span> <span class='unless unless_mod kw'>unless</span> <span class='defined? defined kw'>defined?</span><span class='lparen token'>(</span><span class='session_secret identifier id'>session_secret</span><span class='rparen token'>)</span>
237
+ <span class='add_cookie_middleware identifier id'>add_cookie_middleware</span>
238
+ <span class='self self kw'>self</span>
239
+ <span class='end end kw'>end</span>
240
+ <span class='end end kw'>end</span>
241
+ </pre>
242
+ </td>
243
+ </tr>
244
+ </table>
245
+ </div>
246
+
247
+ </div>
248
+
249
+ </div>
250
+
251
+ <div id="footer">
252
+ Generated on Tue Dec 8 16:39:39 2009 by
253
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
254
+ 0.4.0 (ruby-1.8.7).
255
+ </div>
256
+
257
+ </body>
258
+ </html>
@@ -0,0 +1,875 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
+ <head>
5
+ <meta name="Content-Type" content="text/html; charset=UTF-8" />
6
+ <title>Class: Kennedy::Ticket</title>
7
+ <link rel="stylesheet" href="../css/style.css" type="text/css" media="screen" charset="utf-8" />
8
+ <link rel="stylesheet" href="../css/common.css" type="text/css" media="screen" charset="utf-8" />
9
+
10
+ <script type="text/javascript" charset="utf-8">
11
+ relpath = '..';
12
+ if (relpath != '') relpath += '/';
13
+ </script>
14
+ <script type="text/javascript" charset="utf-8" src="../js/jquery.js"></script>
15
+ <script type="text/javascript" charset="utf-8" src="../js/app.js"></script>
16
+
17
+ </head>
18
+ <body>
19
+ <div id="header">
20
+ <div id="menu">
21
+
22
+ <a href="../_index.html">Index (T)</a> &raquo;
23
+ <a title="Kennedy" href="../Kennedy.html">Kennedy</a>
24
+ &raquo;
25
+ <span class="title">Ticket</span>
26
+
27
+ </div>
28
+
29
+ <div id="search">
30
+ <a id="class_list_link" href="#">Namespace List</a>
31
+ <a id="method_list_link" href="#">Method List</a>
32
+ <a id ="file_list_link" href="#">File List</a>
33
+ </div>
34
+
35
+ <div class="clear"></div>
36
+ </div>
37
+
38
+ <iframe id="search_frame"></iframe>
39
+
40
+ <div id="content"><h1>Class: Kennedy::Ticket
41
+
42
+
43
+ </h1>
44
+
45
+ <dl class="box">
46
+
47
+ <dt class="r1">Inherits:</dt>
48
+ <dd class="r1">
49
+ <span class="inheritName">Object</span>
50
+
51
+ </dd>
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+ <dt class="r2 last">Defined in:</dt>
61
+ <dd class="r2 last">lib/kennedy/ticket.rb</dd>
62
+
63
+ </dl>
64
+ <div class="clear"></div>
65
+
66
+ <h2>Overview</h2><div class="docstring">
67
+ <div class="discussion">
68
+ <p>
69
+ A ticket represents a time-constrained period in which an authenticated
70
+ person can access a service
71
+ </p>
72
+
73
+
74
+ </div>
75
+ </div>
76
+ <div class="tags">
77
+
78
+ </div>
79
+ <h2>Constant Summary</h2>
80
+
81
+ <dl class="constants">
82
+
83
+ <dt id="DefaultExpiry-constant ">DefaultExpiry =
84
+ <span class="summary_desc">
85
+ In seconds.
86
+
87
+ </span>
88
+ </dt>
89
+ <dd><pre class="code"><span class='integer val'>30</span>
90
+ </pre></dd>
91
+
92
+ </dl>
93
+
94
+
95
+
96
+ <h2>Attribute Summary</h2>
97
+ <ul class="summary">
98
+
99
+ <li class="public ">
100
+ <span class="summary_signature"><a title="#identifier (instance method)" href="#identifier-instance_method">- (Object) <strong>identifier</strong> </a>
101
+
102
+ </span>
103
+
104
+ <span class="note title readonly">readonly</span>
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+ <span class="summary_desc">
113
+ Returns the value of attribute <tt>identifier</tt>.
114
+
115
+ </span>
116
+
117
+ </li>
118
+
119
+
120
+ </ul>
121
+
122
+
123
+ <h2>Method Summary</h2>
124
+ <ul class="summary">
125
+
126
+ <li class="public ">
127
+ <span class="summary_signature"><a title="create (class method)" href="#create-class_method">+ (Object) <strong>create</strong>(args = {}) </a>
128
+
129
+ </span>
130
+
131
+
132
+
133
+
134
+
135
+
136
+ <span class="summary_desc">
137
+ Creates a new ticket with the given arguments.
138
+
139
+ </span>
140
+
141
+ </li>
142
+
143
+
144
+ <li class="public ">
145
+ <span class="summary_signature"><a title="from_encrypted (class method)" href="#from_encrypted-class_method">+ (Object) <strong>from_encrypted</strong>(args = {}) </a>
146
+
147
+ </span>
148
+
149
+
150
+
151
+
152
+
153
+
154
+ <span class="summary_desc">
155
+ Decrypts a ticket from the given arguments.
156
+
157
+ </span>
158
+
159
+ </li>
160
+
161
+
162
+ <li class="public ">
163
+ <span class="summary_signature"><a title="#decrypt (instance method)" href="#decrypt-instance_method">- (Object) <strong>decrypt</strong>(data) </a>
164
+
165
+ </span>
166
+
167
+
168
+
169
+
170
+
171
+
172
+ <span class="summary_desc">
173
+ Decrypts the given ticket data.
174
+
175
+ </span>
176
+
177
+ </li>
178
+
179
+
180
+ <li class="public ">
181
+ <span class="summary_signature"><a title="#expired? (instance method)" href="#expired%3F-instance_method">- (Object) <strong>expired?</strong> </a>
182
+
183
+ </span>
184
+
185
+
186
+
187
+
188
+
189
+
190
+ <span class="summary_desc"></span>
191
+
192
+ </li>
193
+
194
+
195
+ <li class="public ">
196
+ <span class="summary_signature"><a title="#initialize (instance method)" href="#initialize-instance_method">- (Ticket) <strong>initialize</strong>(args = {}) </a>
197
+
198
+ </span>
199
+
200
+
201
+
202
+
203
+
204
+
205
+ <span class="summary_desc">
206
+ A new instance of <tt>Ticket</tt>.
207
+
208
+ </span>
209
+
210
+ </li>
211
+
212
+
213
+ <li class="public ">
214
+ <span class="summary_signature"><a title="#to_encrypted (instance method)" href="#to_encrypted-instance_method">- (String) <strong>to_encrypted</strong> </a>
215
+
216
+ </span>
217
+
218
+
219
+
220
+
221
+
222
+
223
+ <span class="summary_desc">
224
+ Generates an encrypted chunk of JSON with the identifier and expiration
225
+ time for this ticket encoded in.
226
+
227
+ </span>
228
+
229
+ </li>
230
+
231
+
232
+ </ul>
233
+
234
+ <div id="constructor_details">
235
+ <h2>Constructor Details</h2>
236
+
237
+ <div class="method_details first">
238
+ <p class="signature first" id="initialize-instance_method">
239
+
240
+ - (<tt><a title="Ticket" href="">Ticket</a></tt>) <strong>initialize</strong>(args = {})
241
+
242
+
243
+
244
+ </p><div class="docstring">
245
+ <div class="discussion">
246
+ <p>
247
+ A new instance of <tt>Ticket</tt>
248
+ </p>
249
+
250
+
251
+ </div>
252
+ </div>
253
+ <div class="tags">
254
+ <h3>Parameters:</h3>
255
+ <ul class="param">
256
+
257
+ <li>
258
+
259
+ <span class='type'>(<tt>Hash</tt>)</span>
260
+
261
+
262
+ <span class='name'>args</span>
263
+
264
+
265
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
266
+
267
+
268
+ &mdash;
269
+
270
+ The arguments to construct the ticket with
271
+
272
+
273
+
274
+ </li>
275
+
276
+ </ul>
277
+
278
+
279
+
280
+
281
+ <h3>Options Hash (<tt>args</tt>):</h3>
282
+ <ul class="option">
283
+
284
+ <li>
285
+ <span class="type">(<tt>String</tt>)</span>
286
+ <span class="name">:iv</span>
287
+ <span class="default">
288
+
289
+ <span class="na">N/A</span>
290
+
291
+ </span>
292
+ &mdash;
293
+ An iv to use to encrypt and decrypt the ticket
294
+
295
+
296
+ </tr>
297
+
298
+ <li>
299
+ <span class="type">(<tt>String</tt>)</span>
300
+ <span class="name">:passphrase</span>
301
+ <span class="default">
302
+
303
+ <span class="na">N/A</span>
304
+
305
+ </span>
306
+ &mdash;
307
+ A passphrase to encrypt and decrypt the ticket
308
+
309
+
310
+ </tr>
311
+
312
+ </ul>
313
+
314
+ <h3>Returns:</h3>
315
+ <ul class="return">
316
+
317
+ <li>
318
+
319
+ <span class='type'>(<tt><a title="Ticket" href="">Ticket</a></tt>)</span>
320
+
321
+
322
+
323
+
324
+ &mdash;
325
+
326
+ a new instance of <tt>Ticket</tt>
327
+
328
+
329
+
330
+ </li>
331
+
332
+ </ul>
333
+
334
+ </div><table class="source_code">
335
+ <tr>
336
+ <td>
337
+ <pre class="lines">
338
+
339
+
340
+ 47
341
+ 48
342
+ 49
343
+ 50
344
+ 51</pre>
345
+ </td>
346
+ <td>
347
+ <pre class="code"><span class="info file"># File 'lib/kennedy/ticket.rb', line 47</span>
348
+
349
+ <span class='def def kw'>def</span> <span class='initialize identifier id'>initialize</span><span class='lparen token'>(</span><span class='args identifier id'>args</span> <span class='assign token'>=</span> <span class='lbrace token'>{</span><span class='rbrace token'>}</span><span class='rparen token'>)</span>
350
+ <span class='@iv ivar id'>@iv</span> <span class='assign token'>=</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:iv</span><span class='rbrack token'>]</span> <span class='orop op'>||</span> <span class='raise identifier id'>raise</span><span class='lparen token'>(</span><span class='ArgumentError constant id'>ArgumentError</span><span class='comma token'>,</span> <span class='string val'>&quot;Ticket encryption IV must be given as :iv&quot;</span><span class='rparen token'>)</span>
351
+ <span class='@passphrase ivar id'>@passphrase</span> <span class='assign token'>=</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:passphrase</span><span class='rbrack token'>]</span> <span class='orop op'>||</span> <span class='raise identifier id'>raise</span><span class='lparen token'>(</span><span class='ArgumentError constant id'>ArgumentError</span><span class='comma token'>,</span> <span class='string val'>&quot;Ticket encryption passphrase must be given as :passphrase&quot;</span><span class='rparen token'>)</span>
352
+ <span class='@expiry ivar id'>@expiry</span> <span class='assign token'>=</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:expiry</span><span class='rbrack token'>]</span> <span class='orop op'>||</span> <span class='DefaultExpiry constant id'>DefaultExpiry</span>
353
+ <span class='end end kw'>end</span>
354
+ </pre>
355
+ </td>
356
+ </tr>
357
+ </table>
358
+ </div>
359
+
360
+ </div>
361
+
362
+ <div id="attr_details">
363
+ <h2>Attribute Details</h2>
364
+
365
+
366
+ <span id=""></span>
367
+ <span id="identifier-instance_method"></span>
368
+ <div class="method_details first">
369
+ <p class="signature first" id="identifier-instance_method">
370
+
371
+ - (<tt>Object</tt>) <strong>identifier</strong> <span class="extras">(readonly)</span>
372
+
373
+
374
+
375
+ </p><div class="docstring">
376
+ <div class="discussion">
377
+ <p>
378
+ Returns the value of attribute <tt>identifier</tt>
379
+ </p>
380
+
381
+
382
+ </div>
383
+ </div>
384
+ <div class="tags">
385
+
386
+ </div><table class="source_code">
387
+ <tr>
388
+ <td>
389
+ <pre class="lines">
390
+
391
+
392
+ 12
393
+ 13
394
+ 14</pre>
395
+ </td>
396
+ <td>
397
+ <pre class="code"><span class="info file"># File 'lib/kennedy/ticket.rb', line 12</span>
398
+
399
+ <span class='def def kw'>def</span> <span class='identifier identifier id'>identifier</span>
400
+ <span class='@identifier ivar id'>@identifier</span>
401
+ <span class='end end kw'>end</span>
402
+ </pre>
403
+ </td>
404
+ </tr>
405
+ </table>
406
+ </div>
407
+
408
+ </div>
409
+
410
+
411
+ <div id="method_details">
412
+ <h2>Method Details</h2>
413
+
414
+ <div class="method_details first">
415
+ <p class="signature first" id="create-class_method">
416
+
417
+ + (<tt>Object</tt>) <strong>create</strong>(args = {})
418
+
419
+
420
+
421
+ </p><div class="docstring">
422
+ <div class="discussion">
423
+ <p>
424
+ Creates a new ticket with the given arguments
425
+ </p>
426
+
427
+
428
+ </div>
429
+ </div>
430
+ <div class="tags">
431
+ <h3>Parameters:</h3>
432
+ <ul class="param">
433
+
434
+ <li>
435
+
436
+ <span class='type'>(<tt>Hash</tt>)</span>
437
+
438
+
439
+ <span class='name'>args</span>
440
+
441
+
442
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
443
+
444
+
445
+ &mdash;
446
+
447
+ The arguments to generate the ticket with
448
+
449
+
450
+
451
+ </li>
452
+
453
+ </ul>
454
+
455
+
456
+
457
+
458
+ <h3>Options Hash (<tt>args</tt>):</h3>
459
+ <ul class="option">
460
+
461
+ <li>
462
+ <span class="type">(<tt>String</tt>)</span>
463
+ <span class="name">:identifier</span>
464
+ <span class="default">
465
+
466
+ <span class="na">N/A</span>
467
+
468
+ </span>
469
+ &mdash;
470
+ An identifier to use in the ticket
471
+
472
+
473
+ </tr>
474
+
475
+ <li>
476
+ <span class="type">(<tt>String</tt>)</span>
477
+ <span class="name">:iv</span>
478
+ <span class="default">
479
+
480
+ <span class="na">N/A</span>
481
+
482
+ </span>
483
+ &mdash;
484
+ An iv to use to encrypt and decrypt the ticket
485
+
486
+
487
+ </tr>
488
+
489
+ <li>
490
+ <span class="type">(<tt>String</tt>)</span>
491
+ <span class="name">:passphrase</span>
492
+ <span class="default">
493
+
494
+ <span class="na">N/A</span>
495
+
496
+ </span>
497
+ &mdash;
498
+ A passphrase to encrypt and decrypt the ticket
499
+
500
+
501
+ </tr>
502
+
503
+ <li>
504
+ <span class="type">(<tt>String</tt>)</span>
505
+ <span class="name">:expiry</span>
506
+ <span class="default">
507
+
508
+ <span class="na">N/A</span>
509
+
510
+ </span>
511
+ &mdash;
512
+ A length of time in seconds for which this ticket is valid after
513
+ to_encrypted is called
514
+
515
+
516
+ </tr>
517
+
518
+ </ul>
519
+
520
+
521
+ </div><table class="source_code">
522
+ <tr>
523
+ <td>
524
+ <pre class="lines">
525
+
526
+
527
+ 25
528
+ 26
529
+ 27
530
+ 28
531
+ 29
532
+ 30</pre>
533
+ </td>
534
+ <td>
535
+ <pre class="code"><span class="info file"># File 'lib/kennedy/ticket.rb', line 25</span>
536
+
537
+ <span class='def def kw'>def</span> <span class='self self kw'>self</span><span class='dot token'>.</span><span class='create identifier id'>create</span><span class='lparen token'>(</span><span class='args identifier id'>args</span> <span class='assign token'>=</span> <span class='lbrace token'>{</span><span class='rbrace token'>}</span><span class='rparen token'>)</span>
538
+ <span class='identifier identifier id'>identifier</span> <span class='assign token'>=</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:identifier</span><span class='rbrack token'>]</span> <span class='orop op'>||</span> <span class='raise identifier id'>raise</span><span class='lparen token'>(</span><span class='ArgumentError constant id'>ArgumentError</span><span class='comma token'>,</span> <span class='string val'>&quot;Ticket identifier must be given as :identifier&quot;</span><span class='rparen token'>)</span>
539
+ <span class='ticket identifier id'>ticket</span> <span class='assign token'>=</span> <span class='new identifier id'>new</span><span class='lparen token'>(</span><span class='symbol val'>:iv</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:iv</span><span class='rbrack token'>]</span><span class='comma token'>,</span> <span class='symbol val'>:passphrase</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:passphrase</span><span class='rbrack token'>]</span><span class='comma token'>,</span> <span class='symbol val'>:expiry</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:expiry</span><span class='rbrack token'>]</span><span class='rparen token'>)</span>
540
+ <span class='ticket identifier id'>ticket</span><span class='dot token'>.</span><span class='identifier identifier id'>identifier</span> <span class='assign token'>=</span> <span class='identifier identifier id'>identifier</span>
541
+ <span class='ticket identifier id'>ticket</span>
542
+ <span class='end end kw'>end</span>
543
+ </pre>
544
+ </td>
545
+ </tr>
546
+ </table>
547
+ </div>
548
+
549
+ <div class="method_details ">
550
+ <p class="signature " id="from_encrypted-class_method">
551
+
552
+ + (<tt>Object</tt>) <strong>from_encrypted</strong>(args = {})
553
+
554
+
555
+
556
+ </p><div class="docstring">
557
+ <div class="discussion">
558
+ <p>
559
+ Decrypts a ticket from the given arguments
560
+ </p>
561
+
562
+
563
+ </div>
564
+ </div>
565
+ <div class="tags">
566
+ <h3>Parameters:</h3>
567
+ <ul class="param">
568
+
569
+ <li>
570
+
571
+ <span class='type'>(<tt>Hash</tt>)</span>
572
+
573
+
574
+ <span class='name'>args</span>
575
+
576
+
577
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
578
+
579
+
580
+ &mdash;
581
+
582
+ The arguments to build the ticket with
583
+
584
+
585
+
586
+ </li>
587
+
588
+ </ul>
589
+
590
+
591
+
592
+
593
+ <h3>Options Hash (<tt>args</tt>):</h3>
594
+ <ul class="option">
595
+
596
+ <li>
597
+ <span class="type">(<tt>String</tt>)</span>
598
+ <span class="name">:data</span>
599
+ <span class="default">
600
+
601
+ <span class="na">N/A</span>
602
+
603
+ </span>
604
+ &mdash;
605
+ An encrypted ticket
606
+
607
+
608
+ </tr>
609
+
610
+ <li>
611
+ <span class="type">(<tt>String</tt>)</span>
612
+ <span class="name">:iv</span>
613
+ <span class="default">
614
+
615
+ <span class="na">N/A</span>
616
+
617
+ </span>
618
+ &mdash;
619
+ An IV to use to decrypt the ticket
620
+
621
+
622
+ </tr>
623
+
624
+ <li>
625
+ <span class="type">(<tt>String</tt>)</span>
626
+ <span class="name">:passphrase</span>
627
+ <span class="default">
628
+
629
+ <span class="na">N/A</span>
630
+
631
+ </span>
632
+ &mdash;
633
+ A passphrase to use to decrypt the ticket
634
+
635
+
636
+ </tr>
637
+
638
+ </ul>
639
+
640
+
641
+ </div><table class="source_code">
642
+ <tr>
643
+ <td>
644
+ <pre class="lines">
645
+
646
+
647
+ 37
648
+ 38
649
+ 39
650
+ 40
651
+ 41
652
+ 42</pre>
653
+ </td>
654
+ <td>
655
+ <pre class="code"><span class="info file"># File 'lib/kennedy/ticket.rb', line 37</span>
656
+
657
+ <span class='def def kw'>def</span> <span class='self self kw'>self</span><span class='dot token'>.</span><span class='from_encrypted identifier id'>from_encrypted</span><span class='lparen token'>(</span><span class='args identifier id'>args</span> <span class='assign token'>=</span> <span class='lbrace token'>{</span><span class='rbrace token'>}</span><span class='rparen token'>)</span>
658
+ <span class='data identifier id'>data</span> <span class='assign token'>=</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:data</span><span class='rbrack token'>]</span> <span class='orop op'>||</span> <span class='raise identifier id'>raise</span><span class='lparen token'>(</span><span class='ArgumentError constant id'>ArgumentError</span><span class='comma token'>,</span> <span class='string val'>&quot;Data must be given as :data&quot;</span><span class='rparen token'>)</span>
659
+ <span class='ticket identifier id'>ticket</span> <span class='assign token'>=</span> <span class='new identifier id'>new</span><span class='lparen token'>(</span><span class='symbol val'>:iv</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:iv</span><span class='rbrack token'>]</span><span class='comma token'>,</span> <span class='symbol val'>:passphrase</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='args identifier id'>args</span><span class='lbrack token'>[</span><span class='symbol val'>:passphrase</span><span class='rbrack token'>]</span><span class='rparen token'>)</span>
660
+ <span class='ticket identifier id'>ticket</span><span class='dot token'>.</span><span class='decrypt identifier id'>decrypt</span><span class='lparen token'>(</span><span class='data identifier id'>data</span><span class='rparen token'>)</span>
661
+ <span class='ticket identifier id'>ticket</span>
662
+ <span class='end end kw'>end</span>
663
+ </pre>
664
+ </td>
665
+ </tr>
666
+ </table>
667
+ </div>
668
+
669
+ <div class="method_details ">
670
+ <p class="signature " id="decrypt-instance_method">
671
+
672
+ - (<tt>Object</tt>) <strong>decrypt</strong>(data)
673
+
674
+
675
+
676
+ </p><div class="docstring">
677
+ <div class="discussion">
678
+ <p>
679
+ Decrypts the given ticket data
680
+ </p>
681
+
682
+
683
+ </div>
684
+ </div>
685
+ <div class="tags">
686
+ <h3>Parameters:</h3>
687
+ <ul class="param">
688
+
689
+ <li>
690
+
691
+ <span class='type'>(<tt>String</tt>)</span>
692
+
693
+
694
+ <span class='name'>data</span>
695
+
696
+
697
+
698
+ &mdash;
699
+
700
+ The ticket data to decrypt
701
+
702
+
703
+
704
+ </li>
705
+
706
+ </ul>
707
+ <h3>Raises:</h3>
708
+ <ul class="raise">
709
+
710
+ <li>
711
+
712
+ <span class='type'>(<tt><a title="Kennedy::BadTicketException" href="BadTicketException.html">Kennedy::BadTicketException</a></tt>)</span>
713
+
714
+
715
+
716
+
717
+ </li>
718
+
719
+ </ul>
720
+
721
+ </div><table class="source_code">
722
+ <tr>
723
+ <td>
724
+ <pre class="lines">
725
+
726
+
727
+ 72
728
+ 73
729
+ 74
730
+ 75
731
+ 76
732
+ 77
733
+ 78
734
+ 79
735
+ 80
736
+ 81
737
+ 82
738
+ 83
739
+ 84</pre>
740
+ </td>
741
+ <td>
742
+ <pre class="code"><span class="info file"># File 'lib/kennedy/ticket.rb', line 72</span>
743
+
744
+ <span class='def def kw'>def</span> <span class='decrypt identifier id'>decrypt</span><span class='lparen token'>(</span><span class='data identifier id'>data</span><span class='rparen token'>)</span>
745
+ <span class='cipher identifier id'>cipher</span> <span class='assign token'>=</span> <span class='OpenSSL constant id'>OpenSSL</span><span class='colon2 op'>::</span><span class='Cipher constant id'>Cipher</span><span class='colon2 op'>::</span><span class='Cipher constant id'>Cipher</span><span class='dot token'>.</span><span class='new identifier id'>new</span><span class='lparen token'>(</span><span class='string val'>&quot;aes-256-cbc&quot;</span><span class='rparen token'>)</span>
746
+ <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='decrypt identifier id'>decrypt</span>
747
+ <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='key identifier id'>key</span> <span class='assign token'>=</span> <span class='@passphrase ivar id'>@passphrase</span>
748
+ <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='iv identifier id'>iv</span> <span class='assign token'>=</span> <span class='@iv ivar id'>@iv</span>
749
+ <span class='decrypted identifier id'>decrypted</span> <span class='assign token'>=</span> <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='update identifier id'>update</span><span class='lparen token'>(</span><span class='data identifier id'>data</span><span class='rparen token'>)</span>
750
+ <span class='decrypted identifier id'>decrypted</span> <span class='lshft op'>&lt;&lt;</span> <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='final identifier id'>final</span>
751
+ <span class='json identifier id'>json</span> <span class='assign token'>=</span> <span class='JSON constant id'>JSON</span><span class='dot token'>.</span><span class='parse identifier id'>parse</span><span class='lparen token'>(</span><span class='decrypted identifier id'>decrypted</span><span class='rparen token'>)</span>
752
+ <span class='self self kw'>self</span><span class='dot token'>.</span><span class='identifier identifier id'>identifier</span> <span class='assign token'>=</span> <span class='json identifier id'>json</span><span class='lbrack token'>[</span><span class='string val'>'identifier'</span><span class='rbrack token'>]</span>
753
+ <span class='@expiry ivar id'>@expiry</span> <span class='assign token'>=</span> <span class='Time constant id'>Time</span><span class='dot token'>.</span><span class='parse identifier id'>parse</span><span class='lparen token'>(</span><span class='json identifier id'>json</span><span class='lbrack token'>[</span><span class='string val'>'expiry'</span><span class='rbrack token'>]</span><span class='rparen token'>)</span>
754
+ <span class='rescue rescue kw'>rescue</span> <span class='OpenSSL constant id'>OpenSSL</span><span class='colon2 op'>::</span><span class='Cipher constant id'>Cipher</span><span class='colon2 op'>::</span><span class='CipherError constant id'>CipherError</span> <span class='assign token'>=</span><span class='gt op'>&gt;</span> <span class='e identifier id'>e</span>
755
+ <span class='raise identifier id'>raise</span> <span class='Kennedy constant id'>Kennedy</span><span class='colon2 op'>::</span><span class='BadTicketException constant id'>BadTicketException</span><span class='comma token'>,</span> <span class='string val'>&quot;Given data was not decryptable&quot;</span>
756
+ <span class='end end kw'>end</span>
757
+ </pre>
758
+ </td>
759
+ </tr>
760
+ </table>
761
+ </div>
762
+
763
+ <div class="method_details ">
764
+ <p class="signature " id="expired?-instance_method">
765
+
766
+ - (<tt>Object</tt>) <strong>expired?</strong>
767
+
768
+
769
+
770
+ </p><table class="source_code">
771
+ <tr>
772
+ <td>
773
+ <pre class="lines">
774
+
775
+
776
+ 86
777
+ 87
778
+ 88</pre>
779
+ </td>
780
+ <td>
781
+ <pre class="code"><span class="info file"># File 'lib/kennedy/ticket.rb', line 86</span>
782
+
783
+ <span class='def def kw'>def</span> <span class='expired? fid id'>expired?</span>
784
+ <span class='notop op'>!</span><span class='@expiry ivar id'>@expiry</span><span class='dot token'>.</span><span class='nil? fid id'>nil?</span> <span class='andop op'>&amp;&amp;</span> <span class='lparen token'>(</span><span class='@expiry ivar id'>@expiry</span> <span class='lt op'>&lt;</span> <span class='Time constant id'>Time</span><span class='dot token'>.</span><span class='now identifier id'>now</span><span class='rparen token'>)</span>
785
+ <span class='end end kw'>end</span>
786
+ </pre>
787
+ </td>
788
+ </tr>
789
+ </table>
790
+ </div>
791
+
792
+ <div class="method_details ">
793
+ <p class="signature " id="to_encrypted-instance_method">
794
+
795
+ - (<tt>String</tt>) <strong>to_encrypted</strong>
796
+
797
+
798
+
799
+ </p><div class="docstring">
800
+ <div class="discussion">
801
+ <p>
802
+ Generates an encrypted chunk of JSON with the identifier and expiration
803
+ time for this ticket encoded in
804
+ </p>
805
+
806
+
807
+ </div>
808
+ </div>
809
+ <div class="tags">
810
+ <h3>Returns:</h3>
811
+ <ul class="return">
812
+
813
+ <li>
814
+
815
+ <span class='type'>(<tt>String</tt>)</span>
816
+
817
+
818
+
819
+
820
+ &mdash;
821
+
822
+ An encrypted JSON string
823
+
824
+
825
+
826
+ </li>
827
+
828
+ </ul>
829
+
830
+ </div><table class="source_code">
831
+ <tr>
832
+ <td>
833
+ <pre class="lines">
834
+
835
+
836
+ 60
837
+ 61
838
+ 62
839
+ 63
840
+ 64
841
+ 65
842
+ 66
843
+ 67
844
+ 68</pre>
845
+ </td>
846
+ <td>
847
+ <pre class="code"><span class="info file"># File 'lib/kennedy/ticket.rb', line 60</span>
848
+
849
+ <span class='def def kw'>def</span> <span class='to_encrypted identifier id'>to_encrypted</span>
850
+ <span class='cipher identifier id'>cipher</span> <span class='assign token'>=</span> <span class='OpenSSL constant id'>OpenSSL</span><span class='colon2 op'>::</span><span class='Cipher constant id'>Cipher</span><span class='colon2 op'>::</span><span class='Cipher constant id'>Cipher</span><span class='dot token'>.</span><span class='new identifier id'>new</span><span class='lparen token'>(</span><span class='string val'>&quot;aes-256-cbc&quot;</span><span class='rparen token'>)</span>
851
+ <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='encrypt identifier id'>encrypt</span>
852
+ <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='key identifier id'>key</span> <span class='assign token'>=</span> <span class='@passphrase ivar id'>@passphrase</span>
853
+ <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='iv identifier id'>iv</span> <span class='assign token'>=</span> <span class='@iv ivar id'>@iv</span>
854
+ <span class='encrypted identifier id'>encrypted</span> <span class='assign token'>=</span> <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='update identifier id'>update</span><span class='lparen token'>(</span><span class='to_expiring_json identifier id'>to_expiring_json</span><span class='rparen token'>)</span>
855
+ <span class='encrypted identifier id'>encrypted</span> <span class='lshft op'>&lt;&lt;</span> <span class='cipher identifier id'>cipher</span><span class='dot token'>.</span><span class='final identifier id'>final</span>
856
+ <span class='encrypted identifier id'>encrypted</span>
857
+ <span class='end end kw'>end</span>
858
+ </pre>
859
+ </td>
860
+ </tr>
861
+ </table>
862
+ </div>
863
+
864
+ </div>
865
+
866
+ </div>
867
+
868
+ <div id="footer">
869
+ Generated on Tue Dec 8 16:39:39 2009 by
870
+ <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool">yard</a>
871
+ 0.4.0 (ruby-1.8.7).
872
+ </div>
873
+
874
+ </body>
875
+ </html>