aboutsummaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
Diffstat (limited to 'core')
-rw-r--r--core/irc.rb67
-rw-r--r--core/logger.rb50
2 files changed, 117 insertions, 0 deletions
diff --git a/core/irc.rb b/core/irc.rb
new file mode 100644
index 0000000..779b37b
--- /dev/null
+++ b/core/irc.rb
@@ -0,0 +1,67 @@
+require 'socket'
+
+require_relative 'logger'
+
+module Dinobot
+ module Core
+ class IRC
+ def initialize(server, port, nick, pass=nil)
+ @server = server
+ @port = port
+ @nick = nick
+ @pass = pass
+
+ @socket = nil
+ @logger = Dinobot::Core::Logger.instance
+ end
+
+ def connect
+ @logger.info "Connecting to #{@server}:#{@port}."
+
+ @socket = TCPSocket.new(@server, @port)
+
+ puts "PASS #{@pass}" if @pass
+ puts "NICK #{@nick}"
+ puts "USER #{@nick} 0 * :#{@nick}"
+ end
+
+ def disconnect
+ @socket.close
+ end
+
+ def connected?
+ !(@socket.nil? || @socket.closed?)
+ end
+
+ def gets
+ str = @socket.gets
+
+ @logger.in str.inspect
+
+ str
+ end
+
+ def puts(str)
+ @logger.out str.inspect
+
+ @socket.puts str
+ end
+
+ def pong(message)
+ puts "PONG #{message}"
+ end
+
+ def join(channel)
+ puts "JOIN #{channel}"
+ end
+
+ def part(channel)
+ puts "PART #{channel}"
+ end
+
+ def privmsg(channel, message)
+ puts "PRIVMSG #{channel} :#{message}"
+ end
+ end
+ end
+end
diff --git a/core/logger.rb b/core/logger.rb
new file mode 100644
index 0000000..d73cd15
--- /dev/null
+++ b/core/logger.rb
@@ -0,0 +1,50 @@
+module Dinobot
+ module Core
+ class Logger
+ @@instance = nil
+ @@mutex = Mutex.new
+
+ def in(*lines)
+ str = lines.join("\n")
+
+ puts str.gsub(/^/, "\e[32m<<\e[0m ")
+ end
+
+ def out(*lines)
+ str = lines.join("\n")
+
+ puts str.gsub(/^/, "\e[36m>>\e[0m ")
+ end
+
+ def error(*lines)
+ str = lines.join("\n")
+
+ puts str.gsub(/^/, "\e[31m!!\e[0m ")
+ end
+
+ def info(*lines)
+ str = lines.join("\n")
+
+ puts str.gsub(/^/, "\e[33m==\e[0m ")
+ end
+
+ def indent(*lines)
+ str = lines.join("\n")
+
+ puts str.gsub(/^/, ' ')
+ end
+
+ class << self
+ def instance
+ return @@instance if @@instance
+
+ @@mutex.synchronize do
+ @@instance ||= new
+ end
+ end
+ end
+
+ private_class_method :allocate, :new
+ end
+ end
+end