pngcheck 0.2.4-x64-mingw-ucrt → 0.2.5-x64-mingw-ucrt

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: 3aca8ae1bc5d5342e1f4d185fb035afe1254f9f19c96280c002ba8c421ad2a49
4
- data.tar.gz: 720fd1c3830b17cf9f0af0341fa317d92c37f620df1097b3e9ef6a7e48ef41aa
3
+ metadata.gz: 7ea66a67ea2478557283fc8550cd09bbea1243c492bbee19ef726601f7695ae7
4
+ data.tar.gz: 1b32274920f2e4630db46d66e072449a5a7f03e22f8b21888352cc740cb057a5
5
5
  SHA512:
6
- metadata.gz: f3a6bd76ded8915d829ca3ad38c74f7e391c582de75742e87086e1d83131a53647ab5c7304bb76bae04992256af88464b507e8a5c9e2c0c5dde7393051b551a8
7
- data.tar.gz: 7dae4a12dbb41512c7db7b0e4edd287c1ed6524a54581951fb572982b4a81ec9a8ae26f5bed9211c0a98991c770dc724a20a197595eb3537b6c6e0c1ebb9c17c
6
+ metadata.gz: 04dec712ea62ccb38d3016ed29a538d1cf24a99ea8667bb338a85d77200cda19676b04648f0c54f6dcf60417745d72fa3957fbcd723f1bd8a33e642be27719bc
7
+ data.tar.gz: 75a3ee1ed6553fdb4a8ebb68931cc0917e039f467b752ad9a10f338e8e661adf8218adf18a02ab58e7f386555a87fe136e2eea975a89bac4b014552ce39fea41
data/README.adoc CHANGED
@@ -53,7 +53,7 @@ $ gem install pngcheck
53
53
 
54
54
  === Usage
55
55
 
56
- ==== PngCeck status codes
56
+ ==== PngCheck status codes
57
57
 
58
58
  [source,ruby]
59
59
  ----
@@ -84,7 +84,7 @@ valid = PngCheck.check_file("spec/examples/correct.png")
84
84
  Where:
85
85
 
86
86
  * `valid` is `true` if the file is correct
87
- * otherwise an exception of type `PngCheck::CorruptPngError` is raised
87
+ * otherwise an exception is raised. Possible exception types are `PngCheck::EmptyPngError`, `PngCheck::CorruptPngError`
88
88
 
89
89
 
90
90
  ==== Memory buffer processing
@@ -110,8 +110,8 @@ valid = PngCheck.check_buffer(data)
110
110
 
111
111
  Where:
112
112
 
113
- * `valid` is `true` if the file is correct
114
- * otherwise an exception of type `PngCheck::CorruptPngError` is raised
113
+ * `valid` is `true` if the buffer is correct image
114
+ * otherwise an exception is raised. Possible exception types are `PngCheck::EmptyPngError`, `PngCheck::CorruptPngError`
115
115
 
116
116
 
117
117
  ==== Pre-validation with libpng-ruby
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PngCheck
4
- VERSION = "0.2.4"
4
+ VERSION = "0.2.5"
5
5
  end
data/lib/pngcheck.rb CHANGED
@@ -5,8 +5,16 @@ require "tempfile"
5
5
  require_relative "pngcheck/version"
6
6
 
7
7
  module PngCheck
8
+ EMPTY_IMAGE = "Image is empty"
9
+
8
10
  class CorruptPngError < StandardError; end
9
11
 
12
+ class EmptyPngError < StandardError
13
+ def initialize(msg = EMPTY_IMAGE)
14
+ super
15
+ end
16
+ end
17
+
10
18
  STATUS_OK = 0
11
19
  STATUS_WARNING = 1 # an error in some circumstances but not in all
12
20
  STATUS_MINOR_ERROR = 3 # minor spec errors (e.g., out-of-range values)
@@ -37,25 +45,49 @@ module PngCheck
37
45
 
38
46
  class << self
39
47
  def analyze_file(path)
40
- Tempfile.open("captured-stream-") do |captured_stream|
41
- extra_msg = FFI::Buffer.alloc_out(EXTRA_MESSAGE_SIZE, 1, false)
42
- @@semaphore.lock
43
- status = pngcheck_file(path, captured_stream.path, extra_msg)
44
- @@semaphore.unlock
45
- # we assume that pngcheck_file returns either captured_stream
46
- # or extra message but not both
47
- [status, captured_stream.read + extra_msg.get_string(16)]
48
- end
48
+ return [STATUS_CRITICAL_ERROR, EMPTY_IMAGE] if File.zero? path
49
+
50
+ do_analyze_file(path)
49
51
  end
50
52
 
51
53
  def check_file(path)
52
54
  status, info = analyze_file(path)
55
+ raise EmptyPngError.new if info.eql? EMPTY_IMAGE
53
56
  raise CorruptPngError.new info unless status == STATUS_OK
54
57
 
55
58
  true
56
59
  end
57
60
 
58
61
  def analyze_buffer(data)
62
+ return [STATUS_CRITICAL_ERROR, EMPTY_IMAGE] if data.empty?
63
+
64
+ do_analyze_buffer(data)
65
+ end
66
+
67
+ def check_buffer(data)
68
+ status, info = analyze_buffer(data)
69
+ raise EmptyPngError.new if info.eql? EMPTY_IMAGE
70
+ raise CorruptPngError.new info unless status == STATUS_OK
71
+
72
+ true
73
+ end
74
+
75
+ private
76
+
77
+ def do_analyze_file(path)
78
+ Tempfile.open("captured-stream-") do |captured_stream|
79
+ extra_msg = FFI::Buffer.alloc_out(EXTRA_MESSAGE_SIZE, 1, false)
80
+ @@semaphore.lock
81
+ status = pngcheck_file(path, captured_stream.path, extra_msg)
82
+ @@semaphore.unlock
83
+ # we assume that pngcheck_file returns either captured_stream
84
+ # or extra message but not both
85
+
86
+ [status, captured_stream.read + extra_msg.get_string(0)]
87
+ end
88
+ end
89
+
90
+ def do_analyze_buffer(data)
59
91
  Tempfile.open("captured-stream-") do |captured_stream|
60
92
  extra_msg = FFI::Buffer.alloc_out(EXTRA_MESSAGE_SIZE, 1, false)
61
93
  mem_buf = FFI::MemoryPointer.new(:char, data.bytesize)
@@ -64,15 +96,8 @@ module PngCheck
64
96
  status = pngcheck_buffer(mem_buf, data.bytesize, captured_stream.path,
65
97
  extra_msg)
66
98
  @@semaphore.unlock
67
- [status, captured_stream.read + extra_msg.get_string(16)]
99
+ [status, captured_stream.read + extra_msg.get_string(0)]
68
100
  end
69
101
  end
70
-
71
- def check_buffer(data)
72
- status, info = analyze_buffer(data)
73
- raise CorruptPngError.new info unless status == STATUS_OK
74
-
75
- true
76
- end
77
102
  end
78
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pngcheck
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.4
4
+ version: 0.2.5
5
5
  platform: x64-mingw-ucrt
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-08 00:00:00.000000000 Z
11
+ date: 2022-09-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi