peteog-tagometer 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/Manifest ADDED
@@ -0,0 +1,11 @@
1
+ init.rb
2
+ lib/tagometer/client.rb
3
+ lib/tagometer/summary.rb
4
+ lib/tagometer/version.rb
5
+ lib/tagometer.rb
6
+ Rakefile
7
+ test/fixtures/google.yml
8
+ test/test_helper.rb
9
+ test/test_summary.rb
10
+ test/test_tagometer.rb
11
+ Manifest
data/Rakefile ADDED
@@ -0,0 +1,18 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+ require 'echoe'
4
+ require 'lib/tagometer/version'
5
+
6
+ Echoe.new('tagometer', Tagometer::Version) do |p|
7
+ p.description = 'A simple wrapper for the Delicious tagometer'
8
+ p.author = "Pete O'Grady"
9
+ p.email = 'pete@peteogrady.com'
10
+ p.extra_deps = [['httparty', '0.2.4']]
11
+ end
12
+
13
+ desc 'Preps the gem for a new release'
14
+ task :prepare do
15
+ %w[manifest build_gemspec].each do |task|
16
+ Rake::Task[task].invoke
17
+ end
18
+ end
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'tagometer'
@@ -0,0 +1,11 @@
1
+ module Tagometer
2
+ API_URL = 'http://feeds.delicious.com/v2/json/urlinfo/'
3
+
4
+ class Client
5
+ include HTTParty
6
+
7
+ def get(md5_url)
8
+ self.class.get("#{API_URL}#{md5_url}", :format => :json)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,40 @@
1
+ module Tagometer
2
+ class Summary
3
+ attr_reader :url, :client, :md5_url
4
+
5
+ def initialize(url, client=Client.new)
6
+ @url = url
7
+ @client = client
8
+ @md5_url = create_md5_url(url)
9
+ populate
10
+ end
11
+
12
+ def title
13
+ @title || ''
14
+ end
15
+
16
+ def total_posts
17
+ @total_posts || 0
18
+ end
19
+
20
+ def top_tags
21
+ @top_tags || {}
22
+ end
23
+
24
+ private
25
+
26
+ def create_md5_url(url)
27
+ Digest::MD5.hexdigest(url)
28
+ end
29
+
30
+ def populate
31
+ data = @client.get(@md5_url)
32
+
33
+ if data.any?
34
+ @title = data.first['title']
35
+ @total_posts = data.first['total_posts']
36
+ @top_tags = data.first['top_tags']
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,3 @@
1
+ module Tagometer
2
+ Version = '0.1.0'
3
+ end
data/lib/tagometer.rb ADDED
@@ -0,0 +1,10 @@
1
+ $:.unshift File.dirname(__FILE__)
2
+
3
+ require 'rubygems'
4
+ gem 'httparty', '0.2.4'
5
+ require 'httparty'
6
+
7
+ require 'digest/md5'
8
+ require 'tagometer/client'
9
+ require 'tagometer/summary'
10
+ require 'tagometer/version'
data/tagometer.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{tagometer}
5
+ s.version = "0.1.0"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["Pete O'Grady"]
9
+ s.date = %q{2008-12-30}
10
+ s.description = %q{A simple wrapper for the Delicious tagometer}
11
+ s.email = %q{pete@peteogrady.com}
12
+ s.extra_rdoc_files = ["lib/tagometer/client.rb", "lib/tagometer/summary.rb", "lib/tagometer/version.rb", "lib/tagometer.rb"]
13
+ s.files = ["init.rb", "lib/tagometer/client.rb", "lib/tagometer/summary.rb", "lib/tagometer/version.rb", "lib/tagometer.rb", "Rakefile", "test/fixtures/google.yml", "test/test_helper.rb", "test/test_summary.rb", "test/test_tagometer.rb", "Manifest", "tagometer.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{}
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Tagometer", "--main", "README.md"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{tagometer}
19
+ s.rubygems_version = %q{1.3.1}
20
+ s.summary = %q{A simple wrapper for the Delicious tagometer}
21
+ s.test_files = ["test/test_helper.rb", "test/test_summary.rb", "test/test_tagometer.rb"]
22
+
23
+ if s.respond_to? :specification_version then
24
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
25
+ s.specification_version = 2
26
+
27
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
28
+ s.add_runtime_dependency(%q<httparty>, ["= 0.2.4"])
29
+ s.add_development_dependency(%q<echoe>, [">= 0"])
30
+ else
31
+ s.add_dependency(%q<httparty>, ["= 0.2.4"])
32
+ s.add_dependency(%q<echoe>, [">= 0"])
33
+ end
34
+ else
35
+ s.add_dependency(%q<httparty>, ["= 0.2.4"])
36
+ s.add_dependency(%q<echoe>, [">= 0"])
37
+ end
38
+ end
@@ -0,0 +1,16 @@
1
+ ---
2
+ - title: Google
3
+ hash: ff90821feeb2b02a33a6f9fc8e5f3fcd
4
+ url: http://www.google.com/
5
+ total_posts: 30879
6
+ top_tags:
7
+ reference: 873
8
+ search: 9183
9
+ tools: 548
10
+ internet: 756
11
+ engine: 2106
12
+ google: 7400
13
+ research: 451
14
+ searchengines: 1112
15
+ web: 1247
16
+ searchengine: 3383
@@ -0,0 +1,14 @@
1
+ require 'rubygems'
2
+ require 'test/unit'
3
+ require 'context'
4
+ require 'stump'
5
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'tagometer')
6
+
7
+ def successful_response_data
8
+ load_yaml_fixture("google.yml")
9
+ end
10
+
11
+ def load_yaml_fixture(path)
12
+ absolute_path = File.join(File.dirname(__FILE__), '..', "test", "fixtures", path)
13
+ YAML::load_file absolute_path
14
+ end
@@ -0,0 +1,29 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class TestRequest < Test::Unit::TestCase
4
+ before do
5
+ @client.stub!(:get, :return => successful_response_data)
6
+ @summary = Tagometer::Summary.new('http://www.google.com/', @client)
7
+ end
8
+
9
+ test "should set client and url on initalize" do
10
+ assert_equal(@client, @summary.client)
11
+ assert_equal('http://www.google.com/', @summary.url)
12
+ end
13
+
14
+ test 'should set MD5 url' do
15
+ assert_equal('ff90821feeb2b02a33a6f9fc8e5f3fcd', @summary.md5_url)
16
+ end
17
+
18
+ test 'should have title' do
19
+ assert_equal(successful_response_data.first['title'], @summary.title)
20
+ end
21
+
22
+ test 'should have total_posts' do
23
+ assert_equal(successful_response_data.first['total_posts'], @summary.total_posts)
24
+ end
25
+
26
+ test 'should have top_tags' do
27
+ assert_equal(successful_response_data.first['top_tags'], @summary.top_tags)
28
+ end
29
+ end
@@ -0,0 +1,7 @@
1
+ require File.dirname(__FILE__) + '/test_helper'
2
+
3
+ class TestTagometer < Test::Unit::TestCase
4
+ test "should have a version" do
5
+ assert_not_nil Tagometer::Version
6
+ end
7
+ end
metadata ADDED
@@ -0,0 +1,91 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: peteog-tagometer
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Pete O'Grady
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-12-30 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: httparty
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - "="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.2.4
23
+ version:
24
+ - !ruby/object:Gem::Dependency
25
+ name: echoe
26
+ version_requirement:
27
+ version_requirements: !ruby/object:Gem::Requirement
28
+ requirements:
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: "0"
32
+ version:
33
+ description: A simple wrapper for the Delicious tagometer
34
+ email: pete@peteogrady.com
35
+ executables: []
36
+
37
+ extensions: []
38
+
39
+ extra_rdoc_files:
40
+ - lib/tagometer/client.rb
41
+ - lib/tagometer/summary.rb
42
+ - lib/tagometer/version.rb
43
+ - lib/tagometer.rb
44
+ files:
45
+ - init.rb
46
+ - lib/tagometer/client.rb
47
+ - lib/tagometer/summary.rb
48
+ - lib/tagometer/version.rb
49
+ - lib/tagometer.rb
50
+ - Rakefile
51
+ - test/fixtures/google.yml
52
+ - test/test_helper.rb
53
+ - test/test_summary.rb
54
+ - test/test_tagometer.rb
55
+ - Manifest
56
+ - tagometer.gemspec
57
+ has_rdoc: true
58
+ homepage: ""
59
+ post_install_message:
60
+ rdoc_options:
61
+ - --line-numbers
62
+ - --inline-source
63
+ - --title
64
+ - Tagometer
65
+ - --main
66
+ - README.md
67
+ require_paths:
68
+ - lib
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ required_rubygems_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "1.2"
80
+ version:
81
+ requirements: []
82
+
83
+ rubyforge_project: tagometer
84
+ rubygems_version: 1.2.0
85
+ signing_key:
86
+ specification_version: 2
87
+ summary: A simple wrapper for the Delicious tagometer
88
+ test_files:
89
+ - test/test_helper.rb
90
+ - test/test_summary.rb
91
+ - test/test_tagometer.rb