Sha256: 67b57c26b898d248123c7d70c84aa822dd6883be91e0be19a53f4e59af14bd23

Contents?: true

Size: 992 Bytes

Versions: 1

Compression:

Stored size: 992 Bytes

Contents

# -*- coding: utf-8 -*-
require 'net/http'
require 'uri'
require 'pathname'
require 'active_support/all'

module Takosan
  mattr_accessor :url, :channel, :name, :icon

  module_function

  def privmsg(message, **options)
    request('/privmsg', options.merge({ 'channel' => @@channel, 'message' => message, 'name' => @@name, 'icon' => @@icon }))
  end

  def uri_for(path = nil)
    uri = URI.parse("#{@@url}/#{path}")
    uri.path = Pathname.new(uri.path).cleanpath.to_s
    uri
  end

  def request(path, params)
    begin
      uri = uri_for(path)

      http = Net::HTTP.new(uri.host, uri.port)
      http.open_timeout = http.read_timeout = 10

      req = Net::HTTP::Post.new(uri.path)
      req.form_data = params

      http.request(req)
    rescue StandardError, TimeoutError => e
      logger.warn("#{e.class} #{e.message}")
    end
  end

  def logger
    @@_logger ||=
      if defined?(Rails.logger)
        Rails.logger
      else
        Logger.new($stderr)
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
takosan-1.3.0 lib/takosan.rb