mirrored 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. data/History.txt +2 -0
  2. data/License.txt +20 -0
  3. data/Manifest.txt +47 -0
  4. data/README.txt +1 -0
  5. data/Rakefile +4 -0
  6. data/config/hoe.rb +71 -0
  7. data/config/requirements.rb +17 -0
  8. data/lib/mirrored/base.rb +50 -0
  9. data/lib/mirrored/connection.rb +39 -0
  10. data/lib/mirrored/date.rb +28 -0
  11. data/lib/mirrored/post.rb +120 -0
  12. data/lib/mirrored/tag.rb +34 -0
  13. data/lib/mirrored/update.rb +16 -0
  14. data/lib/mirrored/version.rb +9 -0
  15. data/lib/mirrored.rb +25 -0
  16. data/script/destroy +14 -0
  17. data/script/generate +14 -0
  18. data/script/txt2html +74 -0
  19. data/setup.rb +1585 -0
  20. data/tasks/deployment.rake +27 -0
  21. data/tasks/environment.rake +7 -0
  22. data/tasks/website.rake +17 -0
  23. data/test/fixtures/xml/add_post_done.xml +2 -0
  24. data/test/fixtures/xml/all_posts.xml +2919 -0
  25. data/test/fixtures/xml/all_posts_by_tag.xml +30 -0
  26. data/test/fixtures/xml/dates.xml +739 -0
  27. data/test/fixtures/xml/dates_for_tag.xml +270 -0
  28. data/test/fixtures/xml/delete_post.xml +2 -0
  29. data/test/fixtures/xml/delete_post_failed.xml +2 -0
  30. data/test/fixtures/xml/posts.xml +6 -0
  31. data/test/fixtures/xml/posts_by_date.xml +4 -0
  32. data/test/fixtures/xml/posts_by_tag.xml +4 -0
  33. data/test/fixtures/xml/posts_by_url.xml +4 -0
  34. data/test/fixtures/xml/recent_posts.xml +19 -0
  35. data/test/fixtures/xml/recent_posts_by_tag.xml +19 -0
  36. data/test/fixtures/xml/recent_posts_by_tag_and_count.xml +8 -0
  37. data/test/fixtures/xml/tag_rename.xml +2 -0
  38. data/test/fixtures/xml/tags.xml +1368 -0
  39. data/test/test_base.rb +33 -0
  40. data/test/test_date.rb +26 -0
  41. data/test/test_helper.rb +12 -0
  42. data/test/test_post.rb +135 -0
  43. data/test/test_tag.rb +23 -0
  44. data/test/test_update.rb +18 -0
  45. data/website/css/common.css +47 -0
  46. data/website/index.html +92 -0
  47. metadata +109 -0
data/test/test_base.rb ADDED
@@ -0,0 +1,33 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestBase < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Mirrored::Base.remove_connection
7
+ end
8
+
9
+ test 'should know service' do
10
+ Mirrored::Base.establish_connection(:delicious, 'jnunemaker', 'password')
11
+ assert_equal :delicious, Mirrored::Base.service
12
+ end
13
+
14
+ test 'should allow using valid service' do
15
+ assert_nothing_raised do
16
+ Mirrored::Base.establish_connection(:delicious, 'jnunemaker', 'password')
17
+ Mirrored::Base.establish_connection(:magnolia, 'jnunemaker', 'password')
18
+ end
19
+ end
20
+
21
+ test 'should not allowing using invalid service' do
22
+ assert_raises(Mirrored::InvalidService) do
23
+ Mirrored::Base.establish_connection(:funkychicken, 'jnunemaker', 'password')
24
+ end
25
+ end
26
+
27
+ test 'should find correct api url based on service' do
28
+ Mirrored::Base.establish_connection(:delicious, 'jnunemaker', 'password')
29
+ assert_equal 'https://api.del.icio.us/v1', Mirrored::Base.api_url
30
+ Mirrored::Base.establish_connection(:magnolia, 'jnunemaker', 'password')
31
+ assert_equal 'https://ma.gnolia.com/api/mirrord/v1', Mirrored::Base.api_url
32
+ end
33
+ end
data/test/test_date.rb ADDED
@@ -0,0 +1,26 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestDate < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Mirrored::Base.establish_connection(:magnolia, 'jnunemaker', 'password')
7
+ end
8
+
9
+ test 'should get all dates' do
10
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/dates.xml')).read
11
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/dates'), :string => data)
12
+ dates = Mirrored::Date.find(:all)
13
+ assert_equal 663, dates.size
14
+ assert_equal Date.civil(2005, 5, 10), dates.first.date
15
+ assert_equal '87', dates.first.count
16
+ end
17
+
18
+ test 'should get all dates for tag' do
19
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/dates_for_tag.xml')).read
20
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/dates?tag=ruby'), :string => data)
21
+ dates = Mirrored::Date.find(:all, :tag => 'ruby')
22
+ assert_equal 241, dates.size
23
+ assert_equal Date.civil(2006, 2, 8), dates.first.date
24
+ assert_equal '1', dates.first.count
25
+ end
26
+ end
@@ -0,0 +1,12 @@
1
+ require 'test/unit'
2
+ require 'rubygems'
3
+ require 'fake_web'
4
+ require File.dirname(__FILE__) + '/../lib/mirrored'
5
+
6
+ class << Test::Unit::TestCase
7
+ def test(name, &block)
8
+ test_name = :"test_#{name.gsub(' ','_')}"
9
+ raise ArgumentError, "#{test_name} is already defined" if self.instance_methods.include? test_name.to_s
10
+ define_method test_name, &block
11
+ end
12
+ end
data/test/test_post.rb ADDED
@@ -0,0 +1,135 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestPost < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Mirrored::Base.establish_connection(:magnolia, 'jnunemaker', 'password')
7
+ end
8
+
9
+ test 'should get posts' do
10
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/posts.xml')).read
11
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/get'), :string => data)
12
+ posts = Mirrored::Post.find(:get)
13
+ assert_equal 3, posts.size
14
+ first = posts.first
15
+ assert_equal 'http://codersifu.blogspot.com/2007/10/restful-pdf-on-rails-20.html', first.href
16
+ assert_equal 'CoderSifu: RESTful PDF on Rails 2.0', first.description
17
+ assert_equal 'A nice simple example of responding to the pdf format using rails rest-fulness.', first.extended
18
+ assert_equal '580485cf09ea39f3cb4a1182390a6dfb', first.hash
19
+ assert_equal '1', first.others
20
+ assert_equal ['ruby on rails', 'rest', 'pdf', 'plugins', 'railstips'], first.tags
21
+ assert_equal Time.utc(2007, 10, 05, 14, 59, 02), first.time
22
+ end
23
+
24
+ test 'should get posts by tag' do
25
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/posts_by_tag.xml')).read
26
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/get?tag=ruby'), :string => data)
27
+ posts = Mirrored::Post.find(:get, :tag => 'ruby')
28
+ assert_equal 1, posts.size
29
+ end
30
+
31
+ test 'should get posts by date' do
32
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/posts_by_date.xml')).read
33
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/get?dt=2007-10-05'), :string => data)
34
+ posts = Mirrored::Post.find(:get, :dt => '2007-10-05')
35
+ assert_equal 2, posts.size
36
+ end
37
+
38
+ test 'should get posts by url' do
39
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/posts_by_url.xml')).read
40
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/get?url=http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes'), :string => data)
41
+ posts = Mirrored::Post.find(:get, :url => 'http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes')
42
+ assert_equal 1, posts.size
43
+ end
44
+
45
+ test 'should filter by recent posts' do
46
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/recent_posts.xml')).read
47
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/recent'), :string => data)
48
+ posts = Mirrored::Post.find(:recent)
49
+ assert_equal 15, posts.size
50
+ end
51
+
52
+ test 'should filter recent posts by tag' do
53
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/recent_posts_by_tag.xml')).read
54
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/recent?tag=ruby'), :string => data)
55
+ posts = Mirrored::Post.find(:recent, :tag => 'ruby')
56
+ assert_equal 15, posts.size
57
+ end
58
+
59
+ test 'should filter recent posts by tag and count' do
60
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/recent_posts_by_tag_and_count.xml')).read
61
+ # TODO: make fake web realize that tag=ruby&count=5 is the same as count=5&tag=ruby
62
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/recent?tag=ruby&count=5'), :string => data)
63
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/recent?count=5&tag=ruby'), :string => data)
64
+ posts = Mirrored::Post.find(:recent, :tag => 'ruby', :count => 5)
65
+ assert_equal 5, posts.size
66
+ end
67
+
68
+ test 'should get all posts' do
69
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/all_posts.xml')).read
70
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/all'), :string => data)
71
+ posts = Mirrored::Post.find(:all)
72
+ assert_equal 2607, posts.size
73
+ end
74
+
75
+ test 'should get all posts for tag' do
76
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/all_posts_by_tag.xml')).read
77
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/all?tag=actionscript'), :string => data)
78
+ posts = Mirrored::Post.find(:all, :tag => 'actionscript')
79
+ assert_equal 24, posts.size
80
+ end
81
+
82
+ test 'should be able to convert post to hash' do
83
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/posts_by_url.xml')).read
84
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/get?url=http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes'), :string => data)
85
+ posts = Mirrored::Post.find(:get, :url => 'http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes')
86
+ post = posts.first
87
+ post_hash = {
88
+ :description => 'Easy charting with amcharts and ruby on rails.',
89
+ :extended => 'Rails on the Run - Sexy charts in less than 5 minutes',
90
+ :tags => 'charts ruby_on_rails railstips',
91
+ :url => 'http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes',
92
+ :share => 'yes'
93
+ }
94
+ assert_equal post_hash.keys.map { |k| k.to_s }.sort, post.to_h.keys.map { |k| k.to_s }.sort
95
+ assert_equal post_hash.values.sort, post.to_h.values.sort
96
+ end
97
+
98
+ # TODO: Figure out best way to test this. Fakeweb craps out because of hash keys not being ordered correctly in url. I don't feel like thinking about it now.
99
+ # test 'should be able to add post' do
100
+ # data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/add_post_done.xml')).read
101
+ # FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/add?'), :string => data)
102
+ # p = Mirrored::Post.new
103
+ # p.url = 'http://addictedtonew.com'
104
+ # p.description = 'Addicted to New by John Nuneamker'
105
+ # p.dt = Time.now.utc
106
+ # p.extended = 'Really cool dude'
107
+ # p.tags = %w(cool dude ruby)
108
+ # p.save(false)
109
+ # end
110
+
111
+ test 'should know if destroy succeeded' do
112
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/delete_post.xml')).read
113
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/delete?url=http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes'), :string => data)
114
+ assert Mirrored::Post.destroy('http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes')
115
+ end
116
+
117
+ test 'should also know if aliased delete succeeded' do
118
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/delete_post.xml')).read
119
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/delete?url=http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes'), :string => data)
120
+ assert Mirrored::Post.delete('http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes')
121
+ end
122
+
123
+ test 'should know if destroy failed' do
124
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/delete_post_failed.xml')).read
125
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/delete?url=http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes'), :string => data)
126
+ assert ! Mirrored::Post.destroy('http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes')
127
+ end
128
+
129
+ test 'should also know if aliased delete failed' do
130
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/delete_post_failed.xml')).read
131
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/delete?url=http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes'), :string => data)
132
+ assert ! Mirrored::Post.delete('http://www.railsontherun.com/2007/10/4/sexy-charts-in-less-than-5-minutes')
133
+ end
134
+
135
+ end
data/test/test_tag.rb ADDED
@@ -0,0 +1,23 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestTag < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Mirrored::Base.establish_connection(:magnolia, 'jnunemaker', 'password')
7
+ end
8
+
9
+ test 'should find tags' do
10
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/tags.xml')).read
11
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'tags/get'), :string => data)
12
+ tags = Mirrored::Tag.find(:all)
13
+ assert_equal 1229, tags.size
14
+ assert_equal '300', tags.first.name
15
+ assert_equal '2', tags.first.count
16
+ end
17
+
18
+ test 'should be able to rename tag' do
19
+ data = open(File.join(File.dirname(__FILE__), 'fixtures/xml/tag_rename.xml')).read
20
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'tags/rename'), :string => data)
21
+ assert Mirrored::Tag.rename('fart', 'poo')
22
+ end
23
+ end
@@ -0,0 +1,18 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestUpdate < Test::Unit::TestCase
4
+
5
+ def setup
6
+ Mirrored::Base.establish_connection(:delicious, 'jnunemaker', 'password')
7
+ end
8
+
9
+ test 'should find last updated time' do
10
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/update'), :string => %q{<update time="2007-10-05T14:59:02Z" />})
11
+ assert_equal Time.utc(2007, 10, 05, 14, 59, 02), Mirrored::Update.last
12
+ end
13
+
14
+ test 'should not bomb' do
15
+ FakeWeb.register_uri(URI.join(Mirrored::Base.api_url, 'posts/update'), :string => "")
16
+ assert_equal '', Mirrored::Update.last
17
+ end
18
+ end
@@ -0,0 +1,47 @@
1
+ @media screen, projection {
2
+ /*
3
+ Copyright (c) 2007, Yahoo! Inc. All rights reserved.
4
+ Code licensed under the BSD License:
5
+ http://developer.yahoo.net/yui/license.txt
6
+ version: 2.2.0
7
+ */
8
+ body {font:13px arial,helvetica,clean,sans-serif;*font-size:small;*font:x-small;}table {font-size:inherit;font:100%;}select, input, textarea {font:99% arial,helvetica,clean,sans-serif;}pre, code {font:115% monospace;*font-size:100%;}body * {line-height:1.22em;}
9
+ body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,fieldset,input,textarea,p,blockquote,th,td{margin:0;padding:0;}table{border-collapse:collapse;border-spacing:0;}fieldset,img{border:0;}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal;}/*ol,ul {list-style:none;}*/caption,th {text-align:left;}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal;}q:before,q:after{content:'';}abbr,acronym {border:0;}
10
+ /* end of yahoo reset and fonts */
11
+
12
+ body {color:#333; background:#4b1a1a; line-height:1.3;}
13
+ p {margin:0 0 20px;}
14
+ a {color:#4b1a1a;}
15
+ a:hover {text-decoration:none;}
16
+ strong {font-weight:bold;}
17
+ em {font-style:italics;}
18
+ h1,h2,h3,h4,h5,h6 {font-weight:bold;}
19
+ h1 {font-size:197%; margin:30px 0; color:#4b1a1a;}
20
+ h2 {font-size:174%; margin:20px 0; color:#b8111a;}
21
+ h3 {font-size:152%; margin:10px 0;}
22
+ h4 {font-size:129%; margin:10px 0;}
23
+ pre {background:#eee; padding:20px; border:1px solid #ccc; font-size:100%; overflow:auto;}
24
+ code {font-size:100%; margin:0; padding:0;}
25
+ ul, ol {margin:10px 0 10px 25px;}
26
+ ol li {margin:0 0 10px;}
27
+
28
+
29
+
30
+
31
+
32
+ div#wrapper {background:#fff; width:560px; margin:0 auto; padding:20px; border:10px solid #bc8c46; border-width:0 10px;}
33
+ div#header {position:relative; border-bottom:1px dotted; margin:0 0 10px; padding:0 0 10px;}
34
+ div#header p {margin:0; padding:0;}
35
+ div#header h1 {margin:0; padding:0;}
36
+ ul#nav {position:absolute; top:0; right:0; list-style:none; margin:0; padding:0;}
37
+ ul#nav li {display:inline; padding:0 0 0 5px;}
38
+ ul#nav li a {}
39
+ div#content {}
40
+ div#footer {margin:40px 0 0; border-top:1px dotted; padding:10px 0 0;}
41
+
42
+
43
+
44
+
45
+
46
+
47
+ }
@@ -0,0 +1,92 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
5
+ <title>Mirrored by John Nunemaker</title>
6
+ <link rel="stylesheet" href="css/common.css" type="text/css" />
7
+ </head>
8
+ <body>
9
+
10
+ <div id="wrapper">
11
+ <div id="header">
12
+ <h1>Mirrored</h1>
13
+ <p>Bookmarking discrimination is no more.</p>
14
+
15
+ <ul id="nav">
16
+ <li><a href="mirrored/">Docs</a></li>
17
+ <li><a href="http://rubyforge.org/projects/mirrored/">Rubyforge Page</a></li>
18
+ </ul>
19
+ </div>
20
+
21
+ <div id="content">
22
+ <p>Mirrored is a wrapper for the <a href="http://wiki.ma.gnolia.com/Mirror%27d_API">mirrored</a> <a href="http://del.icio.us">del.icio.us</a> and <a href="http://ma.gnolia.com">ma.gnolia</a> apis</a>.</p>
23
+
24
+ <h2>Installation</h2>
25
+
26
+ <pre><code>$ sudo gem install mirrored</code></pre>
27
+
28
+ <h2>Usage</h2>
29
+
30
+ <h3>Last Update</h3>
31
+ <pre><code class="ruby">Mirrored::Update.last # => ruby time object equal to last update</code></pre>
32
+
33
+ <h3>Posts</h3>
34
+ <pre><code class="ruby"># => posts
35
+ Mirrored::Post.find(:get)
36
+
37
+ # => posts tagged ruby
38
+ Mirrored::Post.find(:get, :tag => 'ruby')
39
+
40
+ # => posts tagged ruby on oct. 5, 2007
41
+ Mirrored::Post.find(:get, :tag => 'ruby', :dt => '2007-10-05')
42
+
43
+ # => posts with url http://addictedtonew
44
+ Mirrored::Post.find(:get, :url => 'http://addictedtonew')
45
+
46
+ # => all posts (use sparingly according to delicious and magnolia)
47
+ Mirrored::Post.find(:all)
48
+
49
+ # => all posts for tag ruby (use sparingly according to delicious and magnolia)
50
+ Mirrored::Post.find(:all, :tag => 'ruby')
51
+
52
+ # most recent posts
53
+ Mirrored::Post.find(:recent)
54
+
55
+ # => most recent posts for tag ruby
56
+ Mirrored::Post.find(:recent, :tag => 'ruby')
57
+
58
+ # => 5 most recent posts for tag ruby
59
+ Mirrored::Post.find(:recent, :tag => 'ruby', :count => '5')
60
+ </code></pre>
61
+
62
+ <h3>Tags</h3>
63
+ <pre><code class="ruby"># gets list of all tags and the number of times you've used them
64
+ Mirrored::Tag.find(:get)
65
+
66
+ # Rename a tag
67
+ Mirrored::Tag.rename('microsoft', 'suckfest')</code></pre>
68
+
69
+ <h3>Dates</h3>
70
+ <pre><code class="ruby"># => finds all dates you have posted with counts for each day
71
+ Mirrored::Date.find(:all)
72
+
73
+ # => finds all dates you have posted something tagged ruby with counts for each day
74
+ Mirrored::Date.find(:all, :tag => 'ruby')</code></pre>
75
+
76
+ </div>
77
+
78
+ <div id="footer">
79
+ <p>Created by <a href="http://addictedtonew.com/about/">John Nunemaker</a></p>
80
+ </div>
81
+
82
+ </div>
83
+
84
+ <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
85
+ <script type="text/javascript">_uacct = "UA-85301-14"; urchinTracker();</script>
86
+
87
+ <!-- 103bees.com 'bee' code v1.11 - please do not make any changes! -->
88
+ <script type="text/javascript" src="http://103bees.com/bees/?bee=3672&amp;fid=9245"></script>
89
+ <!-- 103bees.com 'bee' code -->
90
+
91
+ </body>
92
+ </html>
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.9.4
3
+ specification_version: 1
4
+ name: mirrored
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2007-10-06 00:00:00 -04:00
8
+ summary: Wrapper for delicious and magnolia mirrored apis
9
+ require_paths:
10
+ - lib
11
+ email: nunemaker@gmail.com
12
+ homepage: http://mirrored.rubyforge.org
13
+ rubyforge_project: mirrored
14
+ description: Wrapper for delicious and magnolia mirrored apis
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ post_install_message:
29
+ authors:
30
+ - John Nunemaker
31
+ files:
32
+ - History.txt
33
+ - License.txt
34
+ - Manifest.txt
35
+ - README.txt
36
+ - Rakefile
37
+ - config/hoe.rb
38
+ - config/requirements.rb
39
+ - lib/mirrored.rb
40
+ - lib/mirrored/base.rb
41
+ - lib/mirrored/connection.rb
42
+ - lib/mirrored/date.rb
43
+ - lib/mirrored/post.rb
44
+ - lib/mirrored/tag.rb
45
+ - lib/mirrored/update.rb
46
+ - lib/mirrored/version.rb
47
+ - script/destroy
48
+ - script/generate
49
+ - script/txt2html
50
+ - setup.rb
51
+ - tasks/deployment.rake
52
+ - tasks/environment.rake
53
+ - tasks/website.rake
54
+ - test/test_base.rb
55
+ - test/test_date.rb
56
+ - test/test_helper.rb
57
+ - test/test_post.rb
58
+ - test/test_tag.rb
59
+ - test/test_update.rb
60
+ - test/fixtures/xml/add_post_done.xml
61
+ - test/fixtures/xml/all_posts.xml
62
+ - test/fixtures/xml/all_posts_by_tag.xml
63
+ - test/fixtures/xml/dates.xml
64
+ - test/fixtures/xml/dates_for_tag.xml
65
+ - test/fixtures/xml/delete_post.xml
66
+ - test/fixtures/xml/delete_post_failed.xml
67
+ - test/fixtures/xml/posts.xml
68
+ - test/fixtures/xml/posts_by_date.xml
69
+ - test/fixtures/xml/posts_by_tag.xml
70
+ - test/fixtures/xml/posts_by_url.xml
71
+ - test/fixtures/xml/recent_posts.xml
72
+ - test/fixtures/xml/recent_posts_by_tag.xml
73
+ - test/fixtures/xml/recent_posts_by_tag_and_count.xml
74
+ - test/fixtures/xml/tag_rename.xml
75
+ - test/fixtures/xml/tags.xml
76
+ - website/css/common.css
77
+ - website/images
78
+ - website/index.html
79
+ test_files:
80
+ - test/test_base.rb
81
+ - test/test_date.rb
82
+ - test/test_helper.rb
83
+ - test/test_post.rb
84
+ - test/test_tag.rb
85
+ - test/test_update.rb
86
+ rdoc_options:
87
+ - --main
88
+ - README.txt
89
+ extra_rdoc_files:
90
+ - History.txt
91
+ - License.txt
92
+ - Manifest.txt
93
+ - README.txt
94
+ executables: []
95
+
96
+ extensions: []
97
+
98
+ requirements: []
99
+
100
+ dependencies:
101
+ - !ruby/object:Gem::Dependency
102
+ name: hpricot
103
+ version_requirement:
104
+ version_requirements: !ruby/object:Gem::Version::Requirement
105
+ requirements:
106
+ - - "="
107
+ - !ruby/object:Gem::Version
108
+ version: "0.5"
109
+ version: