muddyit_fu 0.2.6 → 0.2.8

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/README.rdoc CHANGED
@@ -8,23 +8,10 @@
8
8
 
9
9
  == Getting started
10
10
 
11
- muddy.it uses oauth to manage it's api access. To access the muddy.it data
12
- programmatically you will need to register an application. Login and visit :
11
+ muddy.it uses oauth to manage it's api access.
13
12
 
14
- http://www.muddy.it/oauth_clients/
15
-
16
- You can register an application here, a callback URI isn't required.
17
-
18
- The 'consumer token' and 'consumer secret' are used to generate a token for
19
- accessing muddy.it. For further details and an example of how to programatically
20
- generate a new access token for muddy.it see here :
21
-
22
- http://stakeventures.com/articles/2008/02/23/developing-oauth-clients-in-ruby
23
-
24
- See the 'Authorising clients using irb' section for a sample irb session.
25
-
26
- These details are then used to provide access to the service. The credentials
27
- can be stored in a yml file, an example of which is provided below.
13
+ See http://blog.muddy.it/2009/11/getting-started-with-muddy for details on how to
14
+ use the API.
28
15
 
29
16
  == Example muddyit.yml
30
17
 
@@ -53,7 +40,7 @@ can be stored in a yml file, an example of which is provided below.
53
40
  require 'muddyit_fu'
54
41
  muddyit = Muddyit.new('muddyit.yml')
55
42
  site = muddyit.sites.first
56
- site.pages.create({:identifier => 'http://news.bbc.co.uk/1/hi/uk_politics/8011321.stm'}, {:minium_confidence => 0.2})
43
+ site.pages.create({:uri => 'http://news.bbc.co.uk/1/hi/uk_politics/8011321.stm'}, {:minium_confidence => 0.2})
57
44
 
58
45
  == View categorised pages
59
46
 
@@ -100,10 +87,6 @@ can be stored in a yml file, an example of which is provided below.
100
87
  puts "#{results[:page].title} #{results[:count]}"
101
88
  end
102
89
 
103
- == Obtaining oauth access credentials
104
-
105
- See http://gist.github.com/178993
106
-
107
90
  == Contact
108
91
 
109
92
  Author: Rob Lee
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.2.8
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/ruby
2
+ require 'rubygems'
3
+ require 'muddyit_fu'
4
+ require 'rss'
5
+ require 'open-uri'
6
+
7
+ # Connect to Muddy
8
+ muddyit = Muddyit.new('./config.yml')
9
+ site = muddyit.sites.find(:all).first
10
+ # Parse RSS
11
+ rss_content = ''
12
+ open('http://newsrss.bbc.co.uk/rss/newsonline_uk_edition/uk_politics/rss.xml') do |f|
13
+ rss_content = f.read
14
+ end
15
+ rss = RSS::Parser.parse(rss_content, false)
16
+ # Loop through, analyse and display entities
17
+ rss.items.each do |item|
18
+ page = site.pages.create({:uri => item.guid.content}, {:realtime => true, :store => false})
19
+ puts "#{item.guid.content} contains:"
20
+ page.entities.each do |entity|
21
+ puts "\t#{entity.term}, #{entity.classification}"
22
+ end
23
+ end
24
+
data/examples/oauth.rb ADDED
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # Script to ease muddy oauth application verification
4
+ # from http://github.com/jnunemaker/twitter/blob/master/examples/oauth.rb
5
+
6
+ require 'rubygems'
7
+ require 'muddyit_fu'
8
+ require 'launchy'
9
+
10
+ puts "> enter consumer key"
11
+ token = gets.chomp
12
+ puts "> enter consumer secret"
13
+ secret = gets.chomp
14
+
15
+ oauth = Muddyit::OAuth.new(token, secret)
16
+ rtoken = oauth.request_token.token
17
+ rsecret = oauth.request_token.secret
18
+
19
+ puts "> redirecting you to muddy to authorize"
20
+ puts "> opening #{oauth.request_token.authorize_url}"
21
+ Launchy.open(oauth.request_token.authorize_url)
22
+
23
+ puts "> authorize in the browser and then press enter"
24
+ waiting = gets.chomp
25
+
26
+ begin
27
+ stoken,ssecret = oauth.authorize_from_request(rtoken, rsecret)
28
+
29
+ puts "Access Details"
30
+ puts
31
+ puts "Token : #{stoken}"
32
+ puts "Secret : #{ssecret}"
33
+ puts
34
+
35
+ puts "Account sites"
36
+ puts
37
+
38
+ muddyit = Muddyit.new(:consumer_key => token,
39
+ :consumer_secret => secret,
40
+ :access_token => stoken,
41
+ :access_token_secret => ssecret)
42
+
43
+ muddyit.sites.find(:all).each do |site|
44
+ puts "#{site.label} has token #{site.token}"
45
+ end
46
+
47
+ rescue OAuth::Unauthorized
48
+ puts "> FAIL!"
49
+ end
data/lib/muddyit/base.rb CHANGED
@@ -67,8 +67,8 @@ module Muddyit
67
67
  raise 'config file must contain consumer_key and consumer_secret' unless @consumer_key and @consumer_secret
68
68
  end
69
69
 
70
- @consumer = OAuth::Consumer.new(@consumer_key, @consumer_secret, {:site=>@rest_endpoint})
71
- @accesstoken = OAuth::AccessToken.new(@consumer, @access_token, @access_token_secret)
70
+ @consumer = ::OAuth::Consumer.new(@consumer_key, @consumer_secret, {:site=>@rest_endpoint})
71
+ @accesstoken = ::OAuth::AccessToken.new(@consumer, @access_token, @access_token_secret)
72
72
 
73
73
  end
74
74
 
@@ -0,0 +1,49 @@
1
+ # Borrowed from http://github.com/jnunemaker/twitter
2
+ module Muddyit
3
+ class OAuth
4
+ extend Forwardable
5
+ def_delegators :access_token, :get, :post, :put, :delete
6
+
7
+ attr_reader :ctoken, :csecret, :consumer_options
8
+
9
+
10
+ def initialize(ctoken, csecret, options={})
11
+ @ctoken, @csecret, @consumer_options = ctoken, csecret, {}
12
+ end
13
+
14
+ def consumer
15
+ @consumer ||= ::OAuth::Consumer.new(@ctoken, @csecret, {:site => 'http://muddy.it'}.merge(consumer_options))
16
+ end
17
+
18
+ def set_callback_url(url)
19
+ clear_request_token
20
+ request_token(:oauth_callback => url)
21
+ end
22
+
23
+ # Note: If using oauth with a web app, be sure to provide :oauth_callback.
24
+ # Options:
25
+ # :oauth_callback => String, url that twitter should redirect to
26
+ def request_token(options={})
27
+ @request_token ||= consumer.get_request_token(options)
28
+ end
29
+
30
+ def authorize_from_request(rtoken, rsecret)
31
+ request_token = ::OAuth::RequestToken.new(consumer, rtoken, rsecret)
32
+ access_token = request_token.get_access_token()
33
+ @atoken, @asecret = access_token.token, access_token.secret
34
+ end
35
+
36
+ def access_token
37
+ @access_token ||= ::OAuth::AccessToken.new(consumer, @atoken, @asecret)
38
+ end
39
+
40
+ def authorize_from_access(atoken, asecret)
41
+ @atoken, @asecret = atoken, asecret
42
+ end
43
+
44
+ private
45
+ def clear_request_token
46
+ @request_token = nil
47
+ end
48
+ end
49
+ end
@@ -1,12 +1,12 @@
1
1
  class Muddyit::Sites::Site::Entities::Entity < Muddyit::Generic
2
2
 
3
- def classification
4
- unless @attributes[:type]
5
- # We merge here as we don't want to overwrite a entity specific confidence score
6
- @attributes.merge!(self.fetch)
7
- end
8
- @attributes[:type]
9
- end
3
+ # def classification
4
+ # unless @attributes[:type]
5
+ # # We merge here as we don't want to overwrite a entity specific confidence score
6
+ # @attributes.merge!(self.fetch)
7
+ # end
8
+ # @attributes[:type]
9
+ # end
10
10
 
11
11
  # retrieve entities related to the specified entity within the site entities collection
12
12
  #
@@ -27,7 +27,7 @@ class Muddyit::Sites::Site::Entities::Entity < Muddyit::Generic
27
27
 
28
28
  protected
29
29
  def fetch
30
- api_url = "/sites/#{@attributes[:site][:token]}/entities/#{Digest::MD5.hexdigest(@attributes[:uri])}"
30
+ api_url = "/sites/#{@attributes[:site].token}/entities/#{Digest::MD5.hexdigest(@attributes[:uri])}"
31
31
  response = @muddyit.send_request(api_url, :get)
32
32
  response.nested_symbolize_keys!
33
33
  end
@@ -79,7 +79,7 @@ class Muddyit::Sites::Site::Pages::Page < Muddyit::Generic
79
79
  results = []
80
80
  if @attributes.has_key?(:entities)
81
81
  @attributes[:entities].each do |result|
82
- results.push Muddyit::Sites::Site::Entities::Entity.new(@muddyit, result)
82
+ results.push Muddyit::Sites::Site::Entities::Entity.new(@muddyit, result.merge!(:site => @attributes[:site]))
83
83
  end
84
84
  @attributes[:entities] = results
85
85
  end
data/lib/muddyit_fu.rb CHANGED
@@ -6,6 +6,7 @@ require 'json'
6
6
  #gem 'monkeyhelper-oauth', :lib => 'lib/oauth'
7
7
  require 'oauth/consumer'
8
8
  require 'digest/md5'
9
+ require 'forwardable'
9
10
 
10
11
  require 'pp'
11
12
 
@@ -46,7 +47,7 @@ class Hash
46
47
  end
47
48
 
48
49
  # base must load first
49
- %w(base errors generic sites entities sites/site sites/pages sites/pages/page sites/pages/page/extracted_content sites/entities sites/entities/entity).each do |file|
50
+ %w(base oauth errors generic sites entities sites/site sites/pages sites/pages/page sites/pages/page/extracted_content sites/entities sites/entities/entity).each do |file|
50
51
  require File.join(File.dirname(__FILE__), 'muddyit', file)
51
52
  end
52
53
 
data/muddyit_fu.gemspec CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = %q{muddyit_fu}
5
- s.version = "0.2.6"
5
+ s.version = "0.2.8"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["rattle"]
9
- s.date = %q{2009-11-04}
9
+ s.date = %q{2009-11-10}
10
10
  s.email = %q{support[at]muddy.it}
11
11
  s.extra_rdoc_files = [
12
12
  "LICENSE",
@@ -19,10 +19,13 @@ Gem::Specification.new do |s|
19
19
  "README.rdoc",
20
20
  "Rakefile",
21
21
  "VERSION",
22
+ "examples/newsindexer.rb",
23
+ "examples/oauth.rb",
22
24
  "lib/muddyit/base.rb",
23
25
  "lib/muddyit/entities.rb",
24
26
  "lib/muddyit/errors.rb",
25
27
  "lib/muddyit/generic.rb",
28
+ "lib/muddyit/oauth.rb",
26
29
  "lib/muddyit/sites.rb",
27
30
  "lib/muddyit/sites/entities.rb",
28
31
  "lib/muddyit/sites/entities/entity.rb",
@@ -38,6 +41,10 @@ Gem::Specification.new do |s|
38
41
  s.require_paths = ["lib"]
39
42
  s.rubygems_version = %q{1.3.5}
40
43
  s.summary = %q{Provides a ruby interface to muddy.it}
44
+ s.test_files = [
45
+ "examples/newsindexer.rb",
46
+ "examples/oauth.rb"
47
+ ]
41
48
 
42
49
  if s.respond_to? :specification_version then
43
50
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muddyit_fu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - rattle
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-04 00:00:00 +00:00
12
+ date: 2009-11-10 00:00:00 +00:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -48,10 +48,13 @@ files:
48
48
  - README.rdoc
49
49
  - Rakefile
50
50
  - VERSION
51
+ - examples/newsindexer.rb
52
+ - examples/oauth.rb
51
53
  - lib/muddyit/base.rb
52
54
  - lib/muddyit/entities.rb
53
55
  - lib/muddyit/errors.rb
54
56
  - lib/muddyit/generic.rb
57
+ - lib/muddyit/oauth.rb
55
58
  - lib/muddyit/sites.rb
56
59
  - lib/muddyit/sites/entities.rb
57
60
  - lib/muddyit/sites/entities/entity.rb
@@ -89,5 +92,6 @@ rubygems_version: 1.3.5
89
92
  signing_key:
90
93
  specification_version: 3
91
94
  summary: Provides a ruby interface to muddy.it
92
- test_files: []
93
-
95
+ test_files:
96
+ - examples/newsindexer.rb
97
+ - examples/oauth.rb