pngcheck 0.2.4-x64-mingw32 → 0.2.5-x64-mingw32

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: e79659d5ec1a433cac6180b9e4bba525ea5e57fda53c6fc5b93aee140b916afd
4
- data.tar.gz: 3f8a6f45c9db2818abde129f5baa252176c4e0653ffd252b21e2567fb38b0273
3
+ metadata.gz: 7b126c84e92dd1d855eea9df085807222447209dac3d6b10bbb52ba545422362
4
+ data.tar.gz: 448fd11e4ede822f336ec4b0a7e90e98022acbd5c775636ffd8d16c8d810711d
5
5
  SHA512:
6
- metadata.gz: 3d244e6441b3e20c85e4bee64806ec7d3a91b8c240ee4dfcc5f0cb1e3c284b5fdf76665961191eaae64c1342e535b8aea0d033d78c03a8d165156f249d272c86
7
- data.tar.gz: 3387f1e78a60f2c978fa30a43406a3f91b5a91506e165a02c4011bc464ae9d40e2df525640e6da8eb38f3e832a08bf5c597a3e35521b593319be8c39eb285858
6
+ metadata.gz: 15231a69eb78870f029be3190e46d73c2d36787581955dbd7f399a8d2fef7a49d4bb1242c0c153ab673f7ca9b003f77833058f6798684fa65fdef2f293ac967b
7
+ data.tar.gz: 7a627f5399d2b3d58c655a6be1b503d18fd5156be528fa5d4d95e23e0a8e1ab2458f8757ac146b8f31682c36b13848f41827fab60e0b4a4691346670386f1718
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-mingw32
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