ilovepdf 1.0.1 → 1.3.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ab9733af9742fe03c368936f81761ca6578829d9
4
- data.tar.gz: b669af4fc8cabbdbcdfe4878ae410bc9193be00d
3
+ metadata.gz: 40f8c75f0001c5018bfe9916546965192e6581d8
4
+ data.tar.gz: 9ca611361ccd485ea7a84555dec6a9b63879adf2
5
5
  SHA512:
6
- metadata.gz: 2ec1cbd5795ff1b5cbe7f7f47bb887254fb7ed543cfb0e97fd49c8ff360f76b0fc0a1cfd9d98ba6c19681120116259e71d51afe32558bac760eaae609dd9d854
7
- data.tar.gz: aa4ce004721604ac3fe6930ea5a1bace19bd327d60e317612ccf442a3476f3a14dc3e0d7fe0523accafc122cbff05dc4c3822bcafb91ecceb0c044733c1e75a9
6
+ metadata.gz: 474cde19c9fa02183d3a967e7d2f4ded8e6e008e0a8d05b1f73f8e087618774e996a5d2c59893aad552c4d3d724f542224326668f91f59fbf21d214c230cb33f
7
+ data.tar.gz: 489a5bf27973204b423ef75ec5039727d54c3073262011d02defddd90924e2255a4834b2a374c9425ec5e5e3efa8f73bc95fa65d547f0eda8f675720c7c5d887
data/.travis.yml CHANGED
@@ -1,5 +1,9 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.0.0
5
- before_install: gem install bundler -v 1.14.6
4
+ - 2.5.0
5
+ branches:
6
+ only:
7
+ - master
8
+ - development
9
+ before_install: gem install bundler -v 2.1.4
data/LICENSE CHANGED
File without changes
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  iLovePDF Api - Ruby Library
2
2
  --------------------------
3
+ [![Build Status](https://travis-ci.org/ilovepdf/ilovepdf-php.svg?branch=master)](https://travis-ci.org/ilovepdf/ilovepdf-php)
3
4
  [![GitHub version](https://badge.fury.io/gh/ilovepdf%2Filovepdf-ruby.svg)](https://badge.fury.io/gh/ilovepdf%2Filovepdf-ruby)
4
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
6
 
@@ -22,11 +23,13 @@ Develop and automate PDF processing tasks like:
22
23
  * Stamp a Watermark
23
24
  * Repair PDF
24
25
  * PDF to PDF/A
26
+ * Validate PDF/A
27
+ * Extract
25
28
 
26
29
  Each one with several settings to get your desired results.
27
30
 
28
31
  ## Requirements
29
- Ruby 2.0 or greater
32
+ Ruby 2.3 or greater
30
33
 
31
34
  ## Installation
32
35
 
@@ -103,6 +106,15 @@ end
103
106
  | packaged_filename | This allows you to specify the filename of the compressed file in case there is more than 1 file to be downloaded | |
104
107
  | output_filename | The final name of the processed file | |
105
108
 
109
+ #### Methods to query after performing the **execute** API method:
110
+ * result: It has stored the last **Ilovepdf::Response**
111
+
112
+ #### Methods to query after performing the **download** API method:
113
+ * download_info: Returns a [struct](https://ruby-doc.org/core-2.2.0/Struct.html) with the following info
114
+ * :output_filename
115
+ * :output_file
116
+ * :output_filetype
117
+
106
118
  ### Tool attributes
107
119
 
108
120
  All tools have specific attributes you can access and modify.
data/ilovepdf.gemspec CHANGED
@@ -20,14 +20,14 @@ Gem::Specification.new do |spec|
20
20
  spec.bindir = "exe"
21
21
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
22
22
  spec.require_paths = ["lib"]
23
- spec.required_ruby_version = '>= 2.0'
23
+ spec.required_ruby_version = '>= 2.3'
24
24
 
25
25
  spec.add_runtime_dependency 'rest-client', '~> 2'
26
- spec.add_runtime_dependency 'jwt', '~> 1.5'
26
+ spec.add_runtime_dependency 'jwt', '~> 2'
27
27
 
28
28
 
29
- spec.add_development_dependency "bundler", "~> 1.14"
30
- spec.add_development_dependency "rake", "~> 10.0"
29
+ spec.add_development_dependency "bundler", ">= 1.16"
30
+ spec.add_development_dependency "rake", ">= 12.3.3"
31
31
  spec.add_development_dependency "rspec", "~> 3.0"
32
32
  spec.add_development_dependency "byebug", "~> 9"
33
33
  spec.add_development_dependency "webmock", "~> 3"
@@ -47,5 +47,7 @@ module Ilovepdf
47
47
  super("Provided argument is invalid. Valid values: #{valid_values.join(', ')}")
48
48
  end
49
49
  end
50
+ class UnsupportedFunctionalityError < ::Ilovepdf::Error
51
+ end
50
52
  end
51
53
  end
data/lib/ilovepdf/file.rb CHANGED
@@ -12,12 +12,13 @@ module Ilovepdf
12
12
  end
13
13
 
14
14
  def file_options
15
- {
15
+ h = {
16
16
  server_filename: self.server_filename,
17
17
  filename: self.filename,
18
- rotate: self.rotate,
19
- password: self.password
18
+ rotate: self.rotate
20
19
  }
20
+ h[:password] = self.password if self.password
21
+ h
21
22
  end
22
23
 
23
24
  def rotate= degrees
@@ -0,0 +1,13 @@
1
+ module Ilovepdf
2
+ module Helper
3
+ extend self
4
+
5
+ def underscore_str(str)
6
+ str.replace(str.scan(/[A-Z][a-z]*/).join("_").downcase)
7
+ end
8
+
9
+ def camelize_str(str)
10
+ str.split('_').map(&:capitalize).join
11
+ end
12
+ end
13
+ end
@@ -1,9 +1,9 @@
1
1
  module Ilovepdf
2
2
  class Ilovepdf
3
- attr_accessor :api_version, :token, :encrypt_key ,:debug
3
+ attr_accessor :api_version, :token, :encrypt_key, :debug, :timeout, :long_timeout
4
4
 
5
5
  START_SERVER = 'https://api.ilovepdf.com'.freeze
6
- API_VERSION = 'v1'.freeze
6
+ API_VERSION = 'ruby.v1'.freeze
7
7
  TOKEN_ALGORITHM = 'HS256'.freeze
8
8
  ALL_ENDPOINTS = [:start, :upload, :process, :download, :task].freeze
9
9
  LONG_JOB_ENDPOINTS = [:process, :upload, :download].freeze
@@ -13,10 +13,13 @@ module Ilovepdf
13
13
  def initialize(public_key=nil, secret_key=nil)
14
14
  set_api_keys(public_key, secret_key)
15
15
  api_version = API_VERSION
16
+ self.timeout = 10
17
+ self.long_timeout = nil
16
18
  end
17
19
 
18
20
  def new_task(tool_name)
19
- task_klass = ::Ilovepdf::Tool.const_get(tool_name.to_s.capitalize) rescue false
21
+ camelized_name = Helper.camelize_str(tool_name.to_s)
22
+ task_klass = ::Ilovepdf::Tool.const_get(camelized_name) rescue false
20
23
  unless task_klass
21
24
  raise ::Ilovepdf::Error.new("Unknown tool '#{tool_name}'. Available tools: #{self.class.all_tool_names.to_s}")
22
25
  end
@@ -24,7 +27,7 @@ module Ilovepdf
24
27
  end
25
28
 
26
29
  def self.all_tool_names
27
- ::Ilovepdf::Tool.constants.map(&:downcase)
30
+ ::Ilovepdf::Tool.constants.map{|tool_name| Helper.underscore_str(tool_name.to_s)}
28
31
  end
29
32
 
30
33
  def self.raise_exceptions=(value)
@@ -62,7 +65,7 @@ module Ilovepdf
62
65
  def send_request(http_method, endpoint, extra_opts={})
63
66
  to_server = worker_server ? worker_server : START_SERVER
64
67
 
65
- timeout_to_use = LONG_JOB_ENDPOINTS.include?(endpoint.to_sym) ? nil : 10
68
+ timeout_to_use = LONG_JOB_ENDPOINTS.include?(endpoint.to_sym) ? self.long_timeout : self.timeout
66
69
  extra_opts[:body] ||= {}
67
70
  extra_opts[:headers] ||= {}
68
71
 
data/lib/ilovepdf/task.rb CHANGED
@@ -3,7 +3,10 @@ module Ilovepdf
3
3
  attr_accessor :task_id, :tool, :packaged_filename, :output_filename,
4
4
  :ignore_errors, :ignore_password, :try_pdf_repair
5
5
 
6
- API_PARAMS = []
6
+ attr_reader :result
7
+
8
+ API_PARAMS = []
9
+ DOWNLOAD_INFO = [:output_filename, :output_file, :output_filetype]
7
10
 
8
11
  def initialize(public_key, secret_key)
9
12
  super(public_key, secret_key)
@@ -38,8 +41,29 @@ module Ilovepdf
38
41
  files.last
39
42
  end
40
43
 
41
- def download(path=nil)
42
- download_file(path)
44
+ def download(path=nil, create_directory: false)
45
+ download_file
46
+
47
+ if path
48
+ path = Pathname.new(path).to_s if path.is_a?(Pathname)
49
+ path.chop! if path.end_with? '/'
50
+ else
51
+ path = '.'
52
+ end
53
+
54
+ destination = "#{path}/#{download_info.output_filename}"
55
+ FileUtils.mkdir_p(path) if create_directory
56
+ ::File.open(destination, 'wb'){|file| file.write(download_info.output_file) }
57
+ true
58
+ end
59
+
60
+ def blob
61
+ download_file
62
+ download_info.output_file
63
+ end
64
+
65
+ def download_info
66
+ @download_info ||= Struct.new(*DOWNLOAD_INFO).new
43
67
  end
44
68
 
45
69
  # [API Methods] Actions on task
@@ -49,7 +73,7 @@ module Ilovepdf
49
73
  end
50
74
 
51
75
  def execute
52
- perform_process_request
76
+ @result = perform_process_request
53
77
  end
54
78
 
55
79
  def delete!
@@ -87,7 +111,7 @@ module Ilovepdf
87
111
  @files = new_array_of_files
88
112
  end
89
113
 
90
- def download_file path
114
+ def download_file
91
115
  response = perform_filedownload_request
92
116
  content_disposition = response.headers[:content_disposition]
93
117
 
@@ -98,15 +122,9 @@ module Ilovepdf
98
122
  filename = match_data[1].gsub('"', '')
99
123
  end
100
124
 
101
- if path
102
- path = Pathname.new(path).to_s if path.is_a?(Pathname)
103
- path.chop! if path.end_with? '/'
104
- else
105
- path = '.'
106
- end
107
- destination = "#{path}/#{filename}"
108
- ::File.open(destination, 'wb'){|file| file.write(response.raw_body) }
109
- file = response.raw_body
125
+ download_info.output_filename = filename
126
+ download_info.output_file = response.raw_body
127
+ download_info.output_filetype = ::File.extname(filename)
110
128
  true
111
129
  end
112
130
 
@@ -0,0 +1,18 @@
1
+ module Ilovepdf
2
+ module Tool
3
+ class Extract < ::Ilovepdf::Task
4
+ API_PARAMS = [:detailed]
5
+ attr_accessor *API_PARAMS
6
+
7
+ def initialize(public_key, secret_key)
8
+ self.tool = :extract
9
+ super(public_key, secret_key)
10
+ end
11
+
12
+ def detailed
13
+ @detailed ||= false
14
+ end
15
+
16
+ end
17
+ end
18
+ end
@@ -9,8 +9,8 @@ module Ilovepdf
9
9
 
10
10
  attr_accessor *API_PARAMS
11
11
 
12
- VERTICAL_POSITION_VALUES = ['bottom', 'top']
13
- HORIZONTAL_POSITION_VALUES = ['left', 'middle', 'right']
12
+ VERTICAL_POSITION_VALUES = ['bottom', 'middle' ,'top']
13
+ HORIZONTAL_POSITION_VALUES = ['left', 'center', 'right']
14
14
  FONT_FAMILY_VALUES = [ 'Arial', 'Arial Unicode MS', 'Verdana', 'Courier',
15
15
  'Times New Roman', 'Comic Sans MS',
16
16
  'WenQuanYi Zen Hei', 'Lohit Marathi'
@@ -1,7 +1,7 @@
1
1
  module Ilovepdf
2
2
  module Tool
3
3
  class Pdfa < ::Ilovepdf::Task
4
- API_PARAMS = [:conformance]
4
+ API_PARAMS = [:conformance, :allow_downgrade]
5
5
  attr_accessor *API_PARAMS
6
6
 
7
7
  CONFORMANCE_VALUES = ['pdfa-1b', 'pdfa-1a', 'pdfa-2b', 'pdfa-2u',
@@ -11,6 +11,7 @@ module Ilovepdf
11
11
  def initialize(public_key, secret_key)
12
12
  self.tool = :pdfa
13
13
  super(public_key, secret_key)
14
+ self.allow_downgrade = true
14
15
  end
15
16
 
16
17
  def conformance= new_val
@@ -19,7 +20,7 @@ module Ilovepdf
19
20
  end
20
21
 
21
22
  def conformance
22
- @conformance ||= 'default'
23
+ @conformance ||= 'pdfa-2b'
23
24
  end
24
25
  end
25
26
  end
@@ -0,0 +1,31 @@
1
+ module Ilovepdf
2
+ module Tool
3
+ class ValidatePdfa < ::Ilovepdf::Task
4
+ API_PARAMS = [:conformance]
5
+ attr_accessor *API_PARAMS
6
+
7
+ CONFORMANCE_VALUES = ['pdfa-1b', 'pdfa-1a', 'pdfa-2b', 'pdfa-2u',
8
+ 'pdfa-2a', 'pdfa-3b', 'pdfa-3u', 'pdfa-3a'
9
+ ]
10
+
11
+ def initialize(public_key, secret_key)
12
+ self.tool = :validatepdfa
13
+ super(public_key, secret_key)
14
+ end
15
+
16
+ def conformance= new_val
17
+ raise Errors::ArgumentEnumError.new(CONFORMANCE_VALUES) unless CONFORMANCE_VALUES.include? new_val
18
+ @conformance = new_val
19
+ end
20
+
21
+ def conformance
22
+ @conformance ||= 'pdfa-2b'
23
+ end
24
+
25
+ private
26
+ def download_file
27
+ raise ::Ilovepdf::Errors::UnsupportedFunctionalityError.new('This tool does not download files (Check in the sample files how to use it)')
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,3 +1,3 @@
1
1
  module Ilovepdf
2
- VERSION = "1.0.1"
2
+ VERSION = "1.3.1"
3
3
  end
data/lib/ilovepdf.rb CHANGED
@@ -9,6 +9,7 @@ require 'rest-client'
9
9
  # Base classes
10
10
  require "ilovepdf/errors"
11
11
  require "ilovepdf/response"
12
+ require "ilovepdf/helper"
12
13
  require "ilovepdf/ilovepdf"
13
14
  require "ilovepdf/file"
14
15
  require "ilovepdf/task"
@@ -20,12 +21,15 @@ require 'ilovepdf/tool/merge'
20
21
  require 'ilovepdf/tool/officepdf'
21
22
  require 'ilovepdf/tool/pagenumber'
22
23
  require 'ilovepdf/tool/pdfa'
24
+ require 'ilovepdf/tool/validate_pdfa'
23
25
  require 'ilovepdf/tool/pdfjpg'
24
26
  require 'ilovepdf/tool/repair'
25
27
  require 'ilovepdf/tool/rotate'
26
28
  require 'ilovepdf/tool/split'
27
29
  require 'ilovepdf/tool/unlock'
28
30
  require 'ilovepdf/tool/watermark'
31
+ require 'ilovepdf/tool/protect'
32
+ require 'ilovepdf/tool/extract'
29
33
 
30
34
  module Ilovepdf
31
35
  class << self
@@ -0,0 +1,23 @@
1
+ require "bundler/setup"
2
+ require 'ilovepdf'
3
+
4
+ # You can call task class directly
5
+ my_task = Ilovepdf::Tool::Extract.new("PUBLIC_KEY", "SECRET_KEY");
6
+
7
+ # File object keeps information about its server_filename and the properties you can set
8
+ file = my_task.add_file '/path/to/file/document.pdf'
9
+
10
+ # By setting this parameter to true,
11
+ # we'll have detailed contents extraction into a CSV-formatted file
12
+ my_task.detailed = true
13
+
14
+ # and set name for output file.
15
+ # the task will set the correct file extension for you.
16
+ my_task.output_filename = 'csv_filename'
17
+
18
+ # Process files
19
+ response = my_task.execute
20
+
21
+ # and finally download the file. If no path is set, it will be downloaded on your current working directory
22
+ # It will download a text file with Linux line endings
23
+ my_task.download
@@ -0,0 +1,15 @@
1
+ require "bundler/setup"
2
+ require 'ilovepdf'
3
+
4
+ # You can call task class directly
5
+ my_task = Ilovepdf::Tool::Extract.new("PUBLIC_KEY", "SECRET_KEY");
6
+
7
+ # File object keeps information about its server_filename and the properties you can set
8
+ file = my_task.add_file '/path/to/file/document.pdf'
9
+
10
+ # Process files
11
+ response = my_task.execute
12
+
13
+ # and finally download the file. If no path is set, it will be downloaded on your current working directory
14
+ # It will download a text file with Linux line endings
15
+ my_task.download
@@ -0,0 +1,25 @@
1
+ require "bundler/setup"
2
+ require 'ilovepdf'
3
+
4
+ # You can call task class directly
5
+ my_task = Ilovepdf::Tool::Imagepdf.new("PUBLIC_KEY", "SECRET_KEY");
6
+
7
+ # File object keeps information about its server_filename and the properties you can set
8
+ file = my_task.add_file '/path/to/file/photo.png'
9
+ file2 = my_task.add_file '/path/to/file/image.tiff'
10
+
11
+ # Merge After: Default is true. If it is false then it will download a zip file with a pdf for each image
12
+ my_task.merge_after = false
13
+
14
+ # and set name for output file.
15
+ # the task will set the correct file extension for you.
16
+ my_task.output_filename = 'pdf_filename'
17
+
18
+ # and name for splitted document (inside the zip file)
19
+ my_task.packaged_filename = 'zip_filename'
20
+
21
+ # Process files
22
+ response = my_task.execute
23
+
24
+ # and finally download the file. If no path is set, it will be downloaded on your current working directory
25
+ my_task.download
@@ -0,0 +1,14 @@
1
+ require "bundler/setup"
2
+ require 'ilovepdf'
3
+
4
+ # You can call task class directly
5
+ my_task = Ilovepdf::Tool::Imagepdf.new("PUBLIC_KEY", "SECRET_KEY");
6
+
7
+ # File object keeps information about its server_filename and the properties you can set
8
+ file = my_task.add_file '/path/to/file/photo.png'
9
+
10
+ # Process files
11
+ response = my_task.execute
12
+
13
+ # and finally download the file. If no path is set, it will be downloaded on your current working directory
14
+ my_task.download
@@ -8,7 +8,10 @@ my_task = Ilovepdf::Tool::Pdfa.new("PUBLIC_KEY", "SECRET_KEY");
8
8
  file = my_task.add_file '/path/to/file/document.pdf'
9
9
 
10
10
  # Set conformance
11
- file.conformance = 'pdfa-1b'
11
+ my_task.conformance = 'pdfa-2a'
12
+
13
+ # don't allow downgrading in case your conformance level fails
14
+ file.allow_downgrade = false
12
15
 
13
16
  # and set name for output file.
14
17
  # the task will set the correct file extension for you.
@@ -7,9 +7,6 @@ my_task = Ilovepdf::Tool::Pdfa.new("PUBLIC_KEY", "SECRET_KEY");
7
7
  # File object keeps information about its server_filename and the properties you can set
8
8
  file = my_task.add_file '/path/to/file/document.pdf'
9
9
 
10
- # Set conformance
11
- file.conformance = 'pdfa-1b'
12
-
13
10
  # Finally is time to process the files. i.e We'll send them to Ilovepdf servers :)
14
11
  response = my_task.execute
15
12
 
@@ -0,0 +1,18 @@
1
+ require "bundler/setup"
2
+ require 'ilovepdf'
3
+
4
+ # You can call task class directly
5
+ my_task = Ilovepdf::Tool::ValidatePdfa.new("PUBLIC_KEY", "SECRET_KEY");
6
+
7
+ # File object keeps information about its server_filename and the properties you can set
8
+ file = my_task.add_file '/path/to/file/document.pdf'
9
+
10
+ file.conformance = 'pdfa-2a'
11
+
12
+ # Finally is time to process the files. i.e We'll send them to Ilovepdf servers :)
13
+ response = my_task.execute
14
+
15
+ response.body['validations'].each do |results|
16
+ file = my_task.files.find{|file| file.server_filename == results['server_filename']}
17
+ puts "File with name '#{file.filename}' has the following status: #{results['status']}"
18
+ end
@@ -0,0 +1,16 @@
1
+ require "bundler/setup"
2
+ require 'ilovepdf'
3
+
4
+ # You can call task class directly
5
+ my_task = Ilovepdf::Tool::ValidatePdfa.new("PUBLIC_KEY", "SECRET_KEY");
6
+
7
+ # File object keeps information about its server_filename and the properties you can set
8
+ file = my_task.add_file '/path/to/file/document.pdf'
9
+
10
+ # Finally is time to process the files. i.e We'll send them to Ilovepdf servers :)
11
+ response = my_task.execute
12
+
13
+ response.body['validations'].each do |results|
14
+ file = my_task.files.find{|file| file.server_filename == results['server_filename']}
15
+ puts "File with name '#{file.filename}' has the following status: #{results['status']}"
16
+ end
metadata CHANGED
@@ -1,125 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ilovepdf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leonardo Collazo
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-04-27 00:00:00.000000000 Z
11
+ date: 2021-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '2'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: jwt
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.5'
33
+ version: '2'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.5'
40
+ version: '2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.14'
47
+ version: '1.16'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ~>
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.14'
54
+ version: '1.16'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: 12.3.3
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: 12.3.3
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - "~>"
74
74
  - !ruby/object:Gem::Version
75
75
  version: '3.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ~>
80
+ - - "~>"
81
81
  - !ruby/object:Gem::Version
82
82
  version: '3.0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
89
  version: '9'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '9'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: webmock
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '3'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '3'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: addressable
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ~>
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: '2.5'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ~>
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: '2.5'
125
125
  description: Develop and automate PDF processing tasks like Compress PDF, Merge PDF,
@@ -132,10 +132,10 @@ executables: []
132
132
  extensions: []
133
133
  extra_rdoc_files: []
134
134
  files:
135
- - .editorconfig
136
- - .gitignore
137
- - .rspec
138
- - .travis.yml
135
+ - ".editorconfig"
136
+ - ".gitignore"
137
+ - ".rspec"
138
+ - ".travis.yml"
139
139
  - Gemfile
140
140
  - LICENSE
141
141
  - README.md
@@ -146,10 +146,12 @@ files:
146
146
  - lib/ilovepdf.rb
147
147
  - lib/ilovepdf/errors.rb
148
148
  - lib/ilovepdf/file.rb
149
+ - lib/ilovepdf/helper.rb
149
150
  - lib/ilovepdf/ilovepdf.rb
150
151
  - lib/ilovepdf/response.rb
151
152
  - lib/ilovepdf/task.rb
152
153
  - lib/ilovepdf/tool/compress.rb
154
+ - lib/ilovepdf/tool/extract.rb
153
155
  - lib/ilovepdf/tool/imagepdf.rb
154
156
  - lib/ilovepdf/tool/merge.rb
155
157
  - lib/ilovepdf/tool/officepdf.rb
@@ -161,10 +163,15 @@ files:
161
163
  - lib/ilovepdf/tool/rotate.rb
162
164
  - lib/ilovepdf/tool/split.rb
163
165
  - lib/ilovepdf/tool/unlock.rb
166
+ - lib/ilovepdf/tool/validate_pdfa.rb
164
167
  - lib/ilovepdf/tool/watermark.rb
165
168
  - lib/ilovepdf/version.rb
166
169
  - samples/compress_advanced.rb
167
170
  - samples/compress_basic.rb
171
+ - samples/extract_advanced.rb
172
+ - samples/extract_basic.rb
173
+ - samples/imagepdf_advanced.rb
174
+ - samples/imagepdf_basic.rb
168
175
  - samples/merge_advanced.rb
169
176
  - samples/merge_basic.rb
170
177
  - samples/pdfa_advanced.rb
@@ -179,6 +186,8 @@ files:
179
186
  - samples/try_catch_errors.rb
180
187
  - samples/unlock_advanced.rb
181
188
  - samples/unlock_basic.rb
189
+ - samples/validatepdfa_advanced.rb
190
+ - samples/validatepdfa_basic.rb
182
191
  - samples/watermark_advanced.rb
183
192
  - samples/watermark_basic.rb
184
193
  - uploads/sample_pdf.pdf
@@ -192,17 +201,17 @@ require_paths:
192
201
  - lib
193
202
  required_ruby_version: !ruby/object:Gem::Requirement
194
203
  requirements:
195
- - - '>='
204
+ - - ">="
196
205
  - !ruby/object:Gem::Version
197
- version: '2.0'
206
+ version: '2.3'
198
207
  required_rubygems_version: !ruby/object:Gem::Requirement
199
208
  requirements:
200
- - - '>='
209
+ - - ">="
201
210
  - !ruby/object:Gem::Version
202
211
  version: '0'
203
212
  requirements: []
204
213
  rubyforge_project:
205
- rubygems_version: 2.4.8
214
+ rubygems_version: 2.6.14
206
215
  signing_key:
207
216
  specification_version: 4
208
217
  summary: A library in Ruby for iLovePDF Api