onlyoffice_documentserver_conversion_helper 0.2.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ec70ac63da7e4343adc0714c8d3070924255bbdfed26288e3932daaf5d4f5e51
4
- data.tar.gz: 1f8824424355ec16c3199e518fad561f2c203ab847abce109497ca8218730fb5
3
+ metadata.gz: e61195de2597796b8ec3e2e69262e4fc8f6f0661c349c1e1ec54ea19e11c5999
4
+ data.tar.gz: 7ddd137983f8365ace8d38cfb071fdb270dafa9e00da98ba27a1ac4c009cfb2b
5
5
  SHA512:
6
- metadata.gz: f2ba7ff7b4a7f2cbaa56283c0facfa732dee3e6c96115a959678c48f8f801bd308a11dca297a127b87aa46112f9e47aa145a3272f3118c469aee53615bd808a4
7
- data.tar.gz: 4a1dca87fdc27a2d58bd06097a2ff723e8d21aa07ca30031576410a98928273dbb39b33965f6054e81cc0b363aef8bd4e49fba00d34bc8f1b7b0aeae60bd075b
6
+ metadata.gz: 594b183a8df277b5fbf9fec7530bc5852b272bda90facf702d5f796c121cdf58c6e49fd575d63cab508a6f0539f31883e358ee5d1ec98b8f24ef6e790d7b1948
7
+ data.tar.gz: 14987d0620cc3fd31aec3e6e647bb7d4b5318e7a149804c0816e35b08cd590b88109405fdfb5ea42b50a559e0fe4cd0b1f920cbdad0acd0df85cc11543f18979
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeDocumentserverConversionHelper
4
+ # Class for unknown convert format
5
+ class UnknownConvertFormatError < StandardError; end
6
+ end
@@ -4,6 +4,6 @@ module OnlyofficeDocumentserverConversionHelper
4
4
  # This module holds the OnlyofficeDocumentserverConversionHelper gem version
5
5
  module Version
6
6
  # @return [String] version of gem
7
- STRING = '0.2.0'
7
+ STRING = '0.5.0'
8
8
  end
9
9
  end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module OnlyofficeDocumentserverConversionHelper
4
+ # Class for parse Xml responce
5
+ class XmlResponceParser
6
+ def initialize(string_with_xml, file_format, result_in_zip: false)
7
+ @string_with_xml = string_with_xml
8
+ @file_format = file_format
9
+ @result_in_zip = result_in_zip
10
+ end
11
+
12
+ # @return [String] output file format
13
+ def file_format
14
+ return 'zip' if @result_in_zip
15
+
16
+ @file_format
17
+ end
18
+
19
+ # Method parses server response
20
+ # returning url with unescape HTML
21
+ # @return [String] URL
22
+ def result_url
23
+ res_result = /(http|https).*\.(#{file_format})/.match(@string_with_xml)
24
+ CGI.unescapeHTML(res_result.to_s)
25
+ end
26
+ end
27
+ end
@@ -4,6 +4,8 @@ require 'jwt'
4
4
  require 'net/http'
5
5
  require 'securerandom'
6
6
  require 'timeout'
7
+ require_relative 'onlyoffice_documentserver_conversion_helper/exceptions'
8
+ require_relative 'onlyoffice_documentserver_conversion_helper/xml_responce_parser'
7
9
  require_relative 'onlyoffice_documentserver_conversion_helper/version'
8
10
 
9
11
  # Stuff for working with conversion service
@@ -45,11 +47,14 @@ module OnlyofficeDocumentserverConversionHelper
45
47
  end
46
48
 
47
49
  # Auto detect output file format
50
+ # @raise [UnknownConvertFormatError] if file format is not known
48
51
  # @return [String] result format
49
52
  def output_file_type_auto
50
53
  return 'docx' if DOCUMENT_EXTENSIONS.include?(@input_filetype.upcase)
51
54
  return 'xlsx' if SPREADSHEET_EXTENSIONS.include?(@input_filetype.upcase)
52
55
  return 'pptx' if PRESENTATION_EXTENSIONS.include?(@input_filetype.upcase)
56
+
57
+ raise UnknownConvertFormatError, "Unknown convert auto format: #{@input_filetype}"
53
58
  end
54
59
 
55
60
  # @return [String] random generated key
@@ -78,21 +83,11 @@ module OnlyofficeDocumentserverConversionHelper
78
83
  params
79
84
  end
80
85
 
81
- # @return [String] with url to result file
82
- # @param [String] data is a response body
83
- # @param [String] file_format is a format of result file
84
- # Method will get link from response body.
85
- # Link start from 'https', and end from result file format
86
- def get_url_from_responce(data, file_format)
87
- res_result = /(http|https).*(#{file_format})/.match(data)
88
- CGI.unescapeHTML(res_result.to_s)
89
- end
90
-
91
86
  # Add jwt data to request
92
87
  # @param [Net::HTTP::Post] request to add data
93
88
  # @return [Net::HTTP::Post] request with JWT
94
89
  def add_jwt_data(request)
95
- payload_to_encode = { 'payload' => '{}' }
90
+ payload_to_encode = { 'payload' => JSON.parse(request.body) }
96
91
  jwt_encoded = JWT.encode payload_to_encode, @jwt_key
97
92
  request[@jwt_header] = "#{@jwt_prefix} #{jwt_encoded}"
98
93
  end
@@ -108,7 +103,7 @@ module OnlyofficeDocumentserverConversionHelper
108
103
  add_jwt_data(req)
109
104
  http = Net::HTTP.new(uri.host, uri.port)
110
105
  http.read_timeout = @timeout
111
- http.use_ssl = true if uri.scheme == 'https'
106
+ http.use_ssl = (uri.scheme == 'https')
112
107
  send_request(http, req)
113
108
  end
114
109
 
@@ -128,8 +123,8 @@ module OnlyofficeDocumentserverConversionHelper
128
123
 
129
124
  # @return [Hash] with usl for download file
130
125
  # after conversion and response data
131
- # @param [Hash] args collect all parameters of request
132
- # OR [String] if you not need to use advenced params
126
+ # @param [Hash, Srting] args collect all parameters of request
127
+ # OR string if you not need to use advenced params
133
128
  # and want to set all etc params automaticly.
134
129
  # All args, except of :url and if it is [Hash],
135
130
  # will be attache in end of request
@@ -147,8 +142,23 @@ module OnlyofficeDocumentserverConversionHelper
147
142
  @input_filetype = File.extname(@file_url).delete('.')
148
143
  advanced_params = autocomplete_missing_params(args)
149
144
  data = request(convert_url, advanced_params)
150
- url = get_url_from_responce(data, advanced_params[:outputtype])
145
+ url = XmlResponceParser.new(data,
146
+ advanced_params[:outputtype],
147
+ result_in_zip: result_in_zip?(advanced_params)).result_url
151
148
  { url: url, data: data }
152
149
  end
150
+
151
+ private
152
+
153
+ # Will be result of convert in zip?
154
+ # @param [Hash] params with options
155
+ # @return [Boolean]
156
+ def result_in_zip?(params)
157
+ return false unless params.key?(:thumbnail)
158
+ return false unless params[:thumbnail].key?(:first)
159
+ return true unless params[:thumbnail][:first]
160
+
161
+ false
162
+ end
153
163
  end
154
164
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: onlyoffice_documentserver_conversion_helper
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ONLYOFFICE
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2021-01-27 00:00:00.000000000 Z
13
+ date: 2022-03-30 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: jwt
@@ -26,20 +26,6 @@ dependencies:
26
26
  - - "~>"
27
27
  - !ruby/object:Gem::Version
28
28
  version: '2'
29
- - !ruby/object:Gem::Dependency
30
- name: codecov
31
- requirement: !ruby/object:Gem::Requirement
32
- requirements:
33
- - - "~>"
34
- - !ruby/object:Gem::Version
35
- version: '0'
36
- type: :development
37
- prerelease: false
38
- version_requirements: !ruby/object:Gem::Requirement
39
- requirements:
40
- - - "~>"
41
- - !ruby/object:Gem::Version
42
- version: '0'
43
29
  - !ruby/object:Gem::Dependency
44
30
  name: overcommit
45
31
  requirement: !ruby/object:Gem::Requirement
@@ -138,6 +124,20 @@ dependencies:
138
124
  - - "~>"
139
125
  - !ruby/object:Gem::Version
140
126
  version: '2'
127
+ - !ruby/object:Gem::Dependency
128
+ name: simplecov
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '0'
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: yard
143
143
  requirement: !ruby/object:Gem::Requirement
@@ -166,8 +166,10 @@ extensions: []
166
166
  extra_rdoc_files: []
167
167
  files:
168
168
  - lib/onlyoffice_documentserver_conversion_helper.rb
169
+ - lib/onlyoffice_documentserver_conversion_helper/exceptions.rb
169
170
  - lib/onlyoffice_documentserver_conversion_helper/name.rb
170
171
  - lib/onlyoffice_documentserver_conversion_helper/version.rb
172
+ - lib/onlyoffice_documentserver_conversion_helper/xml_responce_parser.rb
171
173
  homepage: https://github.com/ONLYOFFICE-QA/onlyoffice_documentserver_conversion_helper
172
174
  licenses:
173
175
  - AGPL-3.0
@@ -177,6 +179,7 @@ metadata:
177
179
  documentation_uri: https://www.rubydoc.info/gems/onlyoffice_documentserver_conversion_helper
178
180
  homepage_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_documentserver_conversion_helper
179
181
  source_code_uri: https://github.com/ONLYOFFICE-QA/onlyoffice_documentserver_conversion_helper
182
+ rubygems_mfa_required: 'true'
180
183
  post_install_message:
181
184
  rdoc_options: []
182
185
  require_paths:
@@ -192,7 +195,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
192
195
  - !ruby/object:Gem::Version
193
196
  version: '0'
194
197
  requirements: []
195
- rubygems_version: 3.2.6
198
+ rubygems_version: 3.3.10
196
199
  signing_key:
197
200
  specification_version: 4
198
201
  summary: onlyoffice_documentserver_conversion_helper Gem