doc_raptor 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +22 -0
- data/.rvmrc +1 -0
- data/Changelog.md +27 -20
- data/Gemfile +2 -0
- data/Gemfile.lock +38 -0
- data/README.md +115 -35
- data/Rakefile +13 -0
- data/doc_raptor.gemspec +24 -0
- data/examples/async_ruby_example.rb +39 -0
- data/examples/docraptor_gem_example.rb +20 -0
- data/lib/doc_raptor.rb +4 -28
- data/lib/doc_raptor/error.rb +4 -0
- data/lib/doc_raptor/exception.rb +23 -0
- data/lib/doc_raptor/version.rb +3 -0
- data/test/api_key_test.rb +50 -0
- data/test/create_bang_test.rb +48 -0
- data/test/create_test.rb +50 -0
- data/test/doc_raptor_test.rb +22 -0
- data/test/download_bang_test.rb +23 -0
- data/test/download_test.rb +16 -0
- data/test/fixtures/invalid_download +4 -0
- data/test/fixtures/invalid_list_docs +4 -0
- data/test/fixtures/invalid_pdf +5 -0
- data/test/fixtures/invalid_status +4 -0
- data/test/fixtures/simple_download +0 -0
- data/test/fixtures/simple_list_docs +12 -0
- data/test/fixtures/simple_pdf +0 -0
- data/test/fixtures/simple_status +6 -0
- data/test/list_docs_bang_test.rb +28 -0
- data/test/list_docs_test.rb +23 -0
- data/test/status_bang_test.rb +23 -0
- data/test/status_test.rb +16 -0
- data/test/test_helper.rb +24 -0
- metadata +129 -55
data/.gitignore
ADDED
data/.rvmrc
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
rvm 1.9.2@docraptor_gem --create
|
data/Changelog.md
CHANGED
@@ -1,38 +1,45 @@
|
|
1
|
-
# DocRaptor
|
2
|
-
|
3
|
-
##
|
4
|
-
*
|
5
|
-
|
6
|
-
|
7
|
-
*
|
1
|
+
# DocRaptor Gem Changelog
|
2
|
+
|
3
|
+
## 0.2.3 - 2012/03/15
|
4
|
+
* major test refactor in preparation for bigger changes
|
5
|
+
* use current gem packaging techniques
|
6
|
+
* add rake into the mix so all the tests can be run with `rake` instead of `bundle exec ruby whatever`
|
7
|
+
* readme cleanup
|
8
|
+
* changelog cleanup
|
9
|
+
* added dates for all the versions to the changelog
|
10
|
+
* package all the files from the repo instead of just a few
|
11
|
+
|
12
|
+
## 0.2.2 - 2011/12/07
|
13
|
+
* BUG: forgot a file in the gem
|
14
|
+
|
15
|
+
## 0.2.1 - 2011/12/07
|
16
|
+
* BUG: there were certain envs where .blank? wasn't defined. So,
|
8
17
|
pulling in the core_ext from activesupport
|
9
18
|
|
10
|
-
##
|
11
|
-
* tests!
|
19
|
+
## 0.2.0 - 2011/09/01
|
20
|
+
* added behavioral tests!
|
12
21
|
* added a create! method which will raise an exception when doc creation fails
|
13
22
|
* added a list_docs! method which will raise an exception when doc listing fails
|
14
23
|
* added a status! method which will raise an exception when getting an async status fails
|
15
24
|
* added a download! method which will raise an exception when getting an async status fails
|
16
25
|
|
17
|
-
##
|
18
|
-
* allow the gem to be used outside
|
26
|
+
## 0.1.6 - 2011/08/30
|
27
|
+
* allow the gem to be used outside without activesupport
|
19
28
|
|
20
|
-
##
|
21
|
-
*
|
29
|
+
## 0.1.5 - 2011/08/29
|
30
|
+
* BUG: activesupport safebuffers in rails ~3.0.6 and up were screwing up downloads
|
22
31
|
|
23
|
-
##
|
32
|
+
## 0.1.4 - 2011/06/24
|
24
33
|
* add support for creating async jobs
|
25
34
|
|
26
|
-
##
|
35
|
+
## 0.1.3 - 2011/01/29
|
27
36
|
* if a block is given to "create", make the value the block returns be the
|
28
37
|
value create returns
|
29
38
|
* add list_doc method, for the new api call to list created documents
|
30
39
|
|
31
|
-
##
|
40
|
+
## 0.1.2 - 2010/12/02
|
32
41
|
* add support for the the document_url parameter to create
|
33
|
-
|
34
|
-
## doc_raptor 0.1.1
|
35
42
|
* reduce httparty requirement to 0.4.3
|
36
43
|
|
37
|
-
##
|
38
|
-
*
|
44
|
+
## 0.1 - 2010/10/29
|
45
|
+
* initial release
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
doc_raptor (0.2.3)
|
5
|
+
httparty (>= 0.4.3)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
addressable (2.2.7)
|
11
|
+
coderay (1.0.5)
|
12
|
+
crack (0.3.1)
|
13
|
+
httparty (0.8.1)
|
14
|
+
multi_json
|
15
|
+
multi_xml
|
16
|
+
method_source (0.7.1)
|
17
|
+
minitest (2.11.3)
|
18
|
+
multi_json (1.1.0)
|
19
|
+
multi_xml (0.4.2)
|
20
|
+
pry (0.9.8.4)
|
21
|
+
coderay (~> 1.0.5)
|
22
|
+
method_source (~> 0.7.1)
|
23
|
+
slop (>= 2.4.4, < 3)
|
24
|
+
rake (0.9.2.2)
|
25
|
+
slop (2.4.4)
|
26
|
+
webmock (1.8.2)
|
27
|
+
addressable (>= 2.2.7)
|
28
|
+
crack (>= 0.1.7)
|
29
|
+
|
30
|
+
PLATFORMS
|
31
|
+
ruby
|
32
|
+
|
33
|
+
DEPENDENCIES
|
34
|
+
doc_raptor!
|
35
|
+
minitest
|
36
|
+
pry
|
37
|
+
rake
|
38
|
+
webmock
|
data/README.md
CHANGED
@@ -1,21 +1,20 @@
|
|
1
|
-
DocRaptor
|
2
|
-
==========
|
1
|
+
# DocRaptor
|
3
2
|
|
4
|
-
This is a Ruby gem providing a simple wrapper around the DocRaptor API. DocRaptor is a web service that allows you to convert [html to pdf](http://docraptor.com) or html to xls.
|
3
|
+
This is a Ruby gem providing a simple wrapper around the DocRaptor API. DocRaptor is a web service that allows you to convert [html to pdf](http://docraptor.com) or [html to xls](http://docraptor.com).
|
5
4
|
|
6
5
|
|
7
|
-
## Usage
|
6
|
+
## Usage
|
8
7
|
|
9
|
-
The gem will look for your api key in the ENV variable
|
8
|
+
The gem will look for your api key in the `ENV` variable `DOCRAPTOR_API_KEY`. If it is
|
10
9
|
not there, you can set it directly by calling:
|
11
10
|
|
12
|
-
```
|
11
|
+
```
|
13
12
|
DocRaptor.api_key "My API Key Here"
|
14
13
|
```
|
15
14
|
|
16
15
|
Once an API key is set, you can create a PDF document by calling:
|
17
16
|
|
18
|
-
```
|
17
|
+
```
|
19
18
|
DocRaptor.create(:document_content => content)
|
20
19
|
```
|
21
20
|
|
@@ -26,13 +25,13 @@ You might want to set other options in that hash:
|
|
26
25
|
* `:document_type` - "pdf" or "xls"; controls the type of document generated; default is "pdf"
|
27
26
|
* `:name` - an identifier you can use for the document; shows up in doc logs; default is "default"
|
28
27
|
* `:test` - test mode flag; set to true to while doing testing so the docs won't count against your monthly count; default is false
|
28
|
+
* `:prince_options` - see [http://docraptor.com/documentation#pdf_options](http://docraptor.com/documentation#pdf_options) (PDFs only)
|
29
29
|
* `:async` - create the document asynchonously; default is false
|
30
30
|
* `:callback_url` - a url that we will hit with a status once the asynchronous document has been fully processed
|
31
|
-
* `:prince_options` - see http://docraptor.com/documentation#pdf_options (PDFs only)
|
32
31
|
|
33
32
|
The only required parameter is one of `:document_content` or `:document_url`.
|
34
33
|
|
35
|
-
`create` will return an HTTParty response object, the body of which will be the new file (or errors, if the request was not valid).
|
34
|
+
`create` will return an [HTTParty](https://github.com/jnunemaker/httparty) response object, the body of which will be the new file (or errors, if the request was not valid).
|
36
35
|
|
37
36
|
`create!` will raise an exception instead of return errors if there is a failure of any sort in the document generation process. It otherwise works in the same way as `create`.
|
38
37
|
|
@@ -40,56 +39,137 @@ If the document is processed asynchronously, a status id will be returned as opp
|
|
40
39
|
|
41
40
|
The `create` call can also take a block, like so:
|
42
41
|
|
43
|
-
```
|
42
|
+
```
|
44
43
|
DocRaptor.create(:document_content => content) do |file, response|
|
45
44
|
#file is a tempfile holding the response body
|
46
45
|
#reponse is the HTTParty response object
|
47
|
-
end
|
46
|
+
end
|
48
47
|
```
|
49
48
|
|
49
|
+
### Async Doc Creation
|
50
50
|
To get the status of an async request, you can call:
|
51
51
|
|
52
|
-
```
|
52
|
+
```
|
53
53
|
# uses the id of the most recently created async job
|
54
54
|
DocRaptor.status
|
55
|
+
```
|
56
|
+
```
|
55
57
|
# query some other async job and make it the "active" async job for the DocRaptor class
|
56
58
|
DocRaptor.status(status_id)
|
57
59
|
```
|
58
60
|
|
59
61
|
`status_id` is the value returned from `DocRaptor.create` when `:async` is true. If you have
|
60
|
-
just created a document, status_id defaults to the last status_id received from DocRaptor.
|
61
|
-
This will return a hash containing, at the very least, a key of
|
62
|
-
one of the following: {
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
"download_url" that will contain a 2 time use URL that, when visited, will provide your
|
67
|
-
|
68
|
-
DocRaptor.download function to obtain your document. If the status is
|
69
|
-
|
70
|
-
|
71
|
-
"messages" value for a message and the "validation_errors" value for a more detailed reason
|
72
|
-
for the failure to generate your document.
|
73
|
-
|
74
|
-
To download an async document, you can visit the URL (download_url) provided via the status
|
62
|
+
just created a document, `status_id` defaults to the last `status_id` received from DocRaptor.
|
63
|
+
This will return a hash containing, at the very least, a key of `status` with a value of
|
64
|
+
one of the following: `{"completed", "failed", "killed", "queued", "working"}`.
|
65
|
+
|
66
|
+
* If the status is `queued`, no other information will be available.
|
67
|
+
* If the status is `working`, there will be a human readable message contained in "message" that gives further details as to the state of the document.
|
68
|
+
* If the status is `complete` there will be a key of "download_url" that will contain a 2 time use URL that, when visited, will provide your document.
|
69
|
+
|
70
|
+
There will also be a key of `download_key` that can be given to the `DocRaptor.download` function to obtain your document. If the status is `killed`, it means the system had to abort your document generation process for an unknown reason, most likely it was taking too long to generate. If the status is `failed` you can check the `messages` value for a message and the `validation_errors` value for a more detailed reason for the failure to generate your document.
|
71
|
+
|
72
|
+
To download an async document, you can visit the URL (`download_url`) provided via the `status`
|
75
73
|
function or you can call:
|
76
74
|
|
77
|
-
```
|
75
|
+
```
|
78
76
|
# uses the key of the most recently checked async job which is complete
|
79
77
|
DocRaptor.download
|
78
|
+
```
|
79
|
+
```
|
80
80
|
# use some other complete doc's download key
|
81
81
|
DocRaptor.download(download_key)
|
82
82
|
```
|
83
83
|
|
84
|
-
`download_key` is the value from the status hash of a call to DocRaptor.status of a completed job.
|
84
|
+
`download_key` is the value from the status hash of a call to `DocRaptor.status` of a completed job.
|
85
85
|
|
86
|
-
|
87
|
-
Check the examples directory for some simple examples. To make them work, you will need to have the docraptor gem installed (via bundler or gem install).
|
86
|
+
* If you have just checked the status of a document and it is completed, `download_key` defaults to that of the document you just checked.
|
88
87
|
|
89
|
-
|
88
|
+
The `download` function works like `DocRaptor.create` in that you get back either an HTTParty response object or you can give it a block.
|
90
89
|
|
91
|
-
##
|
90
|
+
## Examples
|
92
91
|
|
93
|
-
|
92
|
+
Check the examples directory for some simple examples. To make them work, you will need to have the docraptor gem installed (via bundler or gem install).
|
94
93
|
|
95
|
-
|
94
|
+
For more examples including a full rails example, check [https://github.com/expectedbehavior/doc_raptor_examples](https://github.com/expectedbehavior/doc_raptor_examples).
|
95
|
+
|
96
|
+
## Meta
|
97
|
+
|
98
|
+
Maintained by [Expected Behavior](http://expectedbehavior.com)
|
99
|
+
|
100
|
+
Released under the MIT license. [http://github.com/expected-behavior/docraptor-gem](http://github.com/expected-behavior/docraptor-gem)
|
101
|
+
|
102
|
+
## Obligatory Raptor
|
103
|
+
|
104
|
+
''
|
105
|
+
-'
|
106
|
+
.-
|
107
|
+
.:'
|
108
|
+
:-
|
109
|
+
-s-
|
110
|
+
'sy.
|
111
|
+
.so'
|
112
|
+
-/-
|
113
|
+
'::.
|
114
|
+
.+o'
|
115
|
+
'+hs
|
116
|
+
.yh+
|
117
|
+
:ys-
|
118
|
+
:+/'
|
119
|
+
'/+:
|
120
|
+
:sy:
|
121
|
+
'shh.
|
122
|
+
-yyo
|
123
|
+
-//-
|
124
|
+
':/:'
|
125
|
+
:+o/
|
126
|
+
'syy:
|
127
|
+
' :yyy.
|
128
|
+
'':+- '/oo+
|
129
|
+
'..-++o++//-' .///.
|
130
|
+
./++oooooooso+oo+. '/++/'
|
131
|
+
-oosssoosydddhhsosy+- :yyh+
|
132
|
+
.sssyssshddyhddhhhsyso' -yhhh-
|
133
|
+
-syyyyddmmmhyddhyhysyy/ '+shho'
|
134
|
+
-syyydmmmddmddhhyyyysyhy- '-//+o-
|
135
|
+
./yyhhmmddddhhhyysssyyyydhy. '/ooo+:
|
136
|
+
:syyydmhdddddhyyyssyyyyhhhhho .+hddhs.
|
137
|
+
'/ossyhhhhhddhhhhhhdhhyhhhhhhhh: ''....'' .+shddd/
|
138
|
+
:syosyhhhyyyyhdmddhyyyyyyyhhdhhh-''.-:/++++oooo+/:. ':+ooooso'
|
139
|
+
.+ysoosyyyyyydNmmdyyyyyoosyhdddddho//+osooooosyhyooyoooyhhys+.
|
140
|
+
-oo+++sssyyhmNmmdyyyo-'-/osyhhdddddhssssyyyssyyhhhsyhhysshhy:
|
141
|
+
':+++oossyhdNNmmhyy+. -/+osyhhddddddhhhhhyyyhdddhhdmhhyyho'
|
142
|
+
'''.:yydNmmdhyy+. ./+syyhhddddmddhdhhyyhdmmdddmmhhys.
|
143
|
+
/yydmmhyys: .:+osyhdddddddddhhhhdmmddhyyddyy+
|
144
|
+
'+syhyssyo. .+/+oshhdddddddhhhhhdNmhyysoohyyo'
|
145
|
+
'/+sooss/' /oo+ooshddddhhhhyhhdmmhysyhdsshyo-
|
146
|
+
-/o++:' /++osssyhhhhyyyyyyhdddhhhhmNyohys:
|
147
|
+
' :o+++osssyyyyyyssyyhdmmddmmmmhohhs+
|
148
|
+
.oo++oosssyyyysyssyhmNNmmmmdhyooddyo'
|
149
|
+
:/+ssysssyyysyyyyyhdmNNNmyyhyooshhys'
|
150
|
+
':/sddddhysyssyyyyhhhdmNNysosoooshhyy'
|
151
|
+
./oyddmmmmmhhyyyyssoosyhdy+ososyshhh+
|
152
|
+
-+yhdddmNmNNmNNmmo/+oyyhhs+osshyshhh/
|
153
|
+
:+hdhhddmmmmmmmNd' '-syhyoshhhsyyyyo'
|
154
|
+
.:odmddddmNmmdddmm+ ./ssoshdhsyysss/
|
155
|
+
./ohmmmy:smmddhhdmh' ''-oshhysssyys'
|
156
|
+
./+hdmNd-:mmddhhddo .osydhhyyhho'
|
157
|
+
./+ydmNMmydmmdddhh: .ssyhddyyhh/
|
158
|
+
odsydmNMNydmmddhh- .ossyhdhyyy.
|
159
|
+
./'-sdmNN+/dmmddd: +hyssysyyh-
|
160
|
+
'oyh/.'odddmm/ ohysoossyho'
|
161
|
+
':hd:'/hhhdmo '.-/+ooosys'
|
162
|
+
'-+osyhhdmy' '/+osy/
|
163
|
+
.syyhhh. '/+osy.
|
164
|
+
'osssys' -+ooss.
|
165
|
+
'/ooos+' '/oosss.
|
166
|
+
:oo+o+' -shhhyyy/
|
167
|
+
'+ss+oy. .yNmmmdhys.
|
168
|
+
smNdshd: -ydmdhyys/'
|
169
|
+
.mNNdydms :yhyyhy++/.
|
170
|
+
'+ddyyhdy: -sddddo++s+'
|
171
|
+
'.-/ohdmNdyyy' 'odmyss+odd/
|
172
|
+
-+oyhhhhdmmmmdhy+ ':- '.:.
|
173
|
+
'sMmoosshmmNdmmh/.
|
174
|
+
-oo+---/ddmMhho'
|
175
|
+
:++:-'
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
require "rake/testtask"
|
4
|
+
|
5
|
+
desc "Default: run unit tests."
|
6
|
+
task :default => :test
|
7
|
+
|
8
|
+
desc "Test the eb-patches gem"
|
9
|
+
Rake::TestTask.new(:test) do |t|
|
10
|
+
t.libs << "test"
|
11
|
+
t.pattern = 'test/**/*_test.rb'
|
12
|
+
t.verbose = true
|
13
|
+
end
|
data/doc_raptor.gemspec
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$LOAD_PATH.push(File.expand_path "../lib", __FILE__)
|
3
|
+
require "doc_raptor/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |gem|
|
6
|
+
gem.name = "doc_raptor"
|
7
|
+
gem.authors = ["Michael Kuehl", "Joel Meador", "Chris Moore"]
|
8
|
+
gem.email = ["michael@expectedbehavior.com"]
|
9
|
+
gem.description = %q{Provides a simple ruby wrapper around the DocRaptor API}
|
10
|
+
gem.summary = %q{Provides a simple ruby wrapper around the DocRaptor API}
|
11
|
+
gem.homepage = "http://docraptor.com"
|
12
|
+
gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
13
|
+
gem.files = `git ls-files`.split("\n")
|
14
|
+
gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
15
|
+
gem.require_paths = ["lib"]
|
16
|
+
gem.version = DocRaptor::VERSION
|
17
|
+
|
18
|
+
gem.add_dependency "httparty", ">=0.4.3"
|
19
|
+
|
20
|
+
gem.add_development_dependency "minitest"
|
21
|
+
gem.add_development_dependency "pry"
|
22
|
+
gem.add_development_dependency "rake"
|
23
|
+
gem.add_development_dependency "webmock"
|
24
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'doc_raptor'
|
3
|
+
|
4
|
+
TEN_SECONDS = 10
|
5
|
+
FIVE_MINUTES = 300
|
6
|
+
|
7
|
+
DocRaptor.api_key "YOUR_API_KEY_HERE"
|
8
|
+
|
9
|
+
pdf_html = '<html><body>I am an asynchronously-created doc.</body></html>'
|
10
|
+
|
11
|
+
def pretty_time; Time.now.strftime("%I:%M:%S %p"); end
|
12
|
+
def print_status(status = {}); puts "#{pretty_time} - Status: #{status['status']}";end
|
13
|
+
|
14
|
+
status_id = DocRaptor.create(:document_content => pdf_html,
|
15
|
+
:name => "docraptor_sample.pdf",
|
16
|
+
:document_type => "pdf",
|
17
|
+
:test => true,
|
18
|
+
:async => true)
|
19
|
+
|
20
|
+
# This timeout is 5 minutes.
|
21
|
+
# If there is no load on the background processors, this test should take (far) less than 20s. It's possible production will be backed up with real jobs, hence the timeout.
|
22
|
+
timeout_time = Time.now + FIVE_MINUTES
|
23
|
+
|
24
|
+
status = {'status' => 'queued'}
|
25
|
+
|
26
|
+
print_status(status)
|
27
|
+
while !(['completed','failed'].include? status['status']) && Time.now <= timeout_time
|
28
|
+
sleep TEN_SECONDS
|
29
|
+
status = DocRaptor.status
|
30
|
+
print_status(status)
|
31
|
+
end
|
32
|
+
|
33
|
+
if status['status'] == 'completed'
|
34
|
+
file = DocRaptor.download
|
35
|
+
File.open("docraptor_sample.pdf", "w+b") do |f|
|
36
|
+
f.write file.response.body
|
37
|
+
end
|
38
|
+
puts "#{pretty_time} - File downloaded to docraptor_sample.pdf"
|
39
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'doc_raptor'
|
3
|
+
|
4
|
+
DocRaptor.api_key "YOUR_API_KEY_HERE"
|
5
|
+
|
6
|
+
xls_html = "<table><tr><td>I am a test cell.</td><td>So am I</td></tr></table>"
|
7
|
+
File.open("docraptor_sample.xls", "w+") do |f|
|
8
|
+
f.write DocRaptor.create(:document_content => xls_html,
|
9
|
+
:name => "docraptor_sample.xls",
|
10
|
+
:document_type => "xls",
|
11
|
+
:test => true)
|
12
|
+
end
|
13
|
+
|
14
|
+
pdf_html = '<html><body>I am a test doc!</body></html>'
|
15
|
+
File.open("docraptor_sample.pdf", "w+") do |f|
|
16
|
+
f.write DocRaptor.create(:document_content => pdf_html,
|
17
|
+
:name => "docraptor_sample.pdf",
|
18
|
+
:document_type => "pdf",
|
19
|
+
:test => true)
|
20
|
+
end
|
data/lib/doc_raptor.rb
CHANGED
@@ -1,34 +1,10 @@
|
|
1
1
|
require "httparty"
|
2
2
|
require "tempfile"
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + "/core_ext/object/blank")
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
module DocRaptorException
|
11
|
-
class DocRaptorRequestException < StandardError
|
12
|
-
attr_accessor :status_code
|
13
|
-
attr_accessor :message
|
14
|
-
def initialize(message, status_code)
|
15
|
-
self.message = message
|
16
|
-
self.status_code = status_code
|
17
|
-
super message
|
18
|
-
end
|
19
|
-
|
20
|
-
def to_s
|
21
|
-
"#{self.class.name}\nHTTP Status: #{status_code}\nReturned: #{message}"
|
22
|
-
end
|
23
|
-
|
24
|
-
def inspect
|
25
|
-
self.to_s
|
26
|
-
end
|
27
|
-
end
|
28
|
-
class DocumentCreationFailure < DocRaptorRequestException; end
|
29
|
-
class DocumentListingFailure < DocRaptorRequestException; end
|
30
|
-
class DocumentStatusFailure < DocRaptorRequestException; end
|
31
|
-
class DocumentDownloadFailure < DocRaptorRequestException; end
|
4
|
+
["/core_ext/object/blank",
|
5
|
+
"/doc_raptor/error",
|
6
|
+
"/doc_raptor/exception"].each do |filename|
|
7
|
+
require File.expand_path(File.dirname(__FILE__) + filename)
|
32
8
|
end
|
33
9
|
|
34
10
|
class DocRaptor
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module DocRaptorException
|
2
|
+
class DocRaptorRequestException < StandardError
|
3
|
+
attr_accessor :status_code
|
4
|
+
attr_accessor :message
|
5
|
+
def initialize(message, status_code)
|
6
|
+
self.message = message
|
7
|
+
self.status_code = status_code
|
8
|
+
super message
|
9
|
+
end
|
10
|
+
|
11
|
+
def to_s
|
12
|
+
"#{self.class.name}\nHTTP Status: #{status_code}\nReturned: #{message}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def inspect
|
16
|
+
self.to_s
|
17
|
+
end
|
18
|
+
end
|
19
|
+
class DocumentCreationFailure < DocRaptorRequestException; end
|
20
|
+
class DocumentListingFailure < DocRaptorRequestException; end
|
21
|
+
class DocumentStatusFailure < DocRaptorRequestException; end
|
22
|
+
class DocumentDownloadFailure < DocRaptorRequestException; end
|
23
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class ApiKeyTest < MiniTest::Unit::TestCase
|
4
|
+
describe "test API keys" do
|
5
|
+
before do
|
6
|
+
DocRaptor.default_options.delete :api_key
|
7
|
+
ENV.delete "DOCRAPTOR_API_KEY"
|
8
|
+
@test_key = "Test Key!"
|
9
|
+
end
|
10
|
+
|
11
|
+
it "should throw an error if no api key is provided via a key, set in the environment, or already set on the DocRaptor class object" do
|
12
|
+
assert_raises(DocRaptorError::NoApiKeyProvidedError) {DocRaptor.api_key}
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should read the api key from the ENV" do
|
16
|
+
ENV["DOCRAPTOR_API_KEY"] = @test_key
|
17
|
+
assert_equal @test_key, DocRaptor.api_key
|
18
|
+
end
|
19
|
+
|
20
|
+
it "changes to the ENV variable shouldn't be implicitly picked up" do
|
21
|
+
ENV["DOCRAPTOR_API_KEY"] = @test_key
|
22
|
+
DocRaptor.api_key
|
23
|
+
|
24
|
+
ENV["DOCRAPTOR_API_KEY"] = "some other key"
|
25
|
+
assert_equal @test_key, DocRaptor.api_key
|
26
|
+
end
|
27
|
+
|
28
|
+
it "should use the passed in key" do
|
29
|
+
assert_equal @test_key, DocRaptor.api_key(@test_key)
|
30
|
+
end
|
31
|
+
|
32
|
+
it "should persist the passed in key on subsequent calls" do
|
33
|
+
DocRaptor.api_key(@test_key)
|
34
|
+
assert_equal @test_key, DocRaptor.api_key
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should override keys when passed in explicitly" do
|
38
|
+
other_key = "some other key"
|
39
|
+
DocRaptor.api_key(@test_key)
|
40
|
+
assert_equal other_key, DocRaptor.api_key(other_key)
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should persist overridden keys" do
|
44
|
+
other_key = "some other key"
|
45
|
+
DocRaptor.api_key(@test_key)
|
46
|
+
DocRaptor.api_key(other_key)
|
47
|
+
assert_equal other_key, DocRaptor.api_key
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class CreateBangTest < MiniTest::Unit::TestCase
|
4
|
+
describe "calling create!" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with bogus arguments" do
|
10
|
+
it "should raise an error if something other than an options hash is passed in" do
|
11
|
+
assert_raises(ArgumentError) {DocRaptor.create!(true)}
|
12
|
+
assert_raises(ArgumentError) {DocRaptor.create!(nil)}
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should raise an error if document_content and document_url are both unset" do
|
16
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create!}
|
17
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create!({:herped => :the_derp})}
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should raise an error if document_content is passed by is blank" do
|
21
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create!(:document_content => nil)}
|
22
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create!(:document_content => "")}
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should raise an error if document_url is passed by is blank" do
|
26
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create!(:document_url => nil)}
|
27
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create!(:document_url => "")}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "with document_content" do
|
32
|
+
before do
|
33
|
+
@html_content = "<html><body>Hey</body></html>"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should give me some error message if pass some invalid content" do
|
37
|
+
invalid_html = "<herp"
|
38
|
+
stub_http_response_with("invalid_pdf", :post, 422)
|
39
|
+
assert_raises(DocRaptorException::DocumentCreationFailure) {DocRaptor.create!(:document_content => invalid_html)}
|
40
|
+
end
|
41
|
+
|
42
|
+
it "should give me a valid response if I pass some valid content" do
|
43
|
+
stub_http_response_with("simple_pdf", :post)
|
44
|
+
assert_equal file_fixture("simple_pdf"), DocRaptor.create!(:document_content => @html_content).body
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
data/test/create_test.rb
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class CreateTest < MiniTest::Unit::TestCase
|
4
|
+
describe "calling create" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with bogus arguments" do
|
10
|
+
it "should raise an error if something other than an options hash is passed in" do
|
11
|
+
assert_raises(ArgumentError) {DocRaptor.create(true)}
|
12
|
+
assert_raises(ArgumentError) {DocRaptor.create(nil)}
|
13
|
+
end
|
14
|
+
|
15
|
+
it "should raise an error if document_content and document_url are both unset" do
|
16
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create}
|
17
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create({:herped => :the_derp})}
|
18
|
+
end
|
19
|
+
|
20
|
+
it "should raise an error if document_content is passed by is blank" do
|
21
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create(:document_content => nil)}
|
22
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create(:document_content => "")}
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should raise an error if document_url is passed by is blank" do
|
26
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create(:document_url => nil)}
|
27
|
+
assert_raises(DocRaptorError::NoContentError) {DocRaptor.create(:document_url => "")}
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe "with document_content" do
|
32
|
+
before do
|
33
|
+
@html_content = "<html><body>Hey</body></html>"
|
34
|
+
end
|
35
|
+
|
36
|
+
it "should give me some error message if pass some invalid content" do
|
37
|
+
invalid_html = "<herp"
|
38
|
+
stub_http_response_with("invalid_pdf", :post, 422)
|
39
|
+
response = DocRaptor.create(:document_content => invalid_html)
|
40
|
+
assert_equal file_fixture("invalid_pdf"), response.body
|
41
|
+
assert_equal 422, response.code
|
42
|
+
end
|
43
|
+
|
44
|
+
it "should give me a valid response if I pass some valid content" do
|
45
|
+
stub_http_response_with("simple_pdf", :post)
|
46
|
+
assert_equal file_fixture("simple_pdf"), DocRaptor.create(:document_content => @html_content).body
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class DocRaptorTest < MiniTest::Unit::TestCase
|
4
|
+
describe "the public interface" do
|
5
|
+
methods = [:api_key,
|
6
|
+
:create,
|
7
|
+
:create!,
|
8
|
+
:list_docs,
|
9
|
+
:list_docs!,
|
10
|
+
:status,
|
11
|
+
:status!,
|
12
|
+
:download,
|
13
|
+
:download!].each do |method_name|
|
14
|
+
it "should respond to #{method_name}" do
|
15
|
+
assert DocRaptor.respond_to?(method_name)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
# TODO basic tests of the various exception/error classes beyond
|
21
|
+
# what is used in the gem functionality tests
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class DownloadBangTest < MiniTest::Unit::TestCase
|
4
|
+
describe "download!" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with good arguments" do
|
10
|
+
it "should give me a valid response" do
|
11
|
+
stub_http_response_with("simple_download", :get)
|
12
|
+
DocRaptor.download!("test-id")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "with invalid arguments" do
|
17
|
+
it "should raise an exception" do
|
18
|
+
stub_http_response_with("invalid_download", :get, 400)
|
19
|
+
assert_raises(DocRaptorException::DocumentDownloadFailure) {DocRaptor.download!("test-id")}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class DownloadTest < MiniTest::Unit::TestCase
|
4
|
+
describe "download" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with good arguments" do
|
10
|
+
it "should give me a valid response" do
|
11
|
+
stub_http_response_with("simple_download", :get)
|
12
|
+
DocRaptor.download("test-id")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
Binary file
|
@@ -0,0 +1,12 @@
|
|
1
|
+
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
|
2
|
+
<docs type=\"array\">
|
3
|
+
<doc>
|
4
|
+
<created-at type=\"datetime\">2011-09-01T19:22:42Z</created-at>
|
5
|
+
<document-type>pdf</document-type>
|
6
|
+
<ip-address>192.168.0.1</ip-address>
|
7
|
+
<javascript type=\"boolean\">false</javascript>
|
8
|
+
<name>try_it_now_doc</name>
|
9
|
+
<tag nil=\"true\"></tag>
|
10
|
+
<test type=\"boolean\">true</test>
|
11
|
+
</doc>
|
12
|
+
</docs>
|
Binary file
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class ListDocsBangTest < MiniTest::Unit::TestCase
|
4
|
+
describe "list_docs!" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with bogus arguments" do
|
10
|
+
it "should raise an error if something other than an options hash is passed in" do
|
11
|
+
assert_raises(ArgumentError) {DocRaptor.list_docs!(true)}
|
12
|
+
assert_raises(ArgumentError) {DocRaptor.list_docs!(nil)}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "with good arguments" do
|
17
|
+
it "should give me a valid response" do
|
18
|
+
stub_http_response_with("simple_list_docs", :get)
|
19
|
+
assert_equal file_fixture("simple_list_docs"), DocRaptor.list_docs!.body
|
20
|
+
end
|
21
|
+
|
22
|
+
it "raise an exception when the list get fails" do
|
23
|
+
stub_http_response_with("invalid_list_docs", :get, 422)
|
24
|
+
assert_raises(DocRaptorException::DocumentListingFailure) {DocRaptor.list_docs!}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class ListDocsTest < MiniTest::Unit::TestCase
|
4
|
+
describe "list_docs" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with bogus arguments" do
|
10
|
+
it "should raise an error if something other than an options hash is passed in" do
|
11
|
+
assert_raises(ArgumentError) {DocRaptor.list_docs(true)}
|
12
|
+
assert_raises(ArgumentError) {DocRaptor.list_docs(nil)}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "with good arguments" do
|
17
|
+
it "should give me a valid response" do
|
18
|
+
stub_http_response_with("simple_list_docs", :get)
|
19
|
+
assert_equal file_fixture("simple_list_docs"), DocRaptor.list_docs.body
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class StatusBangTest < MiniTest::Unit::TestCase
|
4
|
+
describe "status!" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with good arguments" do
|
10
|
+
it "should give me a valid response" do
|
11
|
+
stub_http_response_with("simple_status", :get)
|
12
|
+
DocRaptor.status!("test-id")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe "with invalid arguments" do
|
17
|
+
it "should raise an exception" do
|
18
|
+
stub_http_response_with("invalid_status", :get, 403)
|
19
|
+
assert_raises(DocRaptorException::DocumentStatusFailure) {DocRaptor.status!("test-id")}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/test/status_test.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + "/test_helper")
|
2
|
+
|
3
|
+
class StatusTest < MiniTest::Unit::TestCase
|
4
|
+
describe "status" do
|
5
|
+
before do
|
6
|
+
DocRaptor.api_key "something something"
|
7
|
+
end
|
8
|
+
|
9
|
+
describe "with good arguments" do
|
10
|
+
it "should give me a valid response" do
|
11
|
+
stub_http_response_with("simple_status", :get)
|
12
|
+
DocRaptor.status("test-id")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
|
3
|
+
# minitest setup
|
4
|
+
gem 'minitest'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest/spec'
|
7
|
+
require 'minitest/mock'
|
8
|
+
require 'webmock/minitest'
|
9
|
+
|
10
|
+
# pull in the docraptor code
|
11
|
+
require File.expand_path(File.dirname(__FILE__) + "/../lib/doc_raptor")
|
12
|
+
|
13
|
+
class MiniTest::Unit::TestCase
|
14
|
+
def stub_http_response_with(filename, method = :any, status = 200)
|
15
|
+
format = filename.split('.').last.intern
|
16
|
+
data = file_fixture(filename)
|
17
|
+
|
18
|
+
stub_request(method, /docraptor\.com/).to_return(:body => data, :status => status)
|
19
|
+
end
|
20
|
+
|
21
|
+
def file_fixture(filename)
|
22
|
+
open(File.join(File.dirname(__FILE__), 'fixtures', "#{filename.to_s}")).read
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,88 +1,162 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: doc_raptor
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.2.3
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 2
|
9
|
-
- 2
|
10
|
-
version: 0.2.2
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Michael Kuehl
|
14
9
|
- Joel Meador
|
15
10
|
- Chris Moore
|
16
11
|
autorequire:
|
17
12
|
bindir: bin
|
18
13
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
dependencies:
|
23
|
-
- !ruby/object:Gem::Dependency
|
14
|
+
date: 2012-03-15 00:00:00.000000000Z
|
15
|
+
dependencies:
|
16
|
+
- !ruby/object:Gem::Dependency
|
24
17
|
name: httparty
|
25
|
-
|
26
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
18
|
+
requirement: &70205221784680 !ruby/object:Gem::Requirement
|
27
19
|
none: false
|
28
|
-
requirements:
|
29
|
-
- -
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
hash: 9
|
32
|
-
segments:
|
33
|
-
- 0
|
34
|
-
- 4
|
35
|
-
- 3
|
20
|
+
requirements:
|
21
|
+
- - ! '>='
|
22
|
+
- !ruby/object:Gem::Version
|
36
23
|
version: 0.4.3
|
37
24
|
type: :runtime
|
38
|
-
|
25
|
+
prerelease: false
|
26
|
+
version_requirements: *70205221784680
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: &70205221784260 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ! '>='
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '0'
|
35
|
+
type: :development
|
36
|
+
prerelease: false
|
37
|
+
version_requirements: *70205221784260
|
38
|
+
- !ruby/object:Gem::Dependency
|
39
|
+
name: pry
|
40
|
+
requirement: &70205221783620 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
type: :development
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: *70205221783620
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rake
|
51
|
+
requirement: &70205221783000 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ! '>='
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0'
|
57
|
+
type: :development
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: *70205221783000
|
60
|
+
- !ruby/object:Gem::Dependency
|
61
|
+
name: webmock
|
62
|
+
requirement: &70205221782340 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ! '>='
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: '0'
|
68
|
+
type: :development
|
69
|
+
prerelease: false
|
70
|
+
version_requirements: *70205221782340
|
39
71
|
description: Provides a simple ruby wrapper around the DocRaptor API
|
40
|
-
email:
|
72
|
+
email:
|
73
|
+
- michael@expectedbehavior.com
|
41
74
|
executables: []
|
42
|
-
|
43
75
|
extensions: []
|
44
|
-
|
45
76
|
extra_rdoc_files: []
|
46
|
-
|
47
|
-
|
77
|
+
files:
|
78
|
+
- .gitignore
|
79
|
+
- .rvmrc
|
48
80
|
- Changelog.md
|
49
|
-
-
|
81
|
+
- Gemfile
|
82
|
+
- Gemfile.lock
|
50
83
|
- MIT-LICENSE
|
51
|
-
-
|
84
|
+
- README.md
|
85
|
+
- Rakefile
|
86
|
+
- doc_raptor.gemspec
|
87
|
+
- examples/async_ruby_example.rb
|
88
|
+
- examples/docraptor_gem_example.rb
|
52
89
|
- lib/core_ext/object/blank.rb
|
53
|
-
|
90
|
+
- lib/doc_raptor.rb
|
91
|
+
- lib/doc_raptor/error.rb
|
92
|
+
- lib/doc_raptor/exception.rb
|
93
|
+
- lib/doc_raptor/version.rb
|
94
|
+
- test/api_key_test.rb
|
95
|
+
- test/create_bang_test.rb
|
96
|
+
- test/create_test.rb
|
97
|
+
- test/doc_raptor_test.rb
|
98
|
+
- test/download_bang_test.rb
|
99
|
+
- test/download_test.rb
|
100
|
+
- test/fixtures/invalid_download
|
101
|
+
- test/fixtures/invalid_list_docs
|
102
|
+
- test/fixtures/invalid_pdf
|
103
|
+
- test/fixtures/invalid_status
|
104
|
+
- test/fixtures/simple_download
|
105
|
+
- test/fixtures/simple_list_docs
|
106
|
+
- test/fixtures/simple_pdf
|
107
|
+
- test/fixtures/simple_status
|
108
|
+
- test/list_docs_bang_test.rb
|
109
|
+
- test/list_docs_test.rb
|
110
|
+
- test/status_bang_test.rb
|
111
|
+
- test/status_test.rb
|
112
|
+
- test/test_helper.rb
|
54
113
|
homepage: http://docraptor.com
|
55
114
|
licenses: []
|
56
|
-
|
57
115
|
post_install_message:
|
58
116
|
rdoc_options: []
|
59
|
-
|
60
|
-
require_paths:
|
117
|
+
require_paths:
|
61
118
|
- lib
|
62
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
119
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
63
120
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
|
68
|
-
segments:
|
121
|
+
requirements:
|
122
|
+
- - ! '>='
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
segments:
|
69
126
|
- 0
|
70
|
-
|
71
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
127
|
+
hash: 1035474426871719147
|
128
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
72
129
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
77
|
-
segments:
|
130
|
+
requirements:
|
131
|
+
- - ! '>='
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: '0'
|
134
|
+
segments:
|
78
135
|
- 0
|
79
|
-
|
136
|
+
hash: 1035474426871719147
|
80
137
|
requirements: []
|
81
|
-
|
82
138
|
rubyforge_project:
|
83
|
-
rubygems_version: 1.
|
139
|
+
rubygems_version: 1.8.17
|
84
140
|
signing_key:
|
85
141
|
specification_version: 3
|
86
|
-
summary:
|
87
|
-
test_files:
|
88
|
-
|
142
|
+
summary: Provides a simple ruby wrapper around the DocRaptor API
|
143
|
+
test_files:
|
144
|
+
- test/api_key_test.rb
|
145
|
+
- test/create_bang_test.rb
|
146
|
+
- test/create_test.rb
|
147
|
+
- test/doc_raptor_test.rb
|
148
|
+
- test/download_bang_test.rb
|
149
|
+
- test/download_test.rb
|
150
|
+
- test/fixtures/invalid_download
|
151
|
+
- test/fixtures/invalid_list_docs
|
152
|
+
- test/fixtures/invalid_pdf
|
153
|
+
- test/fixtures/invalid_status
|
154
|
+
- test/fixtures/simple_download
|
155
|
+
- test/fixtures/simple_list_docs
|
156
|
+
- test/fixtures/simple_pdf
|
157
|
+
- test/fixtures/simple_status
|
158
|
+
- test/list_docs_bang_test.rb
|
159
|
+
- test/list_docs_test.rb
|
160
|
+
- test/status_bang_test.rb
|
161
|
+
- test/status_test.rb
|
162
|
+
- test/test_helper.rb
|