carrier-pigeon 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README.org CHANGED
@@ -16,3 +16,6 @@
16
16
  :
17
17
  : # SSL
18
18
  : CarrierPigeon.send(:uri => "irc://nick:password@irc.domain.com:6667/#channel", :message => "coo, secret plan", :ssl => true)
19
+ :
20
+ : # Join the channel (required for most Freenode channels)
21
+ : CarrierPigeon.send(:uri => "irc://nick:password@irc.domain.com:6667/#channel", :message => "cooooo, coo coo", :join => true)
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "carrier-pigeon"
3
- s.version = "0.1.1"
3
+ s.version = "0.2.0"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.authors = ["Sean Porter"]
6
6
  s.email = ["portertech@gmail.com"]
@@ -4,9 +4,12 @@ require "openssl"
4
4
 
5
5
  class CarrierPigeon
6
6
 
7
- def initialize(server, port, nick, password, ssl)
8
- tcp_socket = TCPSocket.new(server, port || 6667)
9
- if ssl
7
+ def initialize(options={})
8
+ [:host, :port, :nick, :channel].each do |option|
9
+ raise "You must provide an IRC #{option}" unless options.has_key?(option)
10
+ end
11
+ tcp_socket = TCPSocket.new(options[:host], options[:port])
12
+ if options[:ssl]
10
13
  ssl_context = OpenSSL::SSL::SSLContext.new
11
14
  ssl_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
12
15
  @socket = OpenSSL::SSL::SSLSocket.new(tcp_socket, ssl_context)
@@ -16,9 +19,10 @@ class CarrierPigeon
16
19
  else
17
20
  @socket = tcp_socket
18
21
  end
19
- sendln "PASS #{password}" if password
20
- sendln "NICK #{nick}"
21
- sendln "USER #{nick} 0 * :#{nick}"
22
+ sendln "PASS #{options[:password]}" if options[:password]
23
+ sendln "NICK #{options[:nick]}"
24
+ sendln "USER #{options[:nick]} 0 * :#{options[:nick]}"
25
+ sendln "JOIN #{options[:channel]}" if options[:join]
22
26
  end
23
27
 
24
28
  def message(channel, message)
@@ -26,23 +30,29 @@ class CarrierPigeon
26
30
  end
27
31
 
28
32
  def die
33
+ sendln "QUIT :quit"
34
+ @socket.gets until @socket.eof?
29
35
  @socket.close
30
36
  end
31
37
 
32
38
  def self.send(options={})
33
- raise ArgumentError unless options[:uri] && options[:message]
39
+ raise "You must supply a valid IRC URI" unless options[:uri]
40
+ raise "You must supply a message" unless options[:message]
34
41
  uri = Addressable::URI.parse(options[:uri])
35
- ssl = options[:ssl] || false
36
- pigeon = new(uri.host, uri.port, uri.user, uri.password, ssl)
37
- pigeon.message("#" + uri.fragment, options[:message])
42
+ options[:host] = uri.host
43
+ options[:port] = uri.port || 6667
44
+ options[:nick] = uri.user
45
+ options[:password] = uri.password
46
+ options[:channel] = "#" + uri.fragment
47
+ pigeon = new(options)
48
+ pigeon.message(options[:channel], options[:message])
38
49
  pigeon.die
39
50
  end
40
51
 
41
52
  private
42
53
 
43
54
  def sendln(cmd)
44
- @socket.write("#{cmd}\r\n")
45
- @socket.flush
55
+ @socket.puts(cmd)
46
56
  end
47
57
 
48
58
  end
metadata CHANGED
@@ -1,8 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrier-pigeon
3
3
  version: !ruby/object:Gem::Version
4
- prerelease:
5
- version: 0.1.1
4
+ hash: 23
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 0
10
+ version: 0.2.0
6
11
  platform: ruby
7
12
  authors:
8
13
  - Sean Porter
@@ -10,7 +15,7 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2011-08-07 00:00:00 -07:00
18
+ date: 2011-11-04 00:00:00 -07:00
14
19
  default_executable:
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
@@ -21,6 +26,9 @@ dependencies:
21
26
  requirements:
22
27
  - - ">="
23
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
24
32
  version: "0"
25
33
  type: :runtime
26
34
  version_requirements: *id001
@@ -55,17 +63,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
55
63
  requirements:
56
64
  - - ">="
57
65
  - !ruby/object:Gem::Version
66
+ hash: 3
67
+ segments:
68
+ - 0
58
69
  version: "0"
59
70
  required_rubygems_version: !ruby/object:Gem::Requirement
60
71
  none: false
61
72
  requirements:
62
73
  - - ">="
63
74
  - !ruby/object:Gem::Version
75
+ hash: 3
76
+ segments:
77
+ - 0
64
78
  version: "0"
65
79
  requirements: []
66
80
 
67
81
  rubyforge_project: carrier-pigeon
68
- rubygems_version: 1.6.2
82
+ rubygems_version: 1.3.7
69
83
  signing_key:
70
84
  specification_version: 3
71
85
  summary: The simplest library to say something on IRC