smartkiosk-client 0.1.14 → 0.1.15
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.
- data/app/controllers/session_records.rb +7 -0
- data/app/models/session_record.rb +3 -1
- data/app/workers/ping_worker.rb +7 -35
- data/app/workers/sync/sessions_worker.rb +37 -0
- data/bin/smartkiosk-client +10 -6
- data/db/migrate/20130216114539_create_session_records.rb +3 -0
- data/lib/smartkiosk/client/version.rb +1 -1
- metadata +6 -4
data/app/workers/ping_worker.rb
CHANGED
@@ -5,7 +5,6 @@ class PingWorker
|
|
5
5
|
|
6
6
|
sidekiq_options :retry => false, :queue => :pings
|
7
7
|
|
8
|
-
DAY = 24 * 3600
|
9
8
|
SEMAPHORE = ConnectionPool.new(:size => 1, :timeout => 5) { true }
|
10
9
|
|
11
10
|
def perform
|
@@ -15,34 +14,6 @@ class PingWorker
|
|
15
14
|
|
16
15
|
Sidekiq::Logging.logger.info "Requesting with updated_at: #{Terminal.providers_updated_at}"
|
17
16
|
|
18
|
-
sessions_per_day = {}
|
19
|
-
sessions = SessionRecord.all
|
20
|
-
|
21
|
-
sessions.each do |session|
|
22
|
-
next if session.time == 0
|
23
|
-
|
24
|
-
session_start = session.started_at
|
25
|
-
session_start -= session_start % DAY
|
26
|
-
session_end = session.started_at + session.time
|
27
|
-
|
28
|
-
session_start.step(session_end - 1, DAY) do |day|
|
29
|
-
day_time = [ day + DAY - 1, session.started_at + session.time ].min -
|
30
|
-
[ day, session.started_at ].max
|
31
|
-
|
32
|
-
fraction = day_time / session.time
|
33
|
-
|
34
|
-
sessions_per_day[day] = {
|
35
|
-
upstream: session.upstream * fraction,
|
36
|
-
downstream: session.downstream * fraction,
|
37
|
-
time: session.time * fraction
|
38
|
-
}
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
sessions.each do |day, charges|
|
43
|
-
Sidekiq::Logging.logger.info "reporting #{charges.inspect} on #{day}"
|
44
|
-
end
|
45
|
-
|
46
17
|
begin
|
47
18
|
response = RestClient::Request.execute(
|
48
19
|
:method => :post,
|
@@ -55,8 +26,7 @@ class PingWorker
|
|
55
26
|
},
|
56
27
|
:payload => JSON.dump(
|
57
28
|
:terminal => Terminal.keyword,
|
58
|
-
:terminal_ping => condition
|
59
|
-
:sessions => sessions_per_day
|
29
|
+
:terminal_ping => condition
|
60
30
|
)
|
61
31
|
)
|
62
32
|
rescue Exception => e
|
@@ -73,10 +43,6 @@ class PingWorker
|
|
73
43
|
|
74
44
|
Sidekiq::Logging.logger.info "Response: #{response.inspect}"
|
75
45
|
|
76
|
-
ActiveRecord::Base.transaction do
|
77
|
-
sessions.each &:destroy
|
78
|
-
end
|
79
|
-
|
80
46
|
#
|
81
47
|
# PROFILE
|
82
48
|
#
|
@@ -110,6 +76,12 @@ class PingWorker
|
|
110
76
|
end
|
111
77
|
|
112
78
|
Sync::ProvidersWorker.perform_async if response[:update_providers]
|
79
|
+
|
80
|
+
#
|
81
|
+
# SESSIONS
|
82
|
+
#
|
83
|
+
last_session = response[:last_session_started_at] || 0
|
84
|
+
Sync::SessionsWorker.perform_async(last_session )if SessionRecord.exists?([ 'started_at > ?', last_session ])
|
113
85
|
end
|
114
86
|
rescue Timeout::Error => e
|
115
87
|
Sidekiq::Logging.logger.warn "Semaphore timeout. #{e.to_s}"
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'rest-client'
|
2
|
+
|
3
|
+
module Sync
|
4
|
+
class SessionsWorker
|
5
|
+
include Sidekiq::Worker
|
6
|
+
|
7
|
+
sidekiq_options :retry => false, :queue => :sync
|
8
|
+
|
9
|
+
def perform(from_time)
|
10
|
+
sessions = SessionRecord.where("started_at > ?", from_time).order("started_at").all
|
11
|
+
|
12
|
+
sessions.each do |session|
|
13
|
+
Sidekiq::Logging.logger.info "- submitting session #{session.message_id}"
|
14
|
+
|
15
|
+
providers = RestClient::Request.execute(
|
16
|
+
:method => :post,
|
17
|
+
:url => "#{Terminal.config.host}/session_records",
|
18
|
+
:timeout => 40,
|
19
|
+
:open_timeout => 60,
|
20
|
+
:payload => {
|
21
|
+
:terminal => Terminal.keyword,
|
22
|
+
:session_record => {
|
23
|
+
:message_id => session.message_id,
|
24
|
+
:started_at => session.started_at,
|
25
|
+
:upstream => session.upstream,
|
26
|
+
:downstream => session.downstream,
|
27
|
+
:time => session.time
|
28
|
+
}
|
29
|
+
}
|
30
|
+
)
|
31
|
+
end
|
32
|
+
|
33
|
+
rescue Exception => e
|
34
|
+
Sidekiq::Logging.logger.warn e.to_s
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/bin/smartkiosk-client
CHANGED
@@ -46,12 +46,16 @@ EventMachine.run do
|
|
46
46
|
if message.key == "modem.accounting"
|
47
47
|
message.acknowlege
|
48
48
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
49
|
+
begin
|
50
|
+
SessionRecord.create(message_id: message.id,
|
51
|
+
started_at: message[0],
|
52
|
+
upstream: message[1],
|
53
|
+
downstream: message[2],
|
54
|
+
time: message[3])
|
55
|
+
rescue => e
|
56
|
+
Smartkiosk::Client::Logging.logger.error "unable to save session record: #{e}"
|
57
|
+
e.backtrace.each { |line| Smartkiosk::Client::Logging.logger.error line }
|
58
|
+
end
|
55
59
|
else
|
56
60
|
@front_orders.push ["smartware.#{message.key}", message.args].to_json
|
57
61
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
class CreateSessionRecords < ActiveRecord::Migration
|
2
2
|
def change
|
3
3
|
create_table :session_records do |t|
|
4
|
+
t.string :message_id
|
4
5
|
t.integer :started_at
|
5
6
|
t.integer :upstream
|
6
7
|
t.integer :downstream
|
@@ -8,5 +9,7 @@ class CreateSessionRecords < ActiveRecord::Migration
|
|
8
9
|
|
9
10
|
t.timestamps
|
10
11
|
end
|
12
|
+
|
13
|
+
add_index :session_records, [ :message_id ], :unique => true
|
11
14
|
end
|
12
15
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartkiosk-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.15
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -541,6 +541,7 @@ files:
|
|
541
541
|
- app/controllers/config.rb
|
542
542
|
- app/controllers/payments.rb
|
543
543
|
- app/controllers/receipts.rb
|
544
|
+
- app/controllers/session_records.rb
|
544
545
|
- app/controllers/terminal.rb
|
545
546
|
- app/models/admin.rb
|
546
547
|
- app/models/banner.rb
|
@@ -574,6 +575,7 @@ files:
|
|
574
575
|
- app/workers/sync/logo_worker.rb
|
575
576
|
- app/workers/sync/providers_worker.rb
|
576
577
|
- app/workers/sync/receipt_templates_worker.rb
|
578
|
+
- app/workers/sync/sessions_worker.rb
|
577
579
|
- bin/smartkiosk-client
|
578
580
|
- config/boot.rb
|
579
581
|
- config/services/application.yml
|
@@ -627,7 +629,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
627
629
|
version: '0'
|
628
630
|
segments:
|
629
631
|
- 0
|
630
|
-
hash: -
|
632
|
+
hash: -3441276206886059844
|
631
633
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
632
634
|
none: false
|
633
635
|
requirements:
|
@@ -636,10 +638,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
636
638
|
version: '0'
|
637
639
|
segments:
|
638
640
|
- 0
|
639
|
-
hash: -
|
641
|
+
hash: -3441276206886059844
|
640
642
|
requirements: []
|
641
643
|
rubyforge_project:
|
642
|
-
rubygems_version: 1.8.
|
644
|
+
rubygems_version: 1.8.24
|
643
645
|
signing_key:
|
644
646
|
specification_version: 3
|
645
647
|
summary: Smartkiosk client application
|