Sha256: 3c87c73369a7d8145170fd865685f6abe43391a6311009a89711664e203e4967

Contents?: true

Size: 827 Bytes

Versions: 1

Compression:

Stored size: 827 Bytes

Contents

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

module Takosan
  mattr_accessor :url, :channel

  module_function

  def privmsg(message)
    request('/privmsg', { 'channel' => @@channel, 'message' => message })
  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 ||= Rails.logger
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
takosan-1.0.0 lib/takosan.rb