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 +1 -0
- data/Rakefile +10 -0
- data/init.rb +1 -0
- data/lib/google/reader/base.rb +7 -2
- data/lib/google/reader/stream.rb +18 -0
- data/lib/google/reader/version.rb +1 -1
- data/lib/google/reader.rb +5 -3
- data/lib/googlereader.rb +1 -0
- data/markauskas-googlereader.gemspec +16 -19
- data/test/.credentials.sample.yml +3 -0
- data/test/googlereader_test.rb +58 -0
- data/test/test_helper.rb +5 -1
- metadata +29 -18
- data/History.txt +0 -10
- data/Todo.txt +0 -7
- data/examples/base.rb +0 -10
- data/examples/counts.rb +0 -12
- data/examples/labels.rb +0 -20
- data/examples/preferences.rb +0 -14
- data/examples/search.rb +0 -13
- data/examples/subscriptions.rb +0 -9
- data/test/test_googlereader.rb +0 -11
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'
|
data/lib/google/reader/base.rb
CHANGED
@@ -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
|
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.
|
8
|
-
gem 'googlebase', '>= 0.
|
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
|
-
|
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'
|
data/lib/googlereader.rb
ADDED
@@ -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.
|
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
|
+
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
|
-
"
|
18
|
+
".gitignore",
|
19
19
|
"License.txt",
|
20
20
|
"README.txt",
|
21
21
|
"Rakefile",
|
22
|
-
"
|
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
|
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/
|
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,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
|
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.
|
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
|
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
|
-
-
|
55
|
+
- .gitignore
|
36
56
|
- License.txt
|
37
57
|
- README.txt
|
38
58
|
- Rakefile
|
39
|
-
-
|
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
|
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/
|
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 }
|
data/examples/preferences.rb
DELETED
@@ -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 }
|
data/examples/subscriptions.rb
DELETED
@@ -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 }
|