markauskas-googlereader 0.1.0 → 0.1.1

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/.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