docraptor 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.docker_env.list +3 -0
  3. data/.generator-language-identifier +1 -0
  4. data/.generator-revision +1 -0
  5. data/.github/pull_request_template.txt +17 -0
  6. data/.gitignore +20 -14
  7. data/.gitlab-ci.yml +26 -0
  8. data/.openapi-generator/FILES +27 -0
  9. data/.openapi-generator/VERSION +1 -0
  10. data/{.swagger-codegen-ignore → .openapi-generator-ignore} +23 -7
  11. data/.review/README.md +16 -0
  12. data/.review/generated_files/.gitignore +39 -0
  13. data/.review/generated_files/README.md +107 -0
  14. data/.rubocop.yml +148 -0
  15. data/.runtime-environments +10 -0
  16. data/.travis.yml +12 -7
  17. data/CHANGELOG.md +5 -0
  18. data/Gemfile +3 -1
  19. data/README.md +8 -8
  20. data/Rakefile +1 -2
  21. data/docraptor.gemspec +5 -19
  22. data/docraptor.yaml +5 -4
  23. data/examples/async.rb +24 -30
  24. data/examples/hosted_async.rb +21 -33
  25. data/examples/hosted_sync.rb +19 -32
  26. data/examples/sync.rb +20 -26
  27. data/gemfiles/Gemfile.2.5.lock +70 -0
  28. data/gemfiles/Gemfile.2.6.lock +70 -0
  29. data/gemfiles/Gemfile.2.7.lock +70 -0
  30. data/gemfiles/Gemfile.3.0.lock +70 -0
  31. data/{swagger-config.json → generator-config.json} +3 -2
  32. data/lib/docraptor/api/doc_api.rb +154 -79
  33. data/lib/docraptor/api_client.rb +91 -90
  34. data/lib/docraptor/api_error.rb +22 -3
  35. data/lib/docraptor/configuration.rb +85 -15
  36. data/lib/docraptor/models/async_doc.rb +53 -18
  37. data/lib/docraptor/models/doc.rb +80 -45
  38. data/lib/docraptor/models/doc_status.rb +58 -23
  39. data/lib/docraptor/models/prince_options.rb +101 -66
  40. data/lib/docraptor/version.rb +4 -4
  41. data/lib/docraptor.rb +3 -3
  42. data/script/clean +2 -2
  43. data/script/console +5 -0
  44. data/script/docker +39 -0
  45. data/script/fix_gemspec.rb +3 -18
  46. data/script/generate_language +21 -4
  47. data/script/inside_container/README.md +6 -0
  48. data/script/inside_container/test +38 -0
  49. data/script/post_generate_language +10 -2
  50. data/script/setup +25 -14
  51. data/script/swagger +6 -33
  52. data/script/test +30 -27
  53. data/test/async.rb +2 -2
  54. data/test/expire_hosted.rb +2 -2
  55. data/test/hosted_async.rb +7 -1
  56. data/test/hosted_sync.rb +2 -2
  57. data/test/sync.rb +2 -2
  58. data/test/xlsx.rb +6 -3
  59. metadata +29 -217
  60. data/.swagger-codegen/VERSION +0 -1
  61. data/.swagger-revision +0 -1
  62. data/spec/api_client_spec.rb +0 -243
  63. data/spec/configuration_spec.rb +0 -42
  64. data/spec/spec_helper.rb +0 -111
@@ -1,243 +0,0 @@
1
- =begin
2
- #DocRaptor
3
-
4
- #A native client library for the DocRaptor HTML to PDF/XLS service.
5
-
6
- OpenAPI spec version: 1.4.0
7
-
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.14
10
-
11
- =end
12
-
13
- require 'spec_helper'
14
-
15
- describe DocRaptor::ApiClient do
16
- context 'initialization' do
17
- context 'URL stuff' do
18
- context 'host' do
19
- it 'removes http from host' do
20
- DocRaptor.configure { |c| c.host = 'http://example.com' }
21
- expect(DocRaptor::Configuration.default.host).to eq('example.com')
22
- end
23
-
24
- it 'removes https from host' do
25
- DocRaptor.configure { |c| c.host = 'https://wookiee.com' }
26
- expect(DocRaptor::ApiClient.default.config.host).to eq('wookiee.com')
27
- end
28
-
29
- it 'removes trailing path from host' do
30
- DocRaptor.configure { |c| c.host = 'hobo.com/v4' }
31
- expect(DocRaptor::Configuration.default.host).to eq('hobo.com')
32
- end
33
- end
34
-
35
- context 'base_path' do
36
- it "prepends a slash to base_path" do
37
- DocRaptor.configure { |c| c.base_path = 'v4/dog' }
38
- expect(DocRaptor::Configuration.default.base_path).to eq('/v4/dog')
39
- end
40
-
41
- it "doesn't prepend a slash if one is already there" do
42
- DocRaptor.configure { |c| c.base_path = '/v4/dog' }
43
- expect(DocRaptor::Configuration.default.base_path).to eq('/v4/dog')
44
- end
45
-
46
- it "ends up as a blank string if nil" do
47
- DocRaptor.configure { |c| c.base_path = nil }
48
- expect(DocRaptor::Configuration.default.base_path).to eq('')
49
- end
50
- end
51
- end
52
- end
53
-
54
- describe 'params_encoding in #build_request' do
55
- let(:config) { DocRaptor::Configuration.new }
56
- let(:api_client) { DocRaptor::ApiClient.new(config) }
57
-
58
- it 'defaults to nil' do
59
- expect(DocRaptor::Configuration.default.params_encoding).to eq(nil)
60
- expect(config.params_encoding).to eq(nil)
61
-
62
- request = api_client.build_request(:get, '/test')
63
- expect(request.options[:params_encoding]).to eq(nil)
64
- end
65
-
66
- it 'can be customized' do
67
- config.params_encoding = :multi
68
- request = api_client.build_request(:get, '/test')
69
- expect(request.options[:params_encoding]).to eq(:multi)
70
- end
71
- end
72
-
73
- describe 'timeout in #build_request' do
74
- let(:config) { DocRaptor::Configuration.new }
75
- let(:api_client) { DocRaptor::ApiClient.new(config) }
76
-
77
- it 'defaults to 0' do
78
- expect(DocRaptor::Configuration.default.timeout).to eq(0)
79
- expect(config.timeout).to eq(0)
80
-
81
- request = api_client.build_request(:get, '/test')
82
- expect(request.options[:timeout]).to eq(0)
83
- end
84
-
85
- it 'can be customized' do
86
- config.timeout = 100
87
- request = api_client.build_request(:get, '/test')
88
- expect(request.options[:timeout]).to eq(100)
89
- end
90
- end
91
-
92
- describe '#build_request' do
93
- let(:config) { DocRaptor::Configuration.new }
94
- let(:api_client) { DocRaptor::ApiClient.new(config) }
95
-
96
- it 'does not send multipart to request' do
97
- expect(Typhoeus::Request).to receive(:new).with(anything, hash_not_including(:multipart))
98
- api_client.build_request(:get, '/test')
99
- end
100
-
101
- context 'when the content type is multipart' do
102
- it 'sends multipart to request' do
103
- expect(Typhoeus::Request).to receive(:new).with(anything, hash_including(multipart: true))
104
- api_client.build_request(:get, '/test', {header_params: { 'Content-Type' => 'multipart/form-data'}})
105
- end
106
- end
107
- end
108
-
109
- describe '#deserialize' do
110
- it "handles Array<Integer>" do
111
- api_client = DocRaptor::ApiClient.new
112
- headers = { 'Content-Type' => 'application/json' }
113
- response = double('response', headers: headers, body: '[12, 34]')
114
- data = api_client.deserialize(response, 'Array<Integer>')
115
- expect(data).to be_instance_of(Array)
116
- expect(data).to eq([12, 34])
117
- end
118
-
119
- it 'handles Array<Array<Integer>>' do
120
- api_client = DocRaptor::ApiClient.new
121
- headers = { 'Content-Type' => 'application/json' }
122
- response = double('response', headers: headers, body: '[[12, 34], [56]]')
123
- data = api_client.deserialize(response, 'Array<Array<Integer>>')
124
- expect(data).to be_instance_of(Array)
125
- expect(data).to eq([[12, 34], [56]])
126
- end
127
-
128
- it 'handles Hash<String, String>' do
129
- api_client = DocRaptor::ApiClient.new
130
- headers = { 'Content-Type' => 'application/json' }
131
- response = double('response', headers: headers, body: '{"message": "Hello"}')
132
- data = api_client.deserialize(response, 'Hash<String, String>')
133
- expect(data).to be_instance_of(Hash)
134
- expect(data).to eq(:message => 'Hello')
135
- end
136
- end
137
-
138
- describe "#object_to_hash" do
139
- it 'ignores nils and includes empty arrays' do
140
- # uncomment below to test object_to_hash for model
141
- # api_client = DocRaptor::ApiClient.new
142
- # _model = DocRaptor::ModelName.new
143
- # update the model attribute below
144
- # _model.id = 1
145
- # update the expected value (hash) below
146
- # expected = {id: 1, name: '', tags: []}
147
- # expect(api_client.object_to_hash(_model)).to eq(expected)
148
- end
149
- end
150
-
151
- describe '#build_collection_param' do
152
- let(:param) { ['aa', 'bb', 'cc'] }
153
- let(:api_client) { DocRaptor::ApiClient.new }
154
-
155
- it 'works for csv' do
156
- expect(api_client.build_collection_param(param, :csv)).to eq('aa,bb,cc')
157
- end
158
-
159
- it 'works for ssv' do
160
- expect(api_client.build_collection_param(param, :ssv)).to eq('aa bb cc')
161
- end
162
-
163
- it 'works for tsv' do
164
- expect(api_client.build_collection_param(param, :tsv)).to eq("aa\tbb\tcc")
165
- end
166
-
167
- it 'works for pipes' do
168
- expect(api_client.build_collection_param(param, :pipes)).to eq('aa|bb|cc')
169
- end
170
-
171
- it 'works for multi' do
172
- expect(api_client.build_collection_param(param, :multi)).to eq(['aa', 'bb', 'cc'])
173
- end
174
-
175
- it 'fails for invalid collection format' do
176
- expect(proc { api_client.build_collection_param(param, :INVALID) }).to raise_error(RuntimeError, 'unknown collection format: :INVALID')
177
- end
178
- end
179
-
180
- describe '#json_mime?' do
181
- let(:api_client) { DocRaptor::ApiClient.new }
182
-
183
- it 'works' do
184
- expect(api_client.json_mime?(nil)).to eq false
185
- expect(api_client.json_mime?('')).to eq false
186
-
187
- expect(api_client.json_mime?('application/json')).to eq true
188
- expect(api_client.json_mime?('application/json; charset=UTF8')).to eq true
189
- expect(api_client.json_mime?('APPLICATION/JSON')).to eq true
190
-
191
- expect(api_client.json_mime?('application/xml')).to eq false
192
- expect(api_client.json_mime?('text/plain')).to eq false
193
- expect(api_client.json_mime?('application/jsonp')).to eq false
194
- end
195
- end
196
-
197
- describe '#select_header_accept' do
198
- let(:api_client) { DocRaptor::ApiClient.new }
199
-
200
- it 'works' do
201
- expect(api_client.select_header_accept(nil)).to be_nil
202
- expect(api_client.select_header_accept([])).to be_nil
203
-
204
- expect(api_client.select_header_accept(['application/json'])).to eq('application/json')
205
- expect(api_client.select_header_accept(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
206
- expect(api_client.select_header_accept(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
207
-
208
- expect(api_client.select_header_accept(['application/xml'])).to eq('application/xml')
209
- expect(api_client.select_header_accept(['text/html', 'application/xml'])).to eq('text/html,application/xml')
210
- end
211
- end
212
-
213
- describe '#select_header_content_type' do
214
- let(:api_client) { DocRaptor::ApiClient.new }
215
-
216
- it 'works' do
217
- expect(api_client.select_header_content_type(nil)).to eq('application/json')
218
- expect(api_client.select_header_content_type([])).to eq('application/json')
219
-
220
- expect(api_client.select_header_content_type(['application/json'])).to eq('application/json')
221
- expect(api_client.select_header_content_type(['application/xml', 'application/json; charset=UTF8'])).to eq('application/json; charset=UTF8')
222
- expect(api_client.select_header_content_type(['APPLICATION/JSON', 'text/html'])).to eq('APPLICATION/JSON')
223
- expect(api_client.select_header_content_type(['application/xml'])).to eq('application/xml')
224
- expect(api_client.select_header_content_type(['text/plain', 'application/xml'])).to eq('text/plain')
225
- end
226
- end
227
-
228
- describe '#sanitize_filename' do
229
- let(:api_client) { DocRaptor::ApiClient.new }
230
-
231
- it 'works' do
232
- expect(api_client.sanitize_filename('sun')).to eq('sun')
233
- expect(api_client.sanitize_filename('sun.gif')).to eq('sun.gif')
234
- expect(api_client.sanitize_filename('../sun.gif')).to eq('sun.gif')
235
- expect(api_client.sanitize_filename('/var/tmp/sun.gif')).to eq('sun.gif')
236
- expect(api_client.sanitize_filename('./sun.gif')).to eq('sun.gif')
237
- expect(api_client.sanitize_filename('..\sun.gif')).to eq('sun.gif')
238
- expect(api_client.sanitize_filename('\var\tmp\sun.gif')).to eq('sun.gif')
239
- expect(api_client.sanitize_filename('c:\var\tmp\sun.gif')).to eq('sun.gif')
240
- expect(api_client.sanitize_filename('.\sun.gif')).to eq('sun.gif')
241
- end
242
- end
243
- end
@@ -1,42 +0,0 @@
1
- =begin
2
- #DocRaptor
3
-
4
- #A native client library for the DocRaptor HTML to PDF/XLS service.
5
-
6
- OpenAPI spec version: 1.4.0
7
-
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.14
10
-
11
- =end
12
-
13
- require 'spec_helper'
14
-
15
- describe DocRaptor::Configuration do
16
- let(:config) { DocRaptor::Configuration.default }
17
-
18
- before(:each) do
19
- # uncomment below to setup host and base_path
20
- # require 'URI'
21
- # uri = URI.parse("https://docraptor.com")
22
- # DocRaptor.configure do |c|
23
- # c.host = uri.host
24
- # c.base_path = uri.path
25
- # end
26
- end
27
-
28
- describe '#base_url' do
29
- it 'should have the default value' do
30
- # uncomment below to test default value of the base path
31
- # expect(config.base_url).to eq("https://docraptor.com")
32
- end
33
-
34
- it 'should remove trailing slashes' do
35
- [nil, '', '/', '//'].each do |base_path|
36
- config.base_path = base_path
37
- # uncomment below to test trailing slashes
38
- # expect(config.base_url).to eq("https://docraptor.com")
39
- end
40
- end
41
- end
42
- end
data/spec/spec_helper.rb DELETED
@@ -1,111 +0,0 @@
1
- =begin
2
- #DocRaptor
3
-
4
- #A native client library for the DocRaptor HTML to PDF/XLS service.
5
-
6
- OpenAPI spec version: 1.4.0
7
-
8
- Generated by: https://github.com/swagger-api/swagger-codegen.git
9
- Swagger Codegen version: 2.4.14
10
-
11
- =end
12
-
13
- # load the gem
14
- require 'docraptor'
15
-
16
- # The following was generated by the `rspec --init` command. Conventionally, all
17
- # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
18
- # The generated `.rspec` file contains `--require spec_helper` which will cause
19
- # this file to always be loaded, without a need to explicitly require it in any
20
- # files.
21
- #
22
- # Given that it is always loaded, you are encouraged to keep this file as
23
- # light-weight as possible. Requiring heavyweight dependencies from this file
24
- # will add to the boot time of your test suite on EVERY test run, even for an
25
- # individual file that may not need all of that loaded. Instead, consider making
26
- # a separate helper file that requires the additional dependencies and performs
27
- # the additional setup, and require it from the spec files that actually need
28
- # it.
29
- #
30
- # The `.rspec` file also contains a few flags that are not defaults but that
31
- # users commonly want.
32
- #
33
- # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
34
- RSpec.configure do |config|
35
- # rspec-expectations config goes here. You can use an alternate
36
- # assertion/expectation library such as wrong or the stdlib/minitest
37
- # assertions if you prefer.
38
- config.expect_with :rspec do |expectations|
39
- # This option will default to `true` in RSpec 4. It makes the `description`
40
- # and `failure_message` of custom matchers include text for helper methods
41
- # defined using `chain`, e.g.:
42
- # be_bigger_than(2).and_smaller_than(4).description
43
- # # => "be bigger than 2 and smaller than 4"
44
- # ...rather than:
45
- # # => "be bigger than 2"
46
- expectations.include_chain_clauses_in_custom_matcher_descriptions = true
47
- end
48
-
49
- # rspec-mocks config goes here. You can use an alternate test double
50
- # library (such as bogus or mocha) by changing the `mock_with` option here.
51
- config.mock_with :rspec do |mocks|
52
- # Prevents you from mocking or stubbing a method that does not exist on
53
- # a real object. This is generally recommended, and will default to
54
- # `true` in RSpec 4.
55
- mocks.verify_partial_doubles = true
56
- end
57
-
58
- # The settings below are suggested to provide a good initial experience
59
- # with RSpec, but feel free to customize to your heart's content.
60
- =begin
61
- # These two settings work together to allow you to limit a spec run
62
- # to individual examples or groups you care about by tagging them with
63
- # `:focus` metadata. When nothing is tagged with `:focus`, all examples
64
- # get run.
65
- config.filter_run :focus
66
- config.run_all_when_everything_filtered = true
67
-
68
- # Allows RSpec to persist some state between runs in order to support
69
- # the `--only-failures` and `--next-failure` CLI options. We recommend
70
- # you configure your source control system to ignore this file.
71
- config.example_status_persistence_file_path = "spec/examples.txt"
72
-
73
- # Limits the available syntax to the non-monkey patched syntax that is
74
- # recommended. For more details, see:
75
- # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
76
- # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
77
- # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
78
- config.disable_monkey_patching!
79
-
80
- # This setting enables warnings. It's recommended, but in some cases may
81
- # be too noisy due to issues in dependencies.
82
- config.warnings = true
83
-
84
- # Many RSpec users commonly either run the entire suite or an individual
85
- # file, and it's useful to allow more verbose output when running an
86
- # individual spec file.
87
- if config.files_to_run.one?
88
- # Use the documentation formatter for detailed output,
89
- # unless a formatter has already been configured
90
- # (e.g. via a command-line flag).
91
- config.default_formatter = 'doc'
92
- end
93
-
94
- # Print the 10 slowest examples and example groups at the
95
- # end of the spec run, to help surface which specs are running
96
- # particularly slow.
97
- config.profile_examples = 10
98
-
99
- # Run specs in random order to surface order dependencies. If you find an
100
- # order dependency and want to debug it, you can fix the order by providing
101
- # the seed, which is printed after each run.
102
- # --seed 1234
103
- config.order = :random
104
-
105
- # Seed global randomization in this process using the `--seed` CLI option.
106
- # Setting this allows you to use `--seed` to deterministically reproduce
107
- # test failures related to randomization by passing the same `--seed` value
108
- # as the one that triggered the failure.
109
- Kernel.srand config.seed
110
- =end
111
- end