# == Schema Information
#
# Table name: bot
#
#  id                 :integer          not null, primary key
#  bot_name           :string(255)      not null
#  bot_des            :text(4294967295)
#  webhook            :string(255)      not null
#  is_public          :integer
#  logo               :string(255)
#  state              :integer
#  client_id          :string(255)
#  client_secret      :string(255)
#  web_url            :string(255)
#  category           :string(255)
#  install_num        :integer          default("0")
#  update_time        :datetime         not null
#  create_time        :datetime         not null
#  uid                :integer
#  owner_id           :integer
#  private_key        :text(65535)
#  oauth_callback_url :string(255)      not null
#
# Indexes
#
#  name  (bot_name) UNIQUE
#

class Bot < ApplicationRecord
  self.table_name = "bot"

  has_many :install_bots

  def name
    self.bot_name
  end

  def self.decode_jwt_token(token)
    decoded_token = JWT.decode token, nil, false
    return [nil, "Token已过期"] if Time.now.to_i - 10*60 - decoded_token[0]["exp"].to_i > 0
    bot = Bot.find_by(id: decoded_token[0]["iss"])
    return [nil, "Token不存在"]  if bot.blank?
    rsa_private = OpenSSL::PKey::RSA.new(bot.private_key)
    rsa_public = rsa_private.public_key
    JWT.decode token, rsa_public, true, { algorithm: 'RS256' }
    [User.find_by(id: bot.owner_id), ""]
  rescue JWT::DecodeError
    Rails.logger.error "jwt token decode error:#{token}"
    [nil, "无效Token"]
  end

end
