require 'auth_manager'
require 'session_manager'

class Api::Handler

  def self.create_account(param, option)
    added = AuthManager::Adder.save?(param, option)
    session_response = SessionManager::Handler.create_session(param, option) if added
    if session_response
      (session_response[:code] == 200) && added
    else
      false
    end
  end

  def self.connect(param, option)
    found = AuthManager::Finder.find_object?(param, option)
    session_response = SessionManager::Handler.create_session(param, option)  if found
    if session_response
      ((session_response[:code] == 200) && found)
    else
      false
    end
  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