require 'auth_manager'
require 'session_manager'
require 'dbAccessor'

module Api
class Handler

  def self.create_object(param)
    added = DbAccessor::Writer.write_object(param)
    if added[:code] == 201
      true
    else
      false
    end
  end

  def self.connect(param, option)
    found = AuthManager::Finder.find_object?(param, option)
    found ? SessionManager::Handler.create_session(param, option) : {code: 400, message: "User not connected"}
  end

  def self.condition_read(param)
   DbAccessor::Reader.condition_select(param)
  end

  def self.valid_session(object, token, option)
    login = return_id(object, option)
    to_verify = {login: login, token: token}.to_json
    session_response = SessionManager::Handler.verify_session(to_verify, option)
    if session_response
      (session_response[:code] == 200)
    else
      false
    end
  end

  private ###############################

  def self.return_id(param, option)
    if AuthManager::Finder.find_object?(param, option)
      tmp = JSON.parse(param)
      return tmp['login'] if option.fetch(:user)
      return tmp['api_key'] if option.fetch(:app)
    end
  end

end
end