clavem 1.4.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis-gemfile +2 -1
- data/.travis.yml +1 -2
- data/Gemfile +3 -2
- data/README.md +13 -6
- data/Rakefile +1 -1
- data/bin/clavem +29 -18
- data/clavem.gemspec +5 -4
- data/doc/Clavem.html +6 -6
- data/doc/Clavem/Authorizer.html +1141 -2216
- data/doc/Clavem/Exceptions.html +4 -4
- data/doc/Clavem/Exceptions/Failure.html +5 -5
- data/doc/Clavem/Server.html +370 -0
- data/doc/Clavem/Version.html +5 -5
- data/doc/_index.html +8 -15
- data/doc/class_list.html +1 -1
- data/doc/file.README.html +21 -14
- data/doc/frames.html +1 -1
- data/doc/index.html +21 -14
- data/doc/method_list.html +32 -14
- data/doc/top-level-namespace.html +3 -3
- data/lib/clavem.rb +4 -3
- data/lib/clavem/authorizer.rb +75 -121
- data/lib/clavem/server.rb +52 -0
- data/lib/clavem/version.rb +3 -3
- data/locales/en.yml +15 -6
- data/locales/it.yml +15 -6
- data/spec/clavem/authorizer_spec.rb +86 -244
- data/spec/clavem/server_spec.rb +40 -0
- data/spec/coverage_helper.rb +2 -2
- data/spec/spec_helper.rb +2 -1
- data/test_server.rb +28 -10
- metadata +32 -27
- data/doc/Clavem/Exceptions/AuthorizationDenied.html +0 -133
- data/doc/Clavem/Exceptions/Timeout.html +0 -133
- data/doc/index.html.save +0 -133
- data/lib/clavem/template.html.erb +0 -25
@@ -0,0 +1,40 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
#
|
3
|
+
# This file is part of the clavem gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
|
+
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
|
+
#
|
6
|
+
|
7
|
+
require "spec_helper"
|
8
|
+
|
9
|
+
describe Clavem::Server do
|
10
|
+
let(:authorizer) { Clavem::Authorizer.new }
|
11
|
+
|
12
|
+
around(:each) do |example|
|
13
|
+
EM.run do
|
14
|
+
EM.start_server("localhost", 7772, Clavem::Server, authorizer)
|
15
|
+
EM.add_timer(0.1) do
|
16
|
+
@request = EventMachine::HttpRequest.new("http://localhost:7772/?#{example.metadata[:query]}").get
|
17
|
+
@request.callback { example.call }
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe "#initialize", query: "oauth_token=TOKEN" do
|
23
|
+
it "should save the authorizer" do
|
24
|
+
server = Clavem::Server.new("UNUSED", authorizer)
|
25
|
+
expect(server.instance_variable_get(:@authorizer)).to be(authorizer)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
describe "#process_http_request" do
|
30
|
+
it "should save the token and report success", query: "oauth_token=TOKEN" do
|
31
|
+
expect(authorizer.succeeded?).to be_true
|
32
|
+
expect(authorizer.token).to eq("TOKEN")
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should save the token and report failure", query: "notoken=TOKEN" do
|
36
|
+
expect(authorizer.denied?).to be_true
|
37
|
+
expect(authorizer.token).to eq(nil)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
data/spec/coverage_helper.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
# This file is part of the clavem gem. Copyright (C) 2013 and above Shogun <
|
3
|
+
# This file is part of the clavem gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
4
|
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
5
|
#
|
6
6
|
|
@@ -8,7 +8,7 @@ require "pathname"
|
|
8
8
|
require "simplecov"
|
9
9
|
require "coveralls"
|
10
10
|
|
11
|
-
Coveralls.wear!
|
11
|
+
Coveralls.wear! if ENV["CI"] || ENV["JENKINS_URL"]
|
12
12
|
|
13
13
|
SimpleCov.start do
|
14
14
|
root = Pathname.new(File.dirname(__FILE__)) + ".."
|
data/spec/spec_helper.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
#
|
3
|
-
# This file is part of the clavem gem. Copyright (C) 2013 and above Shogun <
|
3
|
+
# This file is part of the clavem gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
4
4
|
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
5
5
|
#
|
6
6
|
|
7
7
|
require "rubygems"
|
8
8
|
require "bundler/setup"
|
9
9
|
require "clavem"
|
10
|
+
require "em-http-request"
|
10
11
|
|
11
12
|
RSpec.configure do |config|
|
12
13
|
config.expect_with :rspec do |c|
|
data/test_server.rb
CHANGED
@@ -1,16 +1,34 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
# encoding: utf-8
|
3
|
+
#
|
4
|
+
# This file is part of the clavem gem. Copyright (C) 2013 and above Shogun <shogun@cowtech.it>.
|
5
|
+
# Licensed under the MIT license, which can be found at http://www.opensource.org/licenses/mit-license.php.
|
6
|
+
#
|
2
7
|
|
3
|
-
require "
|
8
|
+
require "cgi"
|
9
|
+
require "eventmachine"
|
10
|
+
require "evma_httpserver"
|
4
11
|
|
5
|
-
|
6
|
-
|
12
|
+
class ClavemServer < EM::Connection
|
13
|
+
include EM::HttpServer
|
7
14
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
15
|
+
def process_http_request
|
16
|
+
query = CGI::parse(@http_query_string)
|
17
|
+
url = query["oauth_callback"].first
|
18
|
+
token = (query["token"] || []).first
|
19
|
+
wait = (query["wait"].first || 0).to_i
|
20
|
+
|
21
|
+
sleep(wait) if wait > 0
|
22
|
+
|
23
|
+
response = EM::DelegatedHttpResponse.new(self)
|
24
|
+
response.send_redirect("%s?%s" % [url, token ? "oauth_token=#{token}" : "failure=FAILURE"])
|
25
|
+
end
|
14
26
|
end
|
15
27
|
|
16
|
-
|
28
|
+
["INT", "TERM", "KILL"].each { |signal|
|
29
|
+
trap(signal) { EM.stop }
|
30
|
+
}
|
31
|
+
|
32
|
+
EM.run do
|
33
|
+
EM.start_server("0.0.0.0", 7779, ClavemServer)
|
34
|
+
end
|
metadata
CHANGED
@@ -1,51 +1,60 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: clavem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
5
|
-
prerelease:
|
4
|
+
version: 2.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Shogun
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-
|
11
|
+
date: 2013-08-21 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
14
|
+
name: bovem
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ~>
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
19
|
+
version: 3.0.2
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
22
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
-
none: false
|
26
23
|
requirements:
|
27
24
|
- - ~>
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
26
|
+
version: 3.0.2
|
30
27
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
28
|
+
name: eventmachine
|
32
29
|
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
30
|
requirements:
|
35
31
|
- - ~>
|
36
32
|
- !ruby/object:Gem::Version
|
37
|
-
version: 1.3
|
33
|
+
version: 1.0.3
|
38
34
|
type: :runtime
|
39
35
|
prerelease: false
|
40
36
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
-
none: false
|
42
37
|
requirements:
|
43
38
|
- - ~>
|
44
39
|
- !ruby/object:Gem::Version
|
45
|
-
version: 1.3
|
40
|
+
version: 1.0.3
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: eventmachine_httpserver
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.2.1
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.1
|
46
55
|
description: A local callback server for oAuth web-flow.
|
47
56
|
email:
|
48
|
-
-
|
57
|
+
- shogun@cowtech.it
|
49
58
|
executables:
|
50
59
|
- clavem
|
51
60
|
extensions: []
|
@@ -63,9 +72,8 @@ files:
|
|
63
72
|
- doc/Clavem.html
|
64
73
|
- doc/Clavem/Authorizer.html
|
65
74
|
- doc/Clavem/Exceptions.html
|
66
|
-
- doc/Clavem/Exceptions/AuthorizationDenied.html
|
67
75
|
- doc/Clavem/Exceptions/Failure.html
|
68
|
-
- doc/Clavem/
|
76
|
+
- doc/Clavem/Server.html
|
69
77
|
- doc/Clavem/Version.html
|
70
78
|
- doc/_index.html
|
71
79
|
- doc/class_list.html
|
@@ -76,7 +84,6 @@ files:
|
|
76
84
|
- doc/file_list.html
|
77
85
|
- doc/frames.html
|
78
86
|
- doc/index.html
|
79
|
-
- doc/index.html.save
|
80
87
|
- doc/js/app.js
|
81
88
|
- doc/js/full_list.js
|
82
89
|
- doc/js/jquery.js
|
@@ -84,43 +91,41 @@ files:
|
|
84
91
|
- doc/top-level-namespace.html
|
85
92
|
- lib/clavem.rb
|
86
93
|
- lib/clavem/authorizer.rb
|
87
|
-
- lib/clavem/
|
94
|
+
- lib/clavem/server.rb
|
88
95
|
- lib/clavem/version.rb
|
89
96
|
- locales/en.yml
|
90
97
|
- locales/it.yml
|
91
98
|
- spec/clavem/authorizer_spec.rb
|
99
|
+
- spec/clavem/server_spec.rb
|
92
100
|
- spec/coverage_helper.rb
|
93
101
|
- spec/spec_helper.rb
|
94
102
|
- test_server.rb
|
95
103
|
homepage: http://sw.cow.tc/clavem
|
96
104
|
licenses: []
|
105
|
+
metadata: {}
|
97
106
|
post_install_message:
|
98
107
|
rdoc_options: []
|
99
108
|
require_paths:
|
100
109
|
- lib
|
101
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
111
|
requirements:
|
104
|
-
- -
|
112
|
+
- - '>='
|
105
113
|
- !ruby/object:Gem::Version
|
106
114
|
version: 1.9.3
|
107
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
-
none: false
|
109
116
|
requirements:
|
110
|
-
- -
|
117
|
+
- - '>='
|
111
118
|
- !ruby/object:Gem::Version
|
112
119
|
version: '0'
|
113
|
-
segments:
|
114
|
-
- 0
|
115
|
-
hash: 3703999172995824806
|
116
120
|
requirements: []
|
117
121
|
rubyforge_project: clavem
|
118
|
-
rubygems_version:
|
122
|
+
rubygems_version: 2.0.6
|
119
123
|
signing_key:
|
120
|
-
specification_version:
|
124
|
+
specification_version: 4
|
121
125
|
summary: A local callback server for oAuth web-flow.
|
122
126
|
test_files:
|
123
127
|
- spec/clavem/authorizer_spec.rb
|
128
|
+
- spec/clavem/server_spec.rb
|
124
129
|
- spec/coverage_helper.rb
|
125
130
|
- spec/spec_helper.rb
|
126
131
|
has_rdoc:
|
@@ -1,133 +0,0 @@
|
|
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 http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
-
<title>
|
7
|
-
Exception: Clavem::Exceptions::AuthorizationDenied
|
8
|
-
|
9
|
-
— Documentation by YARD 0.8.6.2
|
10
|
-
|
11
|
-
</title>
|
12
|
-
|
13
|
-
<link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />
|
14
|
-
|
15
|
-
<link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />
|
16
|
-
|
17
|
-
<script type="text/javascript" charset="utf-8">
|
18
|
-
hasFrames = window.top.frames.main ? true : false;
|
19
|
-
relpath = '../../';
|
20
|
-
framesUrl = "../../frames.html#!" + escape(window.location.href);
|
21
|
-
</script>
|
22
|
-
|
23
|
-
|
24
|
-
<script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
|
25
|
-
|
26
|
-
<script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
|
27
|
-
|
28
|
-
|
29
|
-
</head>
|
30
|
-
<body>
|
31
|
-
<div id="header">
|
32
|
-
<div id="menu">
|
33
|
-
|
34
|
-
<a href="../../_index.html">Index (A)</a> »
|
35
|
-
<span class='title'><span class='object_link'><a href="../../Clavem.html" title="Clavem (module)">Clavem</a></span></span> » <span class='title'><span class='object_link'><a href="../Exceptions.html" title="Clavem::Exceptions (module)">Exceptions</a></span></span>
|
36
|
-
»
|
37
|
-
<span class="title">AuthorizationDenied</span>
|
38
|
-
|
39
|
-
|
40
|
-
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
-
</div>
|
42
|
-
|
43
|
-
<div id="search">
|
44
|
-
|
45
|
-
<a class="full_list_link" id="class_list_link"
|
46
|
-
href="../../class_list.html">
|
47
|
-
Class List
|
48
|
-
</a>
|
49
|
-
|
50
|
-
<a class="full_list_link" id="method_list_link"
|
51
|
-
href="../../method_list.html">
|
52
|
-
Method List
|
53
|
-
</a>
|
54
|
-
|
55
|
-
<a class="full_list_link" id="file_list_link"
|
56
|
-
href="../../file_list.html">
|
57
|
-
File List
|
58
|
-
</a>
|
59
|
-
|
60
|
-
</div>
|
61
|
-
<div class="clear"></div>
|
62
|
-
</div>
|
63
|
-
|
64
|
-
<iframe id="search_frame"></iframe>
|
65
|
-
|
66
|
-
<div id="content"><h1>Exception: Clavem::Exceptions::AuthorizationDenied
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
</h1>
|
71
|
-
|
72
|
-
<dl class="box">
|
73
|
-
|
74
|
-
<dt class="r1">Inherits:</dt>
|
75
|
-
<dd class="r1">
|
76
|
-
<span class="inheritName">RuntimeError</span>
|
77
|
-
|
78
|
-
<ul class="fullTree">
|
79
|
-
<li>Object</li>
|
80
|
-
|
81
|
-
<li class="next">RuntimeError</li>
|
82
|
-
|
83
|
-
<li class="next">Clavem::Exceptions::AuthorizationDenied</li>
|
84
|
-
|
85
|
-
</ul>
|
86
|
-
<a href="#" class="inheritanceTree">show all</a>
|
87
|
-
|
88
|
-
</dd>
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
<dt class="r2 last">Defined in:</dt>
|
99
|
-
<dd class="r2 last">lib/clavem/authorizer.rb</dd>
|
100
|
-
|
101
|
-
</dl>
|
102
|
-
<div class="clear"></div>
|
103
|
-
|
104
|
-
<h2>Overview</h2><div class="docstring">
|
105
|
-
<div class="discussion">
|
106
|
-
<p>This exception is raised if the authorization was denied.</p>
|
107
|
-
|
108
|
-
|
109
|
-
</div>
|
110
|
-
</div>
|
111
|
-
<div class="tags">
|
112
|
-
|
113
|
-
|
114
|
-
</div>
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
</div>
|
125
|
-
|
126
|
-
<div id="footer">
|
127
|
-
Generated on Sat Jul 20 13:46:58 2013 by
|
128
|
-
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
129
|
-
0.8.6.2 (ruby-1.9.3).
|
130
|
-
</div>
|
131
|
-
|
132
|
-
</body>
|
133
|
-
</html>
|
@@ -1,133 +0,0 @@
|
|
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 http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
6
|
-
<title>
|
7
|
-
Exception: Clavem::Exceptions::Timeout
|
8
|
-
|
9
|
-
— Documentation by YARD 0.8.6.2
|
10
|
-
|
11
|
-
</title>
|
12
|
-
|
13
|
-
<link rel="stylesheet" href="../../css/style.css" type="text/css" charset="utf-8" />
|
14
|
-
|
15
|
-
<link rel="stylesheet" href="../../css/common.css" type="text/css" charset="utf-8" />
|
16
|
-
|
17
|
-
<script type="text/javascript" charset="utf-8">
|
18
|
-
hasFrames = window.top.frames.main ? true : false;
|
19
|
-
relpath = '../../';
|
20
|
-
framesUrl = "../../frames.html#!" + escape(window.location.href);
|
21
|
-
</script>
|
22
|
-
|
23
|
-
|
24
|
-
<script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
|
25
|
-
|
26
|
-
<script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
|
27
|
-
|
28
|
-
|
29
|
-
</head>
|
30
|
-
<body>
|
31
|
-
<div id="header">
|
32
|
-
<div id="menu">
|
33
|
-
|
34
|
-
<a href="../../_index.html">Index (T)</a> »
|
35
|
-
<span class='title'><span class='object_link'><a href="../../Clavem.html" title="Clavem (module)">Clavem</a></span></span> » <span class='title'><span class='object_link'><a href="../Exceptions.html" title="Clavem::Exceptions (module)">Exceptions</a></span></span>
|
36
|
-
»
|
37
|
-
<span class="title">Timeout</span>
|
38
|
-
|
39
|
-
|
40
|
-
<div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
|
41
|
-
</div>
|
42
|
-
|
43
|
-
<div id="search">
|
44
|
-
|
45
|
-
<a class="full_list_link" id="class_list_link"
|
46
|
-
href="../../class_list.html">
|
47
|
-
Class List
|
48
|
-
</a>
|
49
|
-
|
50
|
-
<a class="full_list_link" id="method_list_link"
|
51
|
-
href="../../method_list.html">
|
52
|
-
Method List
|
53
|
-
</a>
|
54
|
-
|
55
|
-
<a class="full_list_link" id="file_list_link"
|
56
|
-
href="../../file_list.html">
|
57
|
-
File List
|
58
|
-
</a>
|
59
|
-
|
60
|
-
</div>
|
61
|
-
<div class="clear"></div>
|
62
|
-
</div>
|
63
|
-
|
64
|
-
<iframe id="search_frame"></iframe>
|
65
|
-
|
66
|
-
<div id="content"><h1>Exception: Clavem::Exceptions::Timeout
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
</h1>
|
71
|
-
|
72
|
-
<dl class="box">
|
73
|
-
|
74
|
-
<dt class="r1">Inherits:</dt>
|
75
|
-
<dd class="r1">
|
76
|
-
<span class="inheritName">Exception</span>
|
77
|
-
|
78
|
-
<ul class="fullTree">
|
79
|
-
<li>Object</li>
|
80
|
-
|
81
|
-
<li class="next">Exception</li>
|
82
|
-
|
83
|
-
<li class="next">Clavem::Exceptions::Timeout</li>
|
84
|
-
|
85
|
-
</ul>
|
86
|
-
<a href="#" class="inheritanceTree">show all</a>
|
87
|
-
|
88
|
-
</dd>
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
<dt class="r2 last">Defined in:</dt>
|
99
|
-
<dd class="r2 last">lib/clavem/authorizer.rb</dd>
|
100
|
-
|
101
|
-
</dl>
|
102
|
-
<div class="clear"></div>
|
103
|
-
|
104
|
-
<h2>Overview</h2><div class="docstring">
|
105
|
-
<div class="discussion">
|
106
|
-
<p>This exception is raised if the timeout expired.</p>
|
107
|
-
|
108
|
-
|
109
|
-
</div>
|
110
|
-
</div>
|
111
|
-
<div class="tags">
|
112
|
-
|
113
|
-
|
114
|
-
</div>
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
</div>
|
125
|
-
|
126
|
-
<div id="footer">
|
127
|
-
Generated on Sat Jul 20 13:46:58 2013 by
|
128
|
-
<a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
129
|
-
0.8.6.2 (ruby-1.9.3).
|
130
|
-
</div>
|
131
|
-
|
132
|
-
</body>
|
133
|
-
</html>
|