module Onebot::Client::ApiHelper

Constants

METHODS_LIST_FILE

Attributes

func_list[RW]

Public Class Methods

define_helpers(list) click to toggle source

Defines method with underscored name to post to specific endpoint:

define_method :send_private_msg
# File lib/onebot/client/api_helper.rb, line 64
def define_helpers(list)
  list.each do |method_name, method_info|
    # puts "define #{method_name}"
    params = parse_param(method_info["params"])
    if method_name[0] == "."
      class_eval %(
        private def #{method_name[1..]} (params = { #{params} })
          request("#{method_name}", params)
        end
      ), __FILE__, __LINE__ - 4
    else
      class_eval %(
        def #{method_name} (params = { #{params} })
          request("#{method_name}", params)
        end
      ), __FILE__, __LINE__ - 4
    end
  end
end
get_default(str) click to toggle source
# File lib/onebot/client/api_helper.rb, line 14
def get_default(str)
  str.sub!(/^`(.+)`$/, '\1')
  return str.to_i if str =~ /^[+-]?\d+$/
  return true if str == "true"
  return false if str == "false"

  m = str.match(/^\s*(\d+)\s*\*\s*(\d+)\s*/)
  return m[1].to_i * m[2].to_i if m

  str
end
methods_list(file = METHODS_LIST_FILE) click to toggle source
# File lib/onebot/client/api_helper.rb, line 10
def methods_list(file = METHODS_LIST_FILE)
  @func_list = JSON.parse(File.read(file))
end
parse_param(input) click to toggle source
# File lib/onebot/client/api_helper.rb, line 26
def parse_param(input)
  return nil unless input
  output = ""

  params = input.map do |param, extra|
    default = case extra["default"]
              when "çİş" then ""
              when "-" then nil
              when nil then nil
              else get_default extra["default"]
    end

    if default.nil?
      next param
    end

    {"#{param}": default}
  end

  params.each do |param|
    output << if param.instance_of?(Hash)
      if param.values[0].instance_of?(String)
        "#{param.keys[0]}: '#{param.values[0]}'"
      else
        "#{param.keys[0]}: #{param.values[0]}"
      end
    else
      "#{param}:nil"
    end
    output << ","
  end
  output.delete_suffix!(",")
  output.to_s
end