Sha256: a7733729261eefd2789bf8bad7c2e8407a144d90a2cf7cd2d3c8fb79479bf8ab

Contents?: true

Size: 1.66 KB

Versions: 1

Compression:

Stored size: 1.66 KB

Contents

module GLPI
  module SDK
    class Session
      include HTTParty

      attr_accessor :token, :app_token

      def initialize(url, app_token, username, password)
        @url = url
        @app_token = app_token
        @auth = { username: username, password: password }

        init
      end

      # Request a session token to uses other api endpoints
      def init
        response = request :get, '/initSession', basic_auth: @auth
        self.token = response['session_token']
      end

      # Destroy a session identified by a session token.
      def kill
        request :get, '/killSession'
        self.token = nil
      end

      # Return the current active profile
      def active_profile
        request :get, '/getActiveProfile'
      end

      # Return active entities of current logged user
      def active_entities
        request :get, '/getActiveEntities'
      end

      # Return the current php $_SESSION
      def full_session
        request :get, '/getFullSession'
      end

      # Return the current $CFG_GLPI
      def glpi_config
        request :get, '/getGlpiConfig'
      end

      def request(method, endpoint, options = {})
        options[:base_uri] = @url

        options[:headers] = options.fetch(:headers, {})
        options[:headers]['Content-Type'] = 'application/json'
        options[:headers]['App-Token'] = @app_token
        options[:headers]['Session-Token'] = @token if @token

        response = self.class.send(method, endpoint, options)

        unless response.success?
          type, message = response.parsed_response
          Error.dispatch(type, message)
        end

        response.parsed_response
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
glpi-sdk-ruby-0.0.2 lib/glpi/sdk/session.rb