Class: S3Grep::Search
- Inherits:
-
Object
- Object
- S3Grep::Search
- Defined in:
- lib/s3grep/search.rb
Instance Attribute Summary collapse
-
#aws_s3_client ⇒ Object
readonly
Returns the value of attribute aws_s3_client.
-
#compression ⇒ Object
readonly
Returns the value of attribute compression.
-
#s3_url ⇒ Object
readonly
Returns the value of attribute s3_url.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(s3_url, aws_s3_client, compression = nil) ⇒ Search
constructor
A new instance of Search.
- #s3_object ⇒ Object
- #search(regex) ⇒ Object
- #to_io ⇒ Object
Constructor Details
#initialize(s3_url, aws_s3_client, compression = nil) ⇒ Search
Returns a new instance of Search.
10 11 12 13 14 |
# File 'lib/s3grep/search.rb', line 10 def initialize(s3_url, aws_s3_client, compression = nil) @s3_url = s3_url @aws_s3_client = aws_s3_client @compression = compression end |
Instance Attribute Details
#aws_s3_client ⇒ Object (readonly)
Returns the value of attribute aws_s3_client.
6 7 8 |
# File 'lib/s3grep/search.rb', line 6 def aws_s3_client @aws_s3_client end |
#compression ⇒ Object (readonly)
Returns the value of attribute compression.
6 7 8 |
# File 'lib/s3grep/search.rb', line 6 def compression @compression end |
#s3_url ⇒ Object (readonly)
Returns the value of attribute s3_url.
6 7 8 |
# File 'lib/s3grep/search.rb', line 6 def s3_url @s3_url end |
Class Method Details
.detect_compression(s3_url) ⇒ Object
20 21 22 23 24 25 |
# File 'lib/s3grep/search.rb', line 20 def self.detect_compression(s3_url) return :gzip if s3_url =~ /\.gz$/i return :zip if s3_url =~ /\.zip$/i nil end |
.search(s3_url, aws_s3_client, regex, &block) ⇒ Object
16 17 18 |
# File 'lib/s3grep/search.rb', line 16 def self.search(s3_url, aws_s3_client, regex, &block) new(s3_url, aws_s3_client, detect_compression(s3_url)).search(regex, &block) end |
Instance Method Details
#s3_object ⇒ Object
37 38 39 40 41 42 43 44 45 46 |
# File 'lib/s3grep/search.rb', line 37 def s3_object uri = URI(s3_url) aws_s3_client.get_object( { bucket: uri.host, key: CGI.unescape(uri.path[1..-1]) } ) end |
#search(regex) ⇒ Object
27 28 29 30 31 32 33 34 35 |
# File 'lib/s3grep/search.rb', line 27 def search(regex) line_number = 0 to_io.each do |line| line_number += 1 next unless line.match?(regex) yield line_number, line end end |
#to_io ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 |
# File 'lib/s3grep/search.rb', line 48 def to_io body = s3_object.body if compression == :gzip Zlib::GzipReader.new(body) elsif compression == :zip require 'zip' zip = Zip::File.open_buffer(body) zip.entries.first.get_input_stream else body end end |