fluent-plugin-sforce 0.0.5 → 0.0.6

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: 8863f1e04136df66a435721438f38036aaf395f7f4e097b060489a67c1a8ecba
4
- data.tar.gz: 7b968ebbffa37441ce8502df1352f3f9cdb0fd003dd0abc25736c80ea21d919f
3
+ metadata.gz: b4ff49d08efb9e0482784eef7c6f1d82d5443ab308927503139c4bb7292115b4
4
+ data.tar.gz: c0d700e517977b84396d8f278c7df0101f8bb791584ac871d0ca44dc92c2a3ff
5
5
  SHA512:
6
- metadata.gz: dc7eff2c230abddec690465a64b6e68e232277f3859363418f7340c66018fb9378f3814b05fafc34a90f69f63f4c1a7a8750098cbedf1d6167fb84c92dcd1217
7
- data.tar.gz: 1a14bc0f6d6d7a3f8b270c44f37fb5fa3ebd9bd81dc88fec0cdb80053be14fda08fdc8d2def53c70795550f6c901c8d047244c0525d002cf27fd1225929bc1e8
6
+ metadata.gz: f269381abecc41ec3989d480de019aaae4309a5d698953642ae2bb07d7a1944a8d712f45464df4c0655cd482146b98b87117d35adaa2d04c28e10ad97c1f11dd
7
+ data.tar.gz: ac768d6ff62866898ae961d7cd2f6fa54b833b144b55f5383c3012d472bb2a201c89186cb312cb68ed200d7625c61fc6c1cac6a039e54372efa07540a5890478
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.5
1
+ 0.0.6
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.add_dependency 'fluentd'
20
20
  spec.add_dependency 'restforce', '~> 3.0.0'
21
21
  spec.add_dependency 'faye', '~> 1.2.4'
22
- spec.add_dependency 'nokogiri', '~> 1.8.2'
22
+ spec.add_dependency 'nokogiri', '>= 1.10.4'
23
23
  spec.add_development_dependency 'rake'
24
24
  spec.add_development_dependency 'test-unit'
25
25
  end
@@ -23,52 +23,40 @@ module Fluent
23
23
  config_param :version, :string, default: '43.0'
24
24
  config_param :login_endpoint, :string, default: 'login.salesforce.com'
25
25
 
26
+ attr_accessor :client
27
+
26
28
  def configure(conf)
27
29
  super
28
30
  end
29
31
 
30
32
  def start
31
33
  super
32
- login_info = login
33
- client = Restforce.new login_info.merge(api_version: @version)
34
+ @client = generate_client
34
35
 
35
- th_low = DateTime.now.strftime('%Y-%m-%dT%H:%M:%S.000%Z')
36
- # query
37
- if @topic == nil then
38
- sleep(@polling_interval)
39
- th_high = DateTime.now.strftime('%Y-%m-%dT%H:%M:%S.000%Z')
36
+ if @topic == nil
37
+ start_at = now
40
38
  loop do
41
- # create soql query string
42
- where = "CreatedDate <= #{th_high} AND CreatedDate > #{th_low}"
43
- soql = ''
44
- if @query =~ /^(.+)\s(where|WHERE)\s(.+)$/ then
45
- soql = "#{$1} WHERE #{where} AND #{$3}"
46
- elsif @query =~ /^(.+)$/ then
47
- soql = "#{$1} WHERE #{where}"
48
- end
39
+ sleep(@polling_interval)
40
+ end_at = now
41
+ soql = build_query(start_at, end_at)
49
42
 
50
43
  begin
51
44
  log.info "query: #{soql}"
52
- records = client.query(soql)
45
+ records = exec_query(soql)
53
46
  records.each do |record|
54
47
  router.emit(@tag, Fluent::Engine.now, record)
55
48
  end
56
- sleep(@polling_interval)
57
- th_low = th_high
58
- th_high = DateTime.now.strftime('%Y-%m-%dT%H:%M:%S.000%Z')
49
+ start_at = end_at
59
50
  rescue Restforce::UnauthorizedError => e
60
51
  log.error e
61
52
  # retry login
62
- login_info = login
63
- client = Restforce.new login_info.merge(api_version: @version)
53
+ @client = generate_client
64
54
  end
65
55
  end
66
- # streaming api
67
56
  else
68
57
  EM.run do
69
58
  log.info "suscribe: #{@topic}"
70
- # Subscribe to the PushTopic.
71
- client.subscribe @topic do |message|
59
+ subscribe @topic do |message|
72
60
  router.emit(@tag, Fluent::Engine.now, message)
73
61
  end
74
62
  end
@@ -85,7 +73,7 @@ module Fluent
85
73
 
86
74
  def login
87
75
  uri = URI(login_endpoint)
88
- request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' =>'text/xml', 'SOAPAction' => "''"})
76
+ request = Net::HTTP::Post.new(uri.request_uri, {'Content-Type' =>'text/xml', 'SOAPAction' => "''"})
89
77
  request.body = <<BODY
90
78
  <?xml version="1.0" encoding="utf-8"?>
91
79
  <env:Envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema"
@@ -112,8 +100,8 @@ BODY
112
100
  raise SforceConnectionError, fault unless fault.empty?
113
101
 
114
102
  session_id = doc.css('sessionId').inner_text
115
- /^(https:\/\/.+\.salesforce\.com)\//.match(doc.css('serverUrl').inner_text)
116
- instance_url = $1
103
+ m = /^(https:\/\/.+\.salesforce\.com)\//.match(doc.css('serverUrl').inner_text)
104
+ instance_url = m[1]
117
105
  log.info "login is successful. instance_url = '#{instance_url}'"
118
106
 
119
107
  {oauth_token: session_id, instance_url: instance_url}
@@ -123,6 +111,32 @@ BODY
123
111
  def login_endpoint
124
112
  "https://#{@login_endpoint}/services/Soap/u/#{@version}"
125
113
  end
114
+
115
+ def build_query(start_at, end_at)
116
+ where = "CreatedDate <= #{end_at} AND CreatedDate > #{start_at}"
117
+ if m = /^(.+)\s(where|WHERE)\s(.+)$/.match(@query)
118
+ return "#{m[1]} WHERE #{where} AND #{m[3]}"
119
+ end
120
+
121
+ "#{@query} WHERE #{where}"
122
+ end
123
+
124
+ def generate_client
125
+ login_info = login
126
+ Restforce.new login_info.merge(api_version: @version)
127
+ end
128
+
129
+ def exec_query(soql)
130
+ @client.query(soql)
131
+ end
132
+
133
+ def subscribe(name, &block)
134
+ @client.subscribe(name, &block)
135
+ end
136
+
137
+ def now
138
+ DateTime.now.strftime('%Y-%m-%dT%H:%M:%S.000%Z')
139
+ end
126
140
  end
127
141
  end
128
142
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-sforce
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Makoto Tajitsu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-01-12 00:00:00.000000000 Z
11
+ date: 2019-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fluentd
@@ -56,16 +56,16 @@ dependencies:
56
56
  name: nokogiri
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.8.2
61
+ version: 1.10.4
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.8.2
68
+ version: 1.10.4
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement