markauskas-googlereader 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1 @@
1
+ pkg/
data/Rakefile CHANGED
@@ -9,6 +9,8 @@ begin
9
9
  gemspec.email = "info@tamole.net"
10
10
  gemspec.homepage = "http://github.com/markauskas/googlereader"
11
11
  gemspec.authors = ["Tomas Markauskas", "John Nunemaker"]
12
+ gemspec.add_dependency('atom', '>= 0.3')
13
+ gemspec.add_dependency('json', '>= 1.2.0')
12
14
  gemspec.add_dependency('markauskas-googlebase', '>= 0.3.0')
13
15
  end
14
16
 
@@ -16,3 +18,11 @@ begin
16
18
  rescue LoadError
17
19
  puts "Jeweler not available. Install it with: gem install jeweler"
18
20
  end
21
+
22
+ require 'rake'
23
+ require 'rake/testtask'
24
+ Rake::TestTask.new(:test) do |test|
25
+ test.pattern = 'test/**/*_test.rb'
26
+ end
27
+
28
+ task :default => :test
data/init.rb ADDED
@@ -0,0 +1 @@
1
+ require 'google/reader'
@@ -1,7 +1,12 @@
1
1
  module Google
2
- module Reader
2
+ module Reader
3
3
  class Base < Base
4
- class << self
4
+ class << self
5
+ def normalize_feed_url(feed_url)
6
+ feed_url[0,5] = "" if feed_url[0,5] == "feed/"
7
+ feed_url
8
+ end
9
+
5
10
  def parse(atom_feed)
6
11
  Atom::Feed.new(atom_feed)
7
12
  end
@@ -0,0 +1,18 @@
1
+ module Google
2
+ module Reader
3
+ class Stream < Base
4
+ def self.fetch(feed_url, count = 20, o = {})
5
+ feed_url = normalize_feed_url(feed_url)
6
+ url = sprintf(JSON_FEED_URL, CGI.escape(feed_url))
7
+ options = {
8
+ :query_hash => {
9
+ :ck => Time.now.to_i,
10
+ :n => count
11
+ }
12
+ }.merge(o)
13
+ json = get(url, options)
14
+ data = JSON.parse(json)
15
+ end
16
+ end
17
+ end
18
+ end
@@ -3,7 +3,7 @@ module Google #:nodoc:
3
3
  module VERSION #:nodoc:
4
4
  MAJOR = 0
5
5
  MINOR = 1
6
- TINY = 0
6
+ TINY = 1
7
7
 
8
8
  STRING = [MAJOR, MINOR, TINY].join('.')
9
9
  end
data/lib/google/reader.rb CHANGED
@@ -4,8 +4,8 @@ require 'net/http'
4
4
  require 'rubygems'
5
5
 
6
6
  gem 'atom', '>= 0.3'
7
- gem 'json', '>= 1.1.1'
8
- gem 'googlebase', '>= 0.1.3'
7
+ gem 'json', '>= 1.2.0'
8
+ gem 'markauskas-googlebase', '>= 0.3.0'
9
9
 
10
10
  require 'atom'
11
11
  require 'json'
@@ -15,6 +15,7 @@ require 'google/reader/count'
15
15
  require 'google/reader/label'
16
16
  require 'google/reader/preference'
17
17
  require 'google/reader/search'
18
+ require 'google/reader/stream'
18
19
  require 'google/reader/subscription'
19
20
 
20
21
  module Google
@@ -25,7 +26,8 @@ module Google
25
26
  SEARCH_CONTENTS_URL = READER_URL + "/api/0/stream/items/contents"
26
27
  SUBSCRIPTION_LIST_URL = READER_URL + '/api/0/subscription/list?output=json'
27
28
  SUBSCRIPTION_EDIT_URL = READER_URL + '/api/0/subscription/edit'
28
- FEED_URL = READER_URL + '/atom/feed/%s'
29
+ ATOM_FEED_URL = READER_URL + '/atom/feed/%s'
30
+ JSON_FEED_URL = READER_URL + '/api/0/stream/contents/feed/%s'
29
31
  LABELS_URL = READER_URL + '/api/0/tag/list?output=json'
30
32
  LABEL_URL = READER_URL + '/atom/user/-/label/%s'
31
33
  PREFERENCE_URL = READER_URL + '/api/0/preference/list?output=json'
@@ -0,0 +1 @@
1
+ require 'google/reader'
@@ -5,37 +5,34 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{markauskas-googlereader}
8
- s.version = "0.1.0"
8
+ s.version = "0.1.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Tomas Markauskas", "John Nunemaker"]
12
- s.date = %q{2010-01-12}
12
+ s.date = %q{2010-02-01}
13
13
  s.email = %q{info@tamole.net}
14
14
  s.extra_rdoc_files = [
15
15
  "README.txt"
16
16
  ]
17
17
  s.files = [
18
- "History.txt",
18
+ ".gitignore",
19
19
  "License.txt",
20
20
  "README.txt",
21
21
  "Rakefile",
22
- "Todo.txt",
23
- "examples/base.rb",
24
- "examples/counts.rb",
25
- "examples/labels.rb",
26
- "examples/preferences.rb",
27
- "examples/search.rb",
28
- "examples/subscriptions.rb",
22
+ "init.rb",
29
23
  "lib/google/reader.rb",
30
24
  "lib/google/reader/base.rb",
31
25
  "lib/google/reader/count.rb",
32
26
  "lib/google/reader/label.rb",
33
27
  "lib/google/reader/preference.rb",
34
28
  "lib/google/reader/search.rb",
29
+ "lib/google/reader/stream.rb",
35
30
  "lib/google/reader/subscription.rb",
36
31
  "lib/google/reader/version.rb",
32
+ "lib/googlereader.rb",
37
33
  "markauskas-googlereader.gemspec",
38
- "test/test_googlereader.rb",
34
+ "test/.credentials.sample.yml",
35
+ "test/googlereader_test.rb",
39
36
  "test/test_helper.rb"
40
37
  ]
41
38
  s.homepage = %q{http://github.com/markauskas/googlereader}
@@ -44,14 +41,8 @@ Gem::Specification.new do |s|
44
41
  s.rubygems_version = %q{1.3.5}
45
42
  s.summary = %q{Ruby wrapper for Google Reader}
46
43
  s.test_files = [
47
- "test/test_googlereader.rb",
48
- "test/test_helper.rb",
49
- "examples/base.rb",
50
- "examples/counts.rb",
51
- "examples/labels.rb",
52
- "examples/preferences.rb",
53
- "examples/search.rb",
54
- "examples/subscriptions.rb"
44
+ "test/googlereader_test.rb",
45
+ "test/test_helper.rb"
55
46
  ]
56
47
 
57
48
  if s.respond_to? :specification_version then
@@ -59,11 +50,17 @@ Gem::Specification.new do |s|
59
50
  s.specification_version = 3
60
51
 
61
52
  if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
53
+ s.add_runtime_dependency(%q<atom>, [">= 0.3"])
54
+ s.add_runtime_dependency(%q<json>, [">= 1.2.0"])
62
55
  s.add_runtime_dependency(%q<markauskas-googlebase>, [">= 0.3.0"])
63
56
  else
57
+ s.add_dependency(%q<atom>, [">= 0.3"])
58
+ s.add_dependency(%q<json>, [">= 1.2.0"])
64
59
  s.add_dependency(%q<markauskas-googlebase>, [">= 0.3.0"])
65
60
  end
66
61
  else
62
+ s.add_dependency(%q<atom>, [">= 0.3"])
63
+ s.add_dependency(%q<json>, [">= 1.2.0"])
67
64
  s.add_dependency(%q<markauskas-googlebase>, [">= 0.3.0"])
68
65
  end
69
66
  end
@@ -0,0 +1,3 @@
1
+ # Copy this file to .credentials.yml and fill in your details
2
+ username: username@gmail.com
3
+ password: password123
@@ -0,0 +1,58 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'cgi'
3
+
4
+ class GooglereaderTest < Test::Unit::TestCase
5
+ def setup
6
+ end
7
+
8
+ def test_should_get_google_reader_data
9
+ response = Google::Base.get('http://www.google.com/reader/api/0/user-info')
10
+ assert response =~ /userEmail/
11
+ assert response =~ Regexp.new(Regexp.escape(GOOGLE_CONFIG['username']))
12
+ assert response =~ /userProfileId/
13
+ assert response =~ /userId/
14
+ end
15
+
16
+ def test_some_urls
17
+ feeds = [
18
+ "feed/http://feeds.feedburner.com/blogspot/MKuf",
19
+ "feed/http://feeds.feedburner.com/blogspot/MKuf?format=xml",
20
+ "feed/http://pukomuko.esu.lt/?item=rss"
21
+ ]
22
+ base_url = 'http://www.google.com/reader/api/0/stream/contents/'
23
+
24
+ feeds.each do |feed_url|
25
+ # if feed_url contains a question mark (`?') it has to be escaped since
26
+ # otherwise it would be interpreted as a part of the google reader url
27
+ # and not the feed_url
28
+ url = base_url + CGI.escape(feed_url)
29
+ options = { :query_hash => { :r => :n, :n => 1 }, :qsi => '?'}
30
+ response = Google::Base.get(url, options)
31
+ assert response =~ /feed\/http:\/\//
32
+ assert response =~ /id/
33
+ assert response =~ /title/
34
+ assert response =~ /description/
35
+ end
36
+ end
37
+
38
+ def test_some_feeds
39
+ feeds = [
40
+ "feed/http://feeds.feedburner.com/blogspot/MKuf",
41
+ "feed/http://feeds.feedburner.com/blogspot/MKuf?format=xml",
42
+ "feed/http://pukomuko.esu.lt/?item=rss"
43
+ ]
44
+ feeds.each do |feed_url|
45
+ # if feed_url contains a question mark (`?') it has to be escaped since
46
+ # otherwise it would be interpreted as a part of the google reader url
47
+ # and not the feed_url
48
+ response = Google::Reader::Stream.fetch(feed_url, 1)
49
+ assert_not_nil response
50
+ assert_not_nil response['items']
51
+ assert_not_nil response['title']
52
+ assert_not_nil response['description']
53
+ assert_not_nil response['updated']
54
+ assert response.is_a?Hash
55
+ assert response['items'].is_a?Array
56
+ end
57
+ end
58
+ end
data/test/test_helper.rb CHANGED
@@ -1,2 +1,6 @@
1
1
  require 'test/unit'
2
- require File.dirname(__FILE__) + '/../lib/googlereader'
2
+ require 'yaml'
3
+ require File.dirname(__FILE__) + '/../lib/google/reader'
4
+
5
+ GOOGLE_CONFIG = YAML::load(open(File.dirname(__FILE__) + '/.credentials.yml'))
6
+ Google::Base.establish_connection(GOOGLE_CONFIG['username'], GOOGLE_CONFIG['password'])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: markauskas-googlereader
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Markauskas
@@ -10,9 +10,29 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-01-12 00:00:00 +01:00
13
+ date: 2010-02-01 00:00:00 +01:00
14
14
  default_executable:
15
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: atom
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: "0.3"
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: json
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 1.2.0
35
+ version:
16
36
  - !ruby/object:Gem::Dependency
17
37
  name: markauskas-googlebase
18
38
  type: :runtime
@@ -32,27 +52,24 @@ extensions: []
32
52
  extra_rdoc_files:
33
53
  - README.txt
34
54
  files:
35
- - History.txt
55
+ - .gitignore
36
56
  - License.txt
37
57
  - README.txt
38
58
  - Rakefile
39
- - Todo.txt
40
- - examples/base.rb
41
- - examples/counts.rb
42
- - examples/labels.rb
43
- - examples/preferences.rb
44
- - examples/search.rb
45
- - examples/subscriptions.rb
59
+ - init.rb
46
60
  - lib/google/reader.rb
47
61
  - lib/google/reader/base.rb
48
62
  - lib/google/reader/count.rb
49
63
  - lib/google/reader/label.rb
50
64
  - lib/google/reader/preference.rb
51
65
  - lib/google/reader/search.rb
66
+ - lib/google/reader/stream.rb
52
67
  - lib/google/reader/subscription.rb
53
68
  - lib/google/reader/version.rb
69
+ - lib/googlereader.rb
54
70
  - markauskas-googlereader.gemspec
55
- - test/test_googlereader.rb
71
+ - test/.credentials.sample.yml
72
+ - test/googlereader_test.rb
56
73
  - test/test_helper.rb
57
74
  has_rdoc: true
58
75
  homepage: http://github.com/markauskas/googlereader
@@ -83,11 +100,5 @@ signing_key:
83
100
  specification_version: 3
84
101
  summary: Ruby wrapper for Google Reader
85
102
  test_files:
86
- - test/test_googlereader.rb
103
+ - test/googlereader_test.rb
87
104
  - test/test_helper.rb
88
- - examples/base.rb
89
- - examples/counts.rb
90
- - examples/labels.rb
91
- - examples/preferences.rb
92
- - examples/search.rb
93
- - examples/subscriptions.rb
data/History.txt DELETED
@@ -1,10 +0,0 @@
1
- * 0.0.4
2
- - got search working by using a raw post instead of a fancy set_form_data
3
- * 0.0.3
4
- - updated manifest to include all files, 0.0.2 release was not up to date
5
- * 0.0.2
6
- - added wrapper for subscriptions
7
- - added wrapper for preferences
8
- - added Base#get_token for retrieving tokens from google
9
- * 0.0.1
10
- - labels and counts are working
data/Todo.txt DELETED
@@ -1,7 +0,0 @@
1
- * 0.0.5 Feed (ie: Feed.new('http://feeds.feedburner.com/johnnunemaker'))
2
- * 0.0.6 State (ie: State.new('read').entries)
3
-
4
- == Edit API
5
- ** 0.0.8 Subscription-Edit (add and remove subscriptions)
6
- ** 0.1.0 Edit-Tag (mark items as read, starred, shared, etc.)
7
- ** Disable-Tag (no idea what this is)
data/examples/base.rb DELETED
@@ -1,10 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '/../lib')
2
- require 'google/reader'
3
- require 'pp'
4
- require 'yaml'
5
-
6
- config = YAML::load(open("#{ENV['HOME']}/.google"))
7
- Google::Base.establish_connection(config[:email], config[:password])
8
-
9
- pp Google::Reader::Base.get_token
10
- pp Google::Reader::Base.user_info
data/examples/counts.rb DELETED
@@ -1,12 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '/../lib')
2
- require 'google/reader'
3
-
4
- require 'pp'
5
- require 'yaml'
6
- config = YAML::load(open("#{ENV['HOME']}/.google"))
7
-
8
- Google::Base.establish_connection(config[:email], config[:password])
9
-
10
- # pp Google::Reader::Count.all
11
- pp Google::Reader::Count.labels
12
- # pp Google::Reader::Count.feeds
data/examples/labels.rb DELETED
@@ -1,20 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '/../lib')
2
- require 'google/reader'
3
- require 'pp'
4
- require 'yaml'
5
-
6
- config = YAML::load(open("#{ENV['HOME']}/.google"))
7
- Google::Base.establish_connection(config[:email], config[:password])
8
- # Google::Base.set_connection(Google::Base.new(config[:email], config[:password]))
9
-
10
- puts '', '=Labels='
11
- labels = Google::Reader::Label.all
12
- pp labels
13
-
14
- # puts '', '==Ruby on Rails=='
15
- # unread = Google::Reader::Label.new('ruby-on-rails').entries(:unread, :n => 5)
16
- # pp unread.first
17
- #
18
- # puts '', '===Using Continuation==='
19
- # more_unread = Google::Reader::Label.new('links').entries(:unread, :n => 5, :c => unread.continuation)
20
- # more_unread.each { |p| puts p.title }
@@ -1,14 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '/../lib')
2
- require 'google/reader'
3
- require 'pp'
4
- require 'yaml'
5
-
6
- config = YAML::load(open("#{ENV['HOME']}/.google"))
7
- Google::Base.establish_connection(config[:email], config[:password])
8
-
9
- pp Google::Reader::Preference.available
10
- pp Google::Reader::Preference[:design]
11
- pp Google::Reader::Preference[:mobile_use_transcoder]
12
- pp Google::Reader::Preference[:mobile_num_entries]
13
-
14
- pp Google::Reader::Preference.stream
data/examples/search.rb DELETED
@@ -1,13 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '/../lib')
2
- require 'google/reader'
3
- require 'yaml'
4
- require 'pp'
5
-
6
- config = YAML::load(open("#{ENV['HOME']}/.google"))
7
- Google::Base.establish_connection(config[:email], config[:password])
8
-
9
- search = Google::Reader::Search.new('john nunemaker')
10
- results = search.results(:start => 0)
11
- puts results.total
12
- results.each { |r| puts r.title }
13
- search.results(:start => 20).each { |r| puts r.title }
@@ -1,9 +0,0 @@
1
- $:.unshift File.join(File.dirname(__FILE__), '/../lib')
2
- require 'google/reader'
3
- require 'pp'
4
- require 'yaml'
5
-
6
- config = YAML::load(open("#{ENV['HOME']}/.google"))
7
- Google::Base.establish_connection(config[:email], config[:password])
8
-
9
- pp Google::Reader::Subscription.all.detect { |s| s.categories.size > 1 }
@@ -1,11 +0,0 @@
1
- # require File.dirname(__FILE__) + '/test_helper.rb'
2
- #
3
- # class TestGooglereader < Test::Unit::TestCase
4
- #
5
- # def setup
6
- # end
7
- #
8
- # def test_truth
9
- # assert true
10
- # end
11
- # end