data_collector 0.22.0 → 0.23.0

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: e8333bf619cbafbac678351542ff0680abafd8d02fbe79ef286a1998eb85d3e4
4
- data.tar.gz: bac65514f7f0314004feec335b20bc512e09ec1c62526321eefd61e7b98beece
3
+ metadata.gz: 1a6db4367b12a41101620cc818a1995868aab20b65157de8c19ea60c68aa90a0
4
+ data.tar.gz: 39a2cbcd665f85d71bda741a131c54d4f2871ae83ae63b86c9eed9f0d84e405a
5
5
  SHA512:
6
- metadata.gz: d4b60f51ba32d710f89b396379847785c36d522fbfa190eb3a27527dea53e87a277e7f7d814e01a0639f8c64705b40b4621a21f19b0aa3afb1d8ee4aa56edd86
7
- data.tar.gz: 1566edaa8ca58544d5747cd86b73b9f1d66ed52f684aecba62c4ceb695a096cb7b1f5063e973b42eafda65732bd6f5664210bd53ec83489f9c3b5d5b9d233935
6
+ metadata.gz: 5d7e6e243f9693603c4502b2f1bbe2fb64b8cf95718be257066940d6fafed24a8352ded805f285b617e25f5fbd703bf6e812dbd9f2b85d5c22cc143e7cdfdc1e
7
+ data.tar.gz: 73b0c03ef6ccb7855cfc1b6f424c543cc00fc79e182ccc2525c068f3b8d97535e4eaaaa66b0fd59225049d6a0dfb3dc55861319638dfb4c6df489ede6c1f9077
@@ -9,8 +9,14 @@ module DataCollector
9
9
  end
10
10
 
11
11
  def run(should_block = false, &block)
12
- @listener.start
13
- sleep if should_block
12
+ @listener.start unless running?
13
+ if block_given?
14
+ while should_block && !paused?
15
+ yield
16
+ end
17
+ else
18
+ sleep if should_block && running? && !paused?
19
+ end
14
20
  end
15
21
 
16
22
  def running?
@@ -20,7 +26,10 @@ module DataCollector
20
26
  private
21
27
 
22
28
  def create_listener
23
- @listener ||= Listen.to("#{@uri.host}#{@uri.path}", @options) do |modified, added, _|
29
+ absolute_path = File.absolute_path("#{URI.decode_uri_component(@uri.to_s)}")
30
+ raise DataCollector::Error, "#{@uri.to_s} not found" unless File.exist?(absolute_path)
31
+
32
+ @listener ||= Listen.to(absolute_path, @options) do |modified, added, _|
24
33
  files = added | modified
25
34
  files.each do |filename|
26
35
  handle_on_message(@input, @output, filename)
@@ -4,7 +4,7 @@ module DataCollector
4
4
  class Input
5
5
  class Generic
6
6
  def initialize(uri, options = {})
7
- @uri = uri
7
+ @uri = URI(URI.decode_uri_component(uri.to_s))
8
8
  @options = options
9
9
  @running = false
10
10
 
@@ -28,6 +28,10 @@ module DataCollector
28
28
  def from_uri(source, options = {})
29
29
  source = CGI.unescapeHTML(source)
30
30
  @logger.info("Reading #{source}")
31
+ raise DataCollector::Error 'from_uri expects a scheme like file:// of https://' unless source =~ /:\/\//
32
+
33
+ scheme, path = source.split('://')
34
+ source="#{scheme}://#{URI.encode_uri_component(path)}"
31
35
  uri = URI(source)
32
36
  begin
33
37
  data = nil
@@ -37,11 +41,12 @@ module DataCollector
37
41
  when 'https'
38
42
  data = from_https(uri, options)
39
43
  when 'file'
40
- if File.directory?("#{uri.host}/#{uri.path}")
41
- raise DataCollector::Error, "#{uri.host}/#{uri.path} not found" unless File.exist?("#{uri.host}/#{uri.path}")
44
+ absolute_path = File.absolute_path("#{URI.decode_uri_component("#{uri.host}#{uri.path}")}")
45
+ if File.directory?(absolute_path)
46
+ #raise DataCollector::Error, "#{uri.host}/#{uri.path} not found" unless File.exist?("#{uri.host}/#{uri.path}")
42
47
  return from_dir(uri, options)
43
48
  else
44
- raise DataCollector::Error, "#{uri.host}/#{uri.path} not found" unless File.exist?("#{uri.host}/#{uri.path}")
49
+ # raise DataCollector::Error, "#{uri.host}/#{uri.path} not found" unless File.exist?("#{uri.host}/#{uri.path}")
45
50
  data = from_file(uri, options)
46
51
  end
47
52
  when /amqp/
@@ -75,6 +80,7 @@ module DataCollector
75
80
  end
76
81
 
77
82
  def from_https(uri, options = {})
83
+ uri = URI.decode_uri_component("#{uri.to_s}")
78
84
  data = nil
79
85
  if options.with_indifferent_access.include?(:logging) && options.with_indifferent_access[:logging]
80
86
  HTTP.default_options = HTTP::Options.new(features: { logging: { logger: @logger } })
@@ -154,7 +160,8 @@ module DataCollector
154
160
 
155
161
  def from_file(uri, options = {})
156
162
  data = nil
157
- absolute_path = File.absolute_path("#{uri.host}#{uri.path}")
163
+ absolute_path = File.absolute_path("#{URI.decode_uri_component(uri.to_s)}")
164
+ raise DataCollector::Error, "#{uri.to_s} not found" unless File.exist?("#{absolute_path}")
158
165
  unless options.has_key?('raw') && options['raw'] == true
159
166
  @raw = data = File.read("#{absolute_path}")
160
167
  case File.extname(absolute_path)
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module DataCollector
3
- VERSION = "0.22.0"
3
+ VERSION = "0.23.0"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_collector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.22.0
4
+ version: 0.23.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Celik