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
         |