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 +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 }
|