data_collector 0.26.0 → 0.27.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: 057dac92f5a83458b244a962ef0518fa093365a38c2388582de0556ac7b884ca
4
- data.tar.gz: 9aebb908d52dda01dc3efce7dcda3e40c8b4f45e718cef94052c9d37fca604eb
3
+ metadata.gz: b001584d7cb8f525f22370a79a4921104358f9de512d81da6236f65a590220bc
4
+ data.tar.gz: 773bf24b624e28e056a82f0c665e603a119830c9cc872d1938be02ab7251ad03
5
5
  SHA512:
6
- metadata.gz: aa91e78ec3aef0010553886539284af4aafb3ed7014ef35e6f7094377bf9ad2efb7f6025bc7f8715d4558d8a5a1242325761a12a6e696590828fa1752c579198
7
- data.tar.gz: 7309cc34f3d022d212ab9870558909ab84be3c6550160ce822808f98edb259c96669899247a7faefec6365068ac5aa68a6d5b43f279591156f47c9f02d0e182c
6
+ metadata.gz: 8d0a62ddf8408c72e6277080f7105bd8d12f39c2f30e4a44910d890932a50ef9399d096d98b990b87db422a6af7557821e45045a049c64ebbdd90d8cd811062c
7
+ data.tar.gz: 53e2290744797a8763ccd0491a02c9dd1ee4e73919f95c20d66bb03889cca18f31cb4090728f1ef3acee6b76ef9e062f4196d17b90b5bf0ec3d2132e74543c2a
data/README.md CHANGED
@@ -8,6 +8,7 @@ include DataCollector::Core
8
8
  ```
9
9
  Every object can be used on its own.
10
10
 
11
+ ### DataCollector Objects
11
12
  #### Pipeline
12
13
  Allows you to create a simple pipeline of operations to process data. With a data pipeline, you can collect, process, and transform data, and then transfer it to various systems and applications.
13
14
 
@@ -20,6 +21,7 @@ executed in the [ISO8601 duration format](https://www.digi.com/resources/documen
20
21
  - schedule: [ISO8601 duration format](https://www.digi.com/resources/documentation/digidocs//90001488-13/reference/r_iso_8601_duration_format.htm)
21
22
  - cron: in cron format ex. '1 12 * * *' intervals are not supported
22
23
  - uri: a directory/file to watch
24
+ - xml_typecast: true/false -> convert convert string values to TrueClass, FalseClass, Time, Date, and DateTime
23
25
  - .run: start the pipeline. blocking if a schedule is supplied
24
26
  - .stop: stop the pipeline
25
27
  - .pause: pause the pipeline. Restart using .run
@@ -74,12 +76,14 @@ For a push input component, a listener is created with a processing logic block
74
76
  A push happens when new data is created in a directory, message queue, ...
75
77
 
76
78
  ```ruby
77
- from_uri(source, options = {:raw, :content_type})
79
+ from_uri(source, options = {:raw, :content_type, :headers, :cookies})
78
80
  ```
79
81
  - source: an uri with a scheme of http, https, file, amqp
80
82
  - options:
81
83
  - raw: _boolean_ do not parse
82
84
  - content_type: _string_ force a content_type if the 'Content-Type' returned by the http server is incorrect
85
+ - headers: request headers
86
+ - cookies: session cookies etc.
83
87
 
84
88
  ###### example:
85
89
  ```ruby
@@ -141,15 +141,15 @@ module DataCollector
141
141
  when 'application/json'
142
142
  data = JSON.parse(data)
143
143
  when 'application/atom+xml'
144
- data = xml_to_hash(data)
144
+ data = xml_to_hash(data, options)
145
145
  when 'text/csv'
146
146
  data = csv_to_hash(data)
147
147
  when 'application/xml'
148
- data = xml_to_hash(data)
148
+ data = xml_to_hash(data, options)
149
149
  when 'text/xml'
150
- data = xml_to_hash(data)
150
+ data = xml_to_hash(data, options)
151
151
  else
152
- data = xml_to_hash(data)
152
+ data = xml_to_hash(data, options)
153
153
  end
154
154
  end
155
155
 
@@ -182,14 +182,14 @@ module DataCollector
182
182
  when '.json'
183
183
  data = JSON.parse(data)
184
184
  when '.xml'
185
- data = xml_to_hash(data)
185
+ data = xml_to_hash(data, options)
186
186
  when '.gz'
187
187
  Minitar.open(Zlib::GzipReader.new(File.open("#{absolute_path}", 'rb'))) do |i|
188
188
  i.each do |entry|
189
189
  data = entry.read
190
190
  end
191
191
  end
192
- data = xml_to_hash(data)
192
+ data = xml_to_hash(data, options)
193
193
  when '.csv'
194
194
  data = csv_to_hash(data)
195
195
  else
@@ -212,10 +212,11 @@ module DataCollector
212
212
  DataCollector::Input::Rpc.new(uri, options)
213
213
  end
214
214
 
215
- def xml_to_hash(data)
215
+ def xml_to_hash(data, options = {})
216
216
  #gsub('<\/', '< /') outherwise wrong XML-parsing (see records lirias1729192 )
217
217
  data = data.gsub /</, '< /'
218
- nori = Nori.new(parser: :nokogiri, strip_namespaces: true, convert_tags_to: lambda { |tag| tag.gsub(/^@/, '_') })
218
+ xml_typecast = options.with_indifferent_access.key?('xml_typecast') ? options.with_indifferent_access['xml_typecast'] : true
219
+ nori = Nori.new(parser: :nokogiri, advanced_typecasting: xml_typecast, strip_namespaces: true, convert_tags_to: lambda { |tag| tag.gsub(/^@/, '_') })
219
220
  nori.parse(data)
220
221
  #JSON.parse(nori.parse(data).to_json)
221
222
  end
@@ -1,4 +1,4 @@
1
1
  # encoding: utf-8
2
2
  module DataCollector
3
- VERSION = "0.26.0"
3
+ VERSION = "0.27.0"
4
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_collector
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.26.0
4
+ version: 0.27.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mehmet Celik
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-08-02 00:00:00.000000000 Z
11
+ date: 2023-08-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport