peteog-tagometer 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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