ricepaper 0.0.1 → 0.0.2
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.txt +3 -1
- data/Rakefile +41 -0
- data/VERSION +1 -0
- data/examples/add_sites.rb +18 -0
- data/examples/authentication_test.rb +14 -0
- data/lib/ricepaper.rb +60 -0
- data/ricepaper.gemspec +47 -0
- metadata +12 -4
data/README.txt
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
RicePaper is a tiny little command-line utility to post URLs to
|
|
2
2
|
InstantPaper. It also works as a Ruby library in a pinch also.
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
See the examples/ directory for example usage, or use
|
|
5
|
+
'ricepaper -h' for command-line usage.
|
|
6
|
+
|
data/Rakefile
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
begin
|
|
2
|
+
require 'jeweler'
|
|
3
|
+
Jeweler::Tasks.new do |gemspec|
|
|
4
|
+
gemspec.name = "ricepaper"
|
|
5
|
+
gemspec.summary = "A small library for adding URLs to Instapaper"
|
|
6
|
+
gemspec.email = "lee@writequit.org"
|
|
7
|
+
gemspec.homepage = "http://github.com/dakrone/ricepaper"
|
|
8
|
+
gemspec.description = "Ricepaper is a library that allows you to add URLs to Instapaper, either by using it as a CLI or as a Ruby library."
|
|
9
|
+
gemspec.authors = ["Lee Hinman"]
|
|
10
|
+
gemspec.rubyforge_project = 'writequit'
|
|
11
|
+
end
|
|
12
|
+
rescue LoadError
|
|
13
|
+
puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
begin
|
|
17
|
+
require 'rake/contrib/sshpublisher'
|
|
18
|
+
namespace :rubyforge do
|
|
19
|
+
|
|
20
|
+
desc "Release gem and RDoc documentation to RubyForge"
|
|
21
|
+
task :release => ["rubyforge:release:gem", "rubyforge:release:docs"]
|
|
22
|
+
|
|
23
|
+
namespace :release do
|
|
24
|
+
desc "Publish RDoc to RubyForge."
|
|
25
|
+
task :docs => [:rdoc] do
|
|
26
|
+
config = YAML.load(
|
|
27
|
+
File.read(File.expand_path('~/.rubyforge/user-config.yml'))
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
host = "#{config['username']}@rubyforge.org"
|
|
31
|
+
remote_dir = "/var/www/gforge-projects/ricepaper/"
|
|
32
|
+
local_dir = 'rdoc'
|
|
33
|
+
|
|
34
|
+
Rake::SshDirPublisher.new(host, remote_dir, local_dir).upload
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
rescue LoadError
|
|
39
|
+
puts "Rake SshDirPublisher is unavailable or your rubyforge environment is not configured."
|
|
40
|
+
end
|
|
41
|
+
|
data/VERSION
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.0.2
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Add sites to Instapaper using Ricepaper
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
require 'ricepaper'
|
|
7
|
+
|
|
8
|
+
rp = RicePaper.new("username", "password")
|
|
9
|
+
|
|
10
|
+
sites = [
|
|
11
|
+
"http://google.com",
|
|
12
|
+
"http://ruby-lang.org",
|
|
13
|
+
"http://instapaper.com"
|
|
14
|
+
]
|
|
15
|
+
|
|
16
|
+
sites.each { |site|
|
|
17
|
+
puts "Added #{site}." if rp.add(site)
|
|
18
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Test authenticating the user to Instapaper
|
|
4
|
+
#
|
|
5
|
+
|
|
6
|
+
require 'ricepaper'
|
|
7
|
+
|
|
8
|
+
rp = RicePaper.new("username", "password")
|
|
9
|
+
|
|
10
|
+
if rp.authenticate
|
|
11
|
+
puts "Authentication successfull."
|
|
12
|
+
else
|
|
13
|
+
puts "Authentication failed."
|
|
14
|
+
end
|
data/lib/ricepaper.rb
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
#
|
|
3
|
+
# Library for adding URLs to instapaper.
|
|
4
|
+
# by Matthew Lee Hinman (http://writequit.org)
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
require 'rubygems'
|
|
8
|
+
require 'rest_client'
|
|
9
|
+
|
|
10
|
+
# Encapsulation class
|
|
11
|
+
|
|
12
|
+
class RicePaper
|
|
13
|
+
|
|
14
|
+
attr_accessor :username, :password, :apiurl
|
|
15
|
+
attr_reader :error
|
|
16
|
+
|
|
17
|
+
def initialize(username, password, apiurl = "https://www.instapaper.com/api/")
|
|
18
|
+
@username = username
|
|
19
|
+
@password = password
|
|
20
|
+
@apiurl = apiurl
|
|
21
|
+
@error = ""
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# Handle Errors - sets the error code appropriately
|
|
25
|
+
# so that it can be reported
|
|
26
|
+
def handle_error(err)
|
|
27
|
+
result = /(\d+)/.match(err.to_s)[1]
|
|
28
|
+
@error = case result
|
|
29
|
+
when "400" then "Bad Request"
|
|
30
|
+
when "403" then "Invalid username of password"
|
|
31
|
+
when "500" then "There was a server error. Please try again later."
|
|
32
|
+
else "An unknown error occured"
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Authenticate with instapaper, returning true if auth
|
|
37
|
+
# was successful, false otherwise
|
|
38
|
+
def authenticate
|
|
39
|
+
RestClient.post @apiurl + "authenticate",
|
|
40
|
+
:username => @username,
|
|
41
|
+
:password => @password
|
|
42
|
+
rescue RestClient::RequestFailed
|
|
43
|
+
handle_error($!)
|
|
44
|
+
return false
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# Add a url to instapaper, given a url and an optional
|
|
48
|
+
# title; if no title is given, auto-title by instapaper
|
|
49
|
+
def add(url, title=nil)
|
|
50
|
+
result = RestClient.post @apiurl + "add",
|
|
51
|
+
:username => @username,
|
|
52
|
+
:password => @password,
|
|
53
|
+
:url => url,
|
|
54
|
+
:title => title,
|
|
55
|
+
:"auto-title" => title.nil? ? "1" : "0"
|
|
56
|
+
rescue RestClient::RequestFailed
|
|
57
|
+
handle_error($!)
|
|
58
|
+
return false
|
|
59
|
+
end
|
|
60
|
+
end
|
data/ricepaper.gemspec
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = %q{ricepaper}
|
|
5
|
+
s.version = "0.0.2"
|
|
6
|
+
|
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
|
+
s.authors = ["Lee Hinman"]
|
|
9
|
+
s.date = %q{2009-07-21}
|
|
10
|
+
s.default_executable = %q{ricepaper}
|
|
11
|
+
s.description = %q{Ricepaper is a library that allows you to add URLs to Instapaper, either by using it as a CLI or as a Ruby library.}
|
|
12
|
+
s.email = %q{lee@writequit.org}
|
|
13
|
+
s.executables = ["ricepaper"]
|
|
14
|
+
s.extra_rdoc_files = [
|
|
15
|
+
"README.txt"
|
|
16
|
+
]
|
|
17
|
+
s.files = [
|
|
18
|
+
"README.txt",
|
|
19
|
+
"Rakefile",
|
|
20
|
+
"VERSION",
|
|
21
|
+
"bin/ricepaper",
|
|
22
|
+
"examples/add_sites.rb",
|
|
23
|
+
"examples/authentication_test.rb",
|
|
24
|
+
"lib/ricepaper.rb",
|
|
25
|
+
"ricepaper.gemspec"
|
|
26
|
+
]
|
|
27
|
+
s.homepage = %q{http://github.com/dakrone/ricepaper}
|
|
28
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
|
29
|
+
s.require_paths = ["lib"]
|
|
30
|
+
s.rubyforge_project = %q{writequit}
|
|
31
|
+
s.rubygems_version = %q{1.3.4}
|
|
32
|
+
s.summary = %q{A small library for adding URLs to Instapaper}
|
|
33
|
+
s.test_files = [
|
|
34
|
+
"examples/add_sites.rb",
|
|
35
|
+
"examples/authentication_test.rb"
|
|
36
|
+
]
|
|
37
|
+
|
|
38
|
+
if s.respond_to? :specification_version then
|
|
39
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
40
|
+
s.specification_version = 3
|
|
41
|
+
|
|
42
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
43
|
+
else
|
|
44
|
+
end
|
|
45
|
+
else
|
|
46
|
+
end
|
|
47
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ricepaper
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Lee Hinman
|
|
@@ -9,7 +9,7 @@ autorequire:
|
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
11
|
|
|
12
|
-
date: 2009-
|
|
12
|
+
date: 2009-07-21 00:00:00 -06:00
|
|
13
13
|
default_executable: ricepaper
|
|
14
14
|
dependencies: []
|
|
15
15
|
|
|
@@ -23,6 +23,13 @@ extra_rdoc_files:
|
|
|
23
23
|
- README.txt
|
|
24
24
|
files:
|
|
25
25
|
- README.txt
|
|
26
|
+
- Rakefile
|
|
27
|
+
- VERSION
|
|
28
|
+
- bin/ricepaper
|
|
29
|
+
- examples/add_sites.rb
|
|
30
|
+
- examples/authentication_test.rb
|
|
31
|
+
- lib/ricepaper.rb
|
|
32
|
+
- ricepaper.gemspec
|
|
26
33
|
has_rdoc: true
|
|
27
34
|
homepage: http://github.com/dakrone/ricepaper
|
|
28
35
|
licenses: []
|
|
@@ -51,5 +58,6 @@ rubygems_version: 1.3.4
|
|
|
51
58
|
signing_key:
|
|
52
59
|
specification_version: 3
|
|
53
60
|
summary: A small library for adding URLs to Instapaper
|
|
54
|
-
test_files:
|
|
55
|
-
|
|
61
|
+
test_files:
|
|
62
|
+
- examples/add_sites.rb
|
|
63
|
+
- examples/authentication_test.rb
|