mp3file 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mp3file (0.0.1)
4
+ mp3file (0.0.3)
5
5
  bindata
6
6
 
7
7
  GEM
@@ -1,4 +1,6 @@
1
1
  module Mp3file
2
+ class InvalidMP3FileError < Mp3fileError; end
3
+
2
4
  class MP3File
3
5
  attr_reader(:file, :file_size, :audio_size)
4
6
  attr_reader(:first_header_offset, :first_header)
@@ -146,6 +148,7 @@ module Mp3file
146
148
  end
147
149
 
148
150
  header = nil
151
+ initial_header_offset = file.tell
149
152
  header_offset = file.tell
150
153
 
151
154
  while header.nil?
@@ -154,8 +157,12 @@ module Mp3file
154
157
  header_offset = file.tell - 4
155
158
  rescue InvalidMP3HeaderError => e
156
159
  header_offset += 1
157
- file.seek(header_offset, IO::SEEK_SET)
158
- retry
160
+ if header_offset - initial_header_offset > 4096
161
+ raise InvalidMP3FileError, "Could not find a valid MP3 header in the first 4096 bytes."
162
+ else
163
+ file.seek(header_offset, IO::SEEK_SET)
164
+ retry
165
+ end
159
166
  end
160
167
 
161
168
  # byte = file.readbyte
@@ -1,3 +1,3 @@
1
1
  module Mp3file
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/lib/mp3file.rb CHANGED
@@ -3,7 +3,7 @@ require 'pathname'
3
3
  require 'rubygems'
4
4
  require 'bindata'
5
5
 
6
- class Mp3fileError < StandardError; end
6
+ class Mp3file::Mp3fileError < StandardError; end
7
7
 
8
8
  require 'mp3file/mp3_file'
9
9
  require 'mp3file/mp3_header'
Binary file
@@ -87,4 +87,11 @@ describe Mp3file::MP3File do
87
87
  its(:length) { should == 5 }
88
88
  its(:vbr?) { should == false }
89
89
  end
90
+
91
+ describe "A file consisting only of zeroes" do
92
+ it "raises an error" do
93
+ lambda { Mp3file::MP3File.new(fixture_file('zeroes.mp3')) }.
94
+ should(raise_error(Mp3file::InvalidMP3FileError))
95
+ end
96
+ end
90
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mp3file
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,12 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-07-01 00:00:00.000000000 -04:00
12
+ date: 2011-08-02 00:00:00.000000000 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
17
- requirement: &19138680 !ruby/object:Gem::Requirement
17
+ requirement: &12396020 !ruby/object:Gem::Requirement
18
18
  none: false
19
19
  requirements:
20
20
  - - ! '>='
@@ -22,10 +22,10 @@ dependencies:
22
22
  version: '0'
23
23
  type: :development
24
24
  prerelease: false
25
- version_requirements: *19138680
25
+ version_requirements: *12396020
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: rake
28
- requirement: &19138260 !ruby/object:Gem::Requirement
28
+ requirement: &12395600 !ruby/object:Gem::Requirement
29
29
  none: false
30
30
  requirements:
31
31
  - - ! '>='
@@ -33,10 +33,10 @@ dependencies:
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
- version_requirements: *19138260
36
+ version_requirements: *12395600
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: bindata
39
- requirement: &19137840 !ruby/object:Gem::Requirement
39
+ requirement: &12432520 !ruby/object:Gem::Requirement
40
40
  none: false
41
41
  requirements:
42
42
  - - ! '>='
@@ -44,7 +44,7 @@ dependencies:
44
44
  version: '0'
45
45
  type: :runtime
46
46
  prerelease: false
47
- version_requirements: *19137840
47
+ version_requirements: *12432520
48
48
  description: Reads MP3 headers and returns their information.
49
49
  email:
50
50
  - ahwatts@gmail.com
@@ -80,6 +80,7 @@ files:
80
80
  - spec/files/bret_id3v1.mp3
81
81
  - spec/files/bret_id3v2.mp3
82
82
  - spec/files/bret_vbr_6.mp3
83
+ - spec/files/zeroes.mp3
83
84
  - spec/mp3file/id3v1_tag_spec.rb
84
85
  - spec/mp3file/id3v2/bit_padded_int_spec.rb
85
86
  - spec/mp3file/id3v2/frame_header_spec.rb