Sha256: 8ab9f5afd13c7f810bf21687ead60280db09115ced066cc7064ee5f657d0bd6e

Contents?: true

Size: 1.03 KB

Versions: 8

Compression:

Stored size: 1.03 KB

Contents

# frozen_string_literal: true

module JoyUssdEngine::SessionManager
    def expire_mins
      @selected_provider.expiration.blank? ? 60.seconds : @selected_provider.expiration
    end
  
    def user_mobile_number
      @user_mobile_number ||= get_state[:"session_id"]
    end
  
    # Retrive Session Data
    def get_state
      session_id = params["session_id"]
      REDIS.with do |conn|
        data = conn.get(session_id)
        return {} if data.blank?
        JSON.parse(data, symbolize_names: true)
      end
    end
  
    # Store USSD sessions in Redis with Expiry
    def set_state(payload = {})
      session_id = params["session_id"]
      current_data = get_state
      REDIS.with do |conn|
        payload = current_data.merge(params.merge(payload))
        conn.set(session_id, payload.to_json)
        conn.expire(session_id, expire_mins)
      end
    end
  
    # Delete Session payload
    def reset_state
      session_id = params["session_id"]
      REDIS.with do |conn|
        conn.del(session_id)
      end
    end
  end
  

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
joy_ussd_engine-0.1.9 lib/joy_ussd_engine/session_manager.rb
joy_ussd_engine-0.1.8 lib/joy_ussd_engine/session_manager.rb
joy_ussd_engine-0.1.7 lib/joy_ussd_engine/session_manager.rb
joy_ussd_engine-0.1.6 lib/joy_ussd_engine/session_manager.rb
joy_ussd_engine-0.1.5 lib/joy_ussd_engine/session_manager.rb
joy_ussd_engine-0.1.3 lib/joy_ussd_engine/session_manager.rb
joy_ussd_engine-0.1.2 lib/joy_ussd_engine/session_manager.rb
joy_ussd_engine-0.1.0 lib/joy_ussd_engine/session_manager.rb