pngcheck 0.2.2-arm64-darwin → 0.2.5-arm64-darwin

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: dfc26ff286f4a09cb4371c13e8014699033301f6adf5d29f9fc5af395a5419df
4
- data.tar.gz: 2a2cade83598e36b326cff04f80c13f94f3e86ca15bd3d2ad204acb0aaa7b4ff
3
+ metadata.gz: b59e7b19a3cde0042ffa31452f77e9482ce13acb72363cc10be783933892f60f
4
+ data.tar.gz: 15323656b677d9e622e4d53baef4d5e6e21f9b6519276ac19ec4c8e7fffd4fc3
5
5
  SHA512:
6
- metadata.gz: ddf1b1b9dfd480be23cb1ef6d6e44b2f528b52efca26fdc21c6c10ee74db96f8e34bc7e659fe1cb9700fb143229f1c7cb7914a88a55760db9ed858e34faeee22
7
- data.tar.gz: 6233beee43c0ae2645e3278bf8e40be4b4db024d0320f51cec91ca9618d98b17688204e05c8739d0f305ba0397916a8ce822deff187cb344382cafeb8b7fa1ad
6
+ metadata.gz: 9235a49253ac4f07c31ef42960921cc7caba5da97feb033ca0c421cc4ab7e28f851fd0b968707b38f5afe8c4ac535850e45a12b0d60e7251b81b03ae253be3a6
7
+ data.tar.gz: 4c65ac45be0848efcd9cec117ea585f510e798a8f1fdb167f93ea1b5f5018d880871e30e3977af4b32897be5dadfd26e1683b63cac6c5d41c1462ed24f612641
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
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PngCheck
4
- VERSION = "0.2.2"
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.2
4
+ version: 0.2.5
5
5
  platform: arm64-darwin
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