data_collector 0.22.0 → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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