rscribd 0.0.2 → 0.0.3
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/History.txt +3 -0
- data/Manifest.txt +14 -0
- data/README.txt +83 -0
- data/Rakefile +18 -0
- data/lib/api.rb +219 -0
- data/lib/doc.rb +233 -0
- data/lib/exceptions.rb +33 -0
- data/lib/multipart.rb +39 -0
- data/lib/resource.rb +158 -0
- data/lib/rscribd.rb +26 -0
- data/lib/user.rb +142 -0
- data/sample/01_upload.rb +47 -0
- data/sample/02_user.rb +44 -0
- data/sample/test.txt +1 -1
- metadata +73 -50
- data/lib/scribd/base.rb +0 -381
- data/lib/scribd/docs.rb +0 -246
- data/lib/scribd/search.rb +0 -85
- data/lib/scribd.rb +0 -3
- data/sample/01-docs_upload-text.rb +0 -30
- data/sample/02-docs_upload-binary.rb +0 -32
- data/sample/03-docs_uploadFromUrl.rb +0 -30
- data/sample/04-docs_changeSettings.rb +0 -53
- data/sample/05-docs_getConversionStatus.rb +0 -39
- data/sample/test.gif +0 -0
data/lib/resource.rb
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
module Scribd
|
2
|
+
|
3
|
+
# Describes a remote object that the Scribd API lets you interact with. All
|
4
|
+
# such objects are modeled after the <tt>ActiveRecord</tt> ORM approach.
|
5
|
+
#
|
6
|
+
# The Resource superclass is never directly used; you will interact with
|
7
|
+
# actual Scribd entities like Document and User, which inherit functionality
|
8
|
+
# from this superclass.
|
9
|
+
#
|
10
|
+
# Objects have one or more attributes (also called fields) that can be
|
11
|
+
# accessed directly through synonymous methods. For instance, if your resource
|
12
|
+
# has an attribute +title+, you can get and set the title like so:
|
13
|
+
#
|
14
|
+
# obj.title #=> "Title"
|
15
|
+
# obj.title = "New Title"
|
16
|
+
#
|
17
|
+
# The specific attributes that a Document or a User or any other resource has
|
18
|
+
# are not stored locally. They are downloaded remotely whenever a resource is
|
19
|
+
# loaded from the remote server. Thus, you can modify any attribute you want,
|
20
|
+
# though it may or may not have any effect:
|
21
|
+
#
|
22
|
+
# doc = Scribd::Document.find(:text => 'foo').first
|
23
|
+
# doc.self_destruct_in = 5.seconds #=> Does not produce error
|
24
|
+
# doc.save #=> Has no effect, since that attribute doesn't exist. Your document does not explode.
|
25
|
+
#
|
26
|
+
# As shown above, when you make changes to an attribute, these changes are not
|
27
|
+
# immediately reflected remotely. They are only stored locally until such time
|
28
|
+
# as save is called. When you call save, the remote object is updated to
|
29
|
+
# reflect the changes you made in its API instance.
|
30
|
+
|
31
|
+
class Resource
|
32
|
+
|
33
|
+
# Initializes instance variables.
|
34
|
+
|
35
|
+
def initialize(options={})
|
36
|
+
@saved = false
|
37
|
+
@created = false
|
38
|
+
@attributes = Hash.new
|
39
|
+
end
|
40
|
+
|
41
|
+
# Creates a new instance with the given attributes, saves it immediately,
|
42
|
+
# and returns it. You should call its created? method if you need to verify
|
43
|
+
# that the object was saved successfully.
|
44
|
+
|
45
|
+
def self.create(options={})
|
46
|
+
obj = new(options)
|
47
|
+
obj.save
|
48
|
+
obj
|
49
|
+
end
|
50
|
+
|
51
|
+
# Throws NotImplementedError by default.
|
52
|
+
|
53
|
+
def save
|
54
|
+
raise NotImplementedError, "Cannot save #{self.class.to_s} objects"
|
55
|
+
end
|
56
|
+
|
57
|
+
# Throws NotImplementedError by default.
|
58
|
+
|
59
|
+
def self.find(options)
|
60
|
+
raise NotImplementedError, "Cannot find #{self.class.to_s} objects"
|
61
|
+
end
|
62
|
+
|
63
|
+
# Throws NotImplementedError by default.
|
64
|
+
|
65
|
+
def destroy
|
66
|
+
raise NotImplementedError, "Cannot destroy #{self.class.to_s} objects"
|
67
|
+
end
|
68
|
+
|
69
|
+
# Returns true if this document's attributes have been updated remotely, and
|
70
|
+
# thus their local values reflect the remote values.
|
71
|
+
|
72
|
+
def saved?
|
73
|
+
@saved
|
74
|
+
end
|
75
|
+
|
76
|
+
# Returns true if this document has been created remotely, and corresponds
|
77
|
+
# to a document on the Scribd website.
|
78
|
+
|
79
|
+
def created?
|
80
|
+
@created
|
81
|
+
end
|
82
|
+
|
83
|
+
# Returns the value of an attribute, referenced by string or symbol, or nil
|
84
|
+
# if the attribute cannot be read.
|
85
|
+
|
86
|
+
def read_attribute(attribute)
|
87
|
+
raise ArgumentError, "Attribute must respond to to_sym" unless attribute.respond_to? :to_sym
|
88
|
+
@attributes[attribute.to_sym]
|
89
|
+
end
|
90
|
+
|
91
|
+
# Returns a map of attributes to their values, given an array of attributes,
|
92
|
+
# referenced by string or symbol. Attributes that cannot be read are
|
93
|
+
# ignored.
|
94
|
+
|
95
|
+
def read_attributes(attributes)
|
96
|
+
raise ArgumentError, "Attributes must be listed in an Enumeration" unless attributes.kind_of? Enumeration
|
97
|
+
raise ArgumentError, "All attributes must respond to to_sym" unless attributes.all? { |a| a.respond_to? :to_sym }
|
98
|
+
keys = attributes.map(&:to_sym)
|
99
|
+
values = @attributes.values_at keys
|
100
|
+
keys.zip(values).to_hsh
|
101
|
+
end
|
102
|
+
|
103
|
+
# Assigns values to attributes. Takes a hash that specifies the
|
104
|
+
# attribute-value pairs to update. Does not perform a save. Non-writeable
|
105
|
+
# attributes are ignored.
|
106
|
+
|
107
|
+
def write_attributes(values)
|
108
|
+
raise ArgumentError, "Values must be specified through a hash of attributes" unless values.kind_of? Hash
|
109
|
+
raise ArgumentError, "All attributes must respond to to_sym" unless values.keys.all? { |a| a.respond_to? :to_sym }
|
110
|
+
@attributes.update values.map { |k,v| [ k.to_sym, v ] }.to_hsh
|
111
|
+
end
|
112
|
+
|
113
|
+
# Gets or sets attributes for the resource. Any named attribute can be
|
114
|
+
# retrieved for changed through a method call, even if it doesn't exist.
|
115
|
+
# Such attributes will be ignored and purged when the document is saved:
|
116
|
+
#
|
117
|
+
# doc = Scribd::Document.new
|
118
|
+
# doc.foobar #=> Returns nil
|
119
|
+
# doc.foobar = 12
|
120
|
+
# doc.foobar #=> Returns 12
|
121
|
+
# doc.save
|
122
|
+
# doc.foobar #=> Returns nil
|
123
|
+
#
|
124
|
+
# Because of this, no Scribd resource will ever raise +NoMethodError+.
|
125
|
+
|
126
|
+
def method_missing(meth, *args)
|
127
|
+
if meth.to_s =~ /(\w+)=/ then
|
128
|
+
raise ArgumentError, "Only one parameter can be passed to attribute=" unless args.size == 1
|
129
|
+
@attributes[$1.to_sym] = args[0]
|
130
|
+
else
|
131
|
+
@attributes[meth]
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
# Pretty-print for debugging output of Scribd resources.
|
136
|
+
|
137
|
+
def inspect #:nodoc:
|
138
|
+
"#<#{self.class.to_s} #{@attributes.select { |k, v| not v.nil? }.collect { |k,v| k.to_s + '=' + v.to_s }.join(', ')}>"
|
139
|
+
end
|
140
|
+
|
141
|
+
private
|
142
|
+
|
143
|
+
def load_attributes(xml)
|
144
|
+
@attributes.clear
|
145
|
+
xml.each_element do |element|
|
146
|
+
@attributes[element.name.to_sym] = if element.attributes['type'] == 'integer' then
|
147
|
+
element.text.to_i
|
148
|
+
elsif element.attributes['type'] == 'float' then
|
149
|
+
element.text.to_f
|
150
|
+
elsif element.attributes['type'] == 'symbol' then
|
151
|
+
element.text.to_sym
|
152
|
+
else
|
153
|
+
element.text
|
154
|
+
end
|
155
|
+
end
|
156
|
+
end
|
157
|
+
end
|
158
|
+
end
|
data/lib/rscribd.rb
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
class Hash #:nodoc:
|
4
|
+
# Taken from Rails, with appreciation to DHH
|
5
|
+
def stringify_keys
|
6
|
+
inject({}) do |options, (key, value)|
|
7
|
+
options[key.to_s] = value
|
8
|
+
options
|
9
|
+
end
|
10
|
+
end unless method_defined?(:stringify_keys)
|
11
|
+
end
|
12
|
+
|
13
|
+
class Array #:nodoc:
|
14
|
+
def to_hsh
|
15
|
+
h = Hash.new
|
16
|
+
each { |k, v| h[k] = v }
|
17
|
+
h
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
require 'multipart'
|
22
|
+
require 'exceptions'
|
23
|
+
require 'api'
|
24
|
+
require 'resource'
|
25
|
+
require 'doc'
|
26
|
+
require 'user'
|
data/lib/user.rb
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
module Scribd
|
2
|
+
|
3
|
+
# A user of the Scribd website. API programs can use this class to log in as a
|
4
|
+
# Scribd user, create new user accounts, and get information about the current
|
5
|
+
# user.
|
6
|
+
#
|
7
|
+
# An API program begins by logging into Scribd:
|
8
|
+
#
|
9
|
+
# user = Scribd::User.login 'login', 'pass'
|
10
|
+
#
|
11
|
+
# You can now access information about this user through direct method calls:
|
12
|
+
#
|
13
|
+
# user.name #=> 'Real Name'
|
14
|
+
#
|
15
|
+
# If, at any time, you would like to retrieve the Scribd::User instance for
|
16
|
+
# the currently logged-in user, simply call:
|
17
|
+
#
|
18
|
+
# user = Scribd::API.instance.user
|
19
|
+
#
|
20
|
+
# For information on a user's attributes, please consult the online API
|
21
|
+
# documentation at http://www.scribd.com/platform/documentation?method_name=user.login&subtab=api
|
22
|
+
#
|
23
|
+
# You can create a new account with the signup (a.k.a. create) method:
|
24
|
+
#
|
25
|
+
# user = Scribd::User.signup :username => 'testuser', :password => 'testpassword', :email => your@email.com
|
26
|
+
|
27
|
+
class User < Resource
|
28
|
+
|
29
|
+
# Creates a new, unsaved user with the given attributes. You can eventually
|
30
|
+
# use this record to create a new Scribd account.
|
31
|
+
|
32
|
+
def initialize(options={})
|
33
|
+
super
|
34
|
+
if options[:xml] then
|
35
|
+
load_attributes(options[:xml])
|
36
|
+
@saved = true
|
37
|
+
@created = true
|
38
|
+
else
|
39
|
+
@attributes = options
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# For new, unsaved records, creates a new Scribd user with the provided
|
44
|
+
# attributes, then logs in as that user. Currently modification of existing
|
45
|
+
# Scribd users is not supported. Throws a ResponseError if a remote error
|
46
|
+
# occurs.
|
47
|
+
|
48
|
+
def save
|
49
|
+
if not created? then
|
50
|
+
response = API.instance.send_request('user.signup', @attributes)
|
51
|
+
xml = response.get_elements('/rsp')[0]
|
52
|
+
load_attributes(xml)
|
53
|
+
API.instance.user = self
|
54
|
+
else
|
55
|
+
raise NotImplementedError, "Cannot update a user once that user's been saved"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Returns a list of all documents owned by this user. This list is _not_
|
60
|
+
# backed by the server, so if you add or remove items from it, it will not
|
61
|
+
# make those changes server-side. This also has some tricky consequences
|
62
|
+
# when modifying a list of documents while iterating over it:
|
63
|
+
#
|
64
|
+
# docs = user.documents
|
65
|
+
# docs.each(&:destroy)
|
66
|
+
# docs #=> Still populated, because it hasn't been updated
|
67
|
+
# docs = user.documents #=> Now it's empty
|
68
|
+
#
|
69
|
+
# Scribd::Document instances returned through this method have more
|
70
|
+
# attributes than those returned by the Scribd::Document.find method. The
|
71
|
+
# additional attributes are documented online at
|
72
|
+
# http://www.scribd.com/platform/documentation?method_name=docs.getSettings&subtab=api
|
73
|
+
|
74
|
+
def documents
|
75
|
+
response = API.instance.send_request('docs.getList', { :session_key => @attributes[:session_key] })
|
76
|
+
documents = Array.new
|
77
|
+
response.elements['/rsp/resultset'].elements.each do |doc|
|
78
|
+
documents << Document.new(:xml => doc, :owner => self)
|
79
|
+
end
|
80
|
+
return documents
|
81
|
+
end
|
82
|
+
|
83
|
+
# Finds documents owned by this user matching a given query. The parameters
|
84
|
+
# provided to this method are identical to those provided to
|
85
|
+
# Scribd::Document.find.
|
86
|
+
|
87
|
+
def find_documents(options)
|
88
|
+
Document.find options.merge(:scope => 'user', :session_key => @attributes[:session_key])
|
89
|
+
end
|
90
|
+
|
91
|
+
# Loads a Scribd::Document by ID. You can only load such documents if they
|
92
|
+
# belong to this user.
|
93
|
+
|
94
|
+
def find_document(document_id)
|
95
|
+
response = API.instance.send_request('docs.getSettings', { :doc_id => document_id, :session_key => @attributes[:session_key] })
|
96
|
+
Document.new :xml => response.elements['/rsp'], :owner => self
|
97
|
+
end
|
98
|
+
|
99
|
+
# Uploads a document to a user's document list. This method takes the
|
100
|
+
# following options:
|
101
|
+
#
|
102
|
+
# +file+:: The location of a file on disk or the URL to a file on the Web
|
103
|
+
# +type+:: The file's type (e.g., "txt" or "ppt"). Optional if the file has
|
104
|
+
# an extension (like "file.txt").
|
105
|
+
#
|
106
|
+
# There are other options you can specify. For more information, see the
|
107
|
+
# Scribd::Document.save method.
|
108
|
+
|
109
|
+
def upload(options)
|
110
|
+
Document.create options.merge(:owner => self)
|
111
|
+
end
|
112
|
+
|
113
|
+
# Synonym for create.
|
114
|
+
|
115
|
+
def self.signup(options={})
|
116
|
+
create options
|
117
|
+
end
|
118
|
+
|
119
|
+
# Logs into Scribd using the given username and password. This user will be
|
120
|
+
# used for all subsequent Scribd API calls. You must log in before you can
|
121
|
+
# use protected API functions. Returns the Scribd::User instance for the
|
122
|
+
# logged in user.
|
123
|
+
|
124
|
+
def self.login(username, password)
|
125
|
+
response = API.instance.send_request('user.login', { :username => username, :password => password })
|
126
|
+
xml = response.get_elements('/rsp')[0]
|
127
|
+
user = User.new(:xml => xml)
|
128
|
+
API.instance.user = user
|
129
|
+
return user
|
130
|
+
end
|
131
|
+
|
132
|
+
# Returns the +user_id+ attribute.
|
133
|
+
|
134
|
+
def id
|
135
|
+
self.user_id
|
136
|
+
end
|
137
|
+
|
138
|
+
def to_s #:nodoc:
|
139
|
+
@attributes[:username]
|
140
|
+
end
|
141
|
+
end
|
142
|
+
end
|
data/sample/01_upload.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
# Example 1 - Uploading a test text file and removing it afterwards.
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rscribd'
|
5
|
+
|
6
|
+
# Use your API key / secret here
|
7
|
+
api_key = ''
|
8
|
+
api_secret = ''
|
9
|
+
|
10
|
+
# Create a scribd object
|
11
|
+
Scribd::API.instance.key = api_key
|
12
|
+
Scribd::API.instance.secret = api_secret
|
13
|
+
#Scribd::API.instance.debug = true
|
14
|
+
|
15
|
+
begin
|
16
|
+
Scribd::User.login 'LOGIN', 'PASSWORD'
|
17
|
+
# Upload the document from a file
|
18
|
+
print "Uploading a document ... "
|
19
|
+
|
20
|
+
doc = Scribd::Document.upload(:file => 'test.txt')
|
21
|
+
puts "Done doc_id=#{doc.id}, doc_access_key=#{doc.access_key}"
|
22
|
+
|
23
|
+
# Poll API until conversion is complete
|
24
|
+
while (doc.conversion_status == 'PROCESSING')
|
25
|
+
puts "Document conversion is processing"
|
26
|
+
sleep(2) # Very important to sleep to prevent a runaway loop that will get your app blocked
|
27
|
+
end
|
28
|
+
puts "Document conversion is complete"
|
29
|
+
|
30
|
+
# Edit various options of the document
|
31
|
+
# Note you can also edit options before your doc is done converting
|
32
|
+
doc.title = 'This is a test doc!'
|
33
|
+
doc.description = "I'm testing out the Scribd API!"
|
34
|
+
doc.access = 'private'
|
35
|
+
doc.language = 'en'
|
36
|
+
doc.license = 'c'
|
37
|
+
doc.tags = 'test,api'
|
38
|
+
doc.show_ads = true
|
39
|
+
doc.save
|
40
|
+
|
41
|
+
# Delete the uploaded document
|
42
|
+
print "Deleting a document ... "
|
43
|
+
doc.destroy
|
44
|
+
puts "Done doc_id=#{doc.id}"
|
45
|
+
rescue Scribd::ResponseError => e
|
46
|
+
puts "failed code=#{e.code} error='#{e.message}'"
|
47
|
+
end
|
data/sample/02_user.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# Example 2 - Signing in as a user, and accessing a user's files.
|
2
|
+
|
3
|
+
require 'rubygems'
|
4
|
+
require 'rscribd'
|
5
|
+
|
6
|
+
# Use your API key / secret here
|
7
|
+
api_key = ''
|
8
|
+
api_secret = ''
|
9
|
+
|
10
|
+
# Edit these to a real Scribd username/password pair
|
11
|
+
username = ''
|
12
|
+
password = ''
|
13
|
+
|
14
|
+
# Create a scribd object
|
15
|
+
Scribd::API.instance.key = api_key
|
16
|
+
Scribd::API.instance.secret = api_secret
|
17
|
+
#Scribd::API.instance.debug = true
|
18
|
+
|
19
|
+
begin
|
20
|
+
|
21
|
+
# Login your Scribd API object as a particular user
|
22
|
+
# NOTE: Edit this to the username and password of a real Scribd user
|
23
|
+
user = Scribd::User.login username, password
|
24
|
+
|
25
|
+
docs = user.documents
|
26
|
+
|
27
|
+
puts "User #{user.username} has #{docs.size} docs"
|
28
|
+
if docs.size > 0
|
29
|
+
puts "User's docs:"
|
30
|
+
for doc in docs
|
31
|
+
puts "#{doc.title}"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
results = Scribd::Document.find(:query => 'checklist') # Search over the user's docs for the string 'cat'
|
36
|
+
puts "Search through docs turned up #{results.size} results:"
|
37
|
+
for doc in results
|
38
|
+
puts "#{doc.title}"
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
rescue Scribd::ResponseError => e
|
43
|
+
puts "failed code=#{e.code} error='#{e.message}'"
|
44
|
+
end
|
data/sample/test.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
This is a simple test text file to try out the neat Scribd API.
|
metadata
CHANGED
@@ -1,64 +1,87 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.9.4
|
3
|
-
specification_version: 1
|
4
2
|
name: rscribd
|
5
3
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.0.
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
email: matt.jaynes@gmail.com
|
12
|
-
homepage: http://rubyforge.org/projects/rscribd/
|
13
|
-
rubyforge_project: rscribd
|
14
|
-
description: rscribd is a Ruby implementation of the Scribd API. It includes a faithful reproduction of the published API as well as method encapsulation to provide more useful object mappings. rscribd features result caching to improve performance.
|
15
|
-
autorequire: rake
|
16
|
-
default_executable:
|
4
|
+
version: 0.0.3
|
5
|
+
platform: ""
|
6
|
+
authors:
|
7
|
+
- Jared Friedman
|
8
|
+
autorequire:
|
17
9
|
bindir: bin
|
18
|
-
|
19
|
-
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
-
requirements:
|
21
|
-
- - ">"
|
22
|
-
- !ruby/object:Gem::Version
|
23
|
-
version: 0.0.0
|
24
|
-
version:
|
25
|
-
platform: ruby
|
26
|
-
signing_key:
|
27
|
-
cert_chain:
|
28
|
-
post_install_message:
|
29
|
-
authors: []
|
30
|
-
|
31
|
-
files:
|
32
|
-
- lib/scribd/base.rb
|
33
|
-
- lib/scribd/docs.rb
|
34
|
-
- lib/scribd/search.rb
|
35
|
-
- lib/scribd.rb
|
36
|
-
- sample/01-docs_upload-text.rb
|
37
|
-
- sample/02-docs_upload-binary.rb
|
38
|
-
- sample/03-docs_uploadFromUrl.rb
|
39
|
-
- sample/04-docs_changeSettings.rb
|
40
|
-
- sample/05-docs_getConversionStatus.rb
|
41
|
-
- sample/test.gif
|
42
|
-
- sample/test.txt
|
43
|
-
test_files: []
|
44
|
-
|
45
|
-
rdoc_options: []
|
46
|
-
|
47
|
-
extra_rdoc_files: []
|
48
|
-
|
49
|
-
executables: []
|
50
|
-
|
51
|
-
extensions: []
|
52
|
-
|
53
|
-
requirements: []
|
10
|
+
cert_chain: []
|
54
11
|
|
12
|
+
date: 2008-02-18 00:00:00 -08:00
|
13
|
+
default_executable:
|
55
14
|
dependencies:
|
56
15
|
- !ruby/object:Gem::Dependency
|
57
16
|
name: mime-types
|
58
17
|
version_requirement:
|
59
|
-
version_requirements: !ruby/object:Gem::
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
19
|
requirements:
|
61
20
|
- - ">"
|
62
21
|
- !ruby/object:Gem::Version
|
63
22
|
version: 0.0.0
|
64
23
|
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: hoe
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: 1.5.0
|
32
|
+
version:
|
33
|
+
description: "== DESCRIPTION: This gem provides a simple and powerful library for the Scribd API, allowing you to write Ruby applications or Ruby on Rails websites that upload, convert, display, search, and control documents in many formats. == FEATURES/PROBLEMS: * Upload your documents to Scribd's servers and access them using the gem * Upload local files or from remote web sites * Search, tag, and organize documents * Associate documents with your users' accounts"
|
34
|
+
email: api@scribd.com
|
35
|
+
executables: []
|
36
|
+
|
37
|
+
extensions: []
|
38
|
+
|
39
|
+
extra_rdoc_files:
|
40
|
+
- History.txt
|
41
|
+
- Manifest.txt
|
42
|
+
- README.txt
|
43
|
+
- sample/test.txt
|
44
|
+
files:
|
45
|
+
- History.txt
|
46
|
+
- Manifest.txt
|
47
|
+
- README.txt
|
48
|
+
- Rakefile
|
49
|
+
- lib/api.rb
|
50
|
+
- lib/doc.rb
|
51
|
+
- lib/exceptions.rb
|
52
|
+
- lib/multipart.rb
|
53
|
+
- lib/resource.rb
|
54
|
+
- lib/rscribd.rb
|
55
|
+
- lib/user.rb
|
56
|
+
- sample/01_upload.rb
|
57
|
+
- sample/02_user.rb
|
58
|
+
- sample/test.txt
|
59
|
+
has_rdoc: true
|
60
|
+
homepage:
|
61
|
+
post_install_message:
|
62
|
+
rdoc_options:
|
63
|
+
- --main
|
64
|
+
- README.txt
|
65
|
+
require_paths:
|
66
|
+
- lib
|
67
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
68
|
+
requirements:
|
69
|
+
- - ">="
|
70
|
+
- !ruby/object:Gem::Version
|
71
|
+
version: "0"
|
72
|
+
version:
|
73
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - ">="
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: "0"
|
78
|
+
version:
|
79
|
+
requirements: []
|
80
|
+
|
81
|
+
rubyforge_project: rscribd
|
82
|
+
rubygems_version: 0.9.5
|
83
|
+
signing_key:
|
84
|
+
specification_version: 2
|
85
|
+
summary: Ruby client library for the Scribd API
|
86
|
+
test_files: []
|
87
|
+
|