carrier-pigeon 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,3 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.3
data/README.org CHANGED
@@ -1,40 +1,64 @@
1
+ [[https://secure.travis-ci.org/portertech/carrier-pigeon.png]]
2
+
1
3
  * Install
2
4
 
3
5
  : gem install carrier-pigeon
4
6
 
5
7
  * Usage
6
8
 
7
- : require 'carrier-pigeon'
8
- :
9
- : # In the open
9
+ : require "carrier-pigeon"
10
+
11
+ Send a private message
12
+
10
13
  : CarrierPigeon.send(
11
14
  : :uri => "irc://nick:password@irc.domain.com:6667/#channel",
12
15
  : :message => "cooooo, coo coo"
13
16
  : )
14
- :
15
- : # SSL
17
+
18
+ Send a notice
19
+
20
+ : CarrierPigeon.send(
21
+ : :uri => "irc://nick:password@irc.domain.com:6667/#channel",
22
+ : :message => "cooooo, coo coo",
23
+ : :notice => true
24
+ : )
25
+
26
+ Use SSL
27
+
16
28
  : CarrierPigeon.send(
17
29
  : :uri => "irc://nick:password@irc.domain.com:6667/#channel",
18
30
  : :message => "coo, secret plan",
19
31
  : :ssl => true
20
32
  : )
21
- :
22
- : # Join a channel (required for most Freenode channels)
33
+
34
+ Join a channel (required for most Freenode channels)
35
+
23
36
  : CarrierPigeon.send(
24
37
  : :uri => "irc://nick:password@irc.domain.com:6667/#channel",
25
38
  : :message => "cooooo, part of the flock",
26
39
  : :join => true
27
40
  : )
28
- :
29
- : # Join a channel that requires a password
41
+
42
+ Join a channel that requires a password
43
+
30
44
  : CarrierPigeon.send(
31
45
  : :uri => "irc://nick:password@irc.domain.com:6667/#channel",
32
46
  : :message => "coo, the password is ..."
33
47
  : :channel_password => "secret",
34
48
  : :join => true
35
49
  : )
36
- :
37
- : # Register (ping reply) prior to joining or messaging a channel (required for some private servers)
50
+
51
+ Identify with NickServ
52
+
53
+ : CarrierPigeon.send(
54
+ : :uri => "irc://nick:password@irc.domain.com:6667/#channel",
55
+ : :message => "nickserv, coo coo",
56
+ : :nickserv_password => "secret"
57
+ : )
58
+
59
+ Register (ping reply) prior to joining or messaging a channel
60
+ (required for some private servers)
61
+
38
62
  : CarrierPigeon.send(
39
63
  : :uri => "irc://nick:password@irc.domain.com:6667/#channel",
40
64
  : :message => "cooooo, coo coo",
data/Rakefile CHANGED
@@ -1,2 +1,10 @@
1
- require 'bundler'
1
+ require "bundler"
2
+ require "rake/testtask"
3
+
2
4
  Bundler::GemHelper.install_tasks
5
+
6
+ Rake::TestTask.new do |test|
7
+ test.pattern = "test/*_tests.rb"
8
+ end
9
+
10
+ task :default => "test"
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "carrier-pigeon"
3
- s.version = "0.5.0"
3
+ s.version = "0.6.0"
4
4
  s.platform = Gem::Platform::RUBY
5
5
  s.authors = ["Sean Porter"]
6
6
  s.email = ["portertech@gmail.com"]
@@ -14,6 +14,8 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency("addressable")
16
16
 
17
+ s.add_development_dependency("rake")
18
+
17
19
  s.files = `git ls-files`.split("\n")
18
20
  s.require_paths = ["lib"]
19
21
  end
@@ -32,11 +32,16 @@ class CarrierPigeon
32
32
  end
33
33
  end
34
34
  end
35
- sendln "JOIN #{options[:channel]} #{options[:channel_password]}" if options[:join]
35
+ if options[:join]
36
+ join = "JOIN #{options[:channel]}"
37
+ join += " #{options[:channel_password]}" if options[:channel_password]
38
+ sendln join
39
+ end
36
40
  end
37
41
 
38
- def message(channel, message)
39
- sendln "PRIVMSG #{channel} :#{message}"
42
+ def message(channel, message, notice = false)
43
+ command = notice ? "NOTICE" : "PRIVMSG"
44
+ sendln "#{command} #{channel} :#{message}"
40
45
  end
41
46
 
42
47
  def die
@@ -59,7 +64,7 @@ class CarrierPigeon
59
64
  "PRIVMSG NICKSERV :IDENTIFY #{options[:nickserv_password]}"
60
65
  end
61
66
  pigeon = new(options)
62
- pigeon.message(options[:channel], options[:message])
67
+ pigeon.message(options[:channel], options[:message], options[:notice])
63
68
  pigeon.die
64
69
  end
65
70
 
@@ -0,0 +1,139 @@
1
+ require "minitest/spec"
2
+ require "minitest/autorun"
3
+ require "socket"
4
+
5
+ require File.join(File.dirname(__FILE__), "..", "lib", "carrier-pigeon")
6
+
7
+ PRIVATE_MESSAGE = <<"EXPECTED"
8
+ NICK foo
9
+ USER foo 0 * :foo
10
+ PRIVMSG #test :test
11
+ QUIT :quit
12
+ EXPECTED
13
+
14
+ NOTICE = <<"EXPECTED"
15
+ NICK foo
16
+ USER foo 0 * :foo
17
+ NOTICE #test :test
18
+ QUIT :quit
19
+ EXPECTED
20
+
21
+ JOIN = <<"EXPECTED"
22
+ NICK foo
23
+ USER foo 0 * :foo
24
+ JOIN #test
25
+ PRIVMSG #test :test
26
+ QUIT :quit
27
+ EXPECTED
28
+
29
+ JOIN_PASSWORD = <<"EXPECTED"
30
+ NICK foo
31
+ USER foo 0 * :foo
32
+ JOIN #test bar
33
+ PRIVMSG #test :test
34
+ QUIT :quit
35
+ EXPECTED
36
+
37
+ REGISTER = <<"EXPECTED"
38
+ NICK foo
39
+ USER foo 0 * :foo
40
+ PONG :hello
41
+ PRIVMSG #test :test
42
+ QUIT :quit
43
+ EXPECTED
44
+
45
+ NICKSERV_PASSWORD = <<"EXPECTED"
46
+ NICK foo
47
+ USER foo 0 * :foo
48
+ PRIVMSG NICKSERV :IDENTIFY bar
49
+ PRIVMSG #test :test
50
+ QUIT :quit
51
+ EXPECTED
52
+
53
+ describe CarrierPigeon do
54
+
55
+ before do
56
+ @server_received = ""
57
+ @tcp_server = TCPServer.new(16667)
58
+ Thread.new do
59
+ socket = @tcp_server.accept
60
+ socket.puts "PING :hello"
61
+ while line = socket.gets
62
+ @server_received << line
63
+ socket.close if line =~ /:quit/
64
+ end
65
+ end
66
+ end
67
+
68
+ after do
69
+ @tcp_server.close
70
+ sleep 1
71
+ end
72
+
73
+ it "can send a private message to an irc channel" do
74
+ CarrierPigeon.send(
75
+ :uri => "irc://foo@localhost:16667/#test",
76
+ :message => "test"
77
+ )
78
+ @server_received.must_equal(PRIVATE_MESSAGE)
79
+ end
80
+
81
+ it "can send a notice to an irc channel" do
82
+ CarrierPigeon.send(
83
+ :uri => "irc://foo@localhost:16667/#test",
84
+ :message => "test",
85
+ :notice => true
86
+ )
87
+ @server_received.must_equal(NOTICE)
88
+ end
89
+
90
+ it "can join an irc channel and send a private message" do
91
+ CarrierPigeon.send(
92
+ :uri => "irc://foo@localhost:16667/#test",
93
+ :message => "test",
94
+ :join => true
95
+ )
96
+ @server_received.must_equal(JOIN)
97
+ end
98
+
99
+ it "can join an irc channel with a password and send a private message" do
100
+ CarrierPigeon.send(
101
+ :uri => "irc://foo@localhost:16667/#test",
102
+ :message => "test",
103
+ :channel_password => "bar",
104
+ :join => true
105
+ )
106
+ @server_received.must_equal(JOIN_PASSWORD)
107
+ end
108
+
109
+ it "can identify with nickserv and send a private message to an irc channel" do
110
+ CarrierPigeon.send(
111
+ :uri => "irc://foo@localhost:16667/#test",
112
+ :message => "test",
113
+ :nickserv_password => "bar"
114
+ )
115
+ @server_received.must_equal(NICKSERV_PASSWORD)
116
+ end
117
+
118
+ it "can require registration and send a private message to an irc channel" do
119
+ CarrierPigeon.send(
120
+ :uri => "irc://foo@localhost:16667/#test",
121
+ :message => "test",
122
+ :register_first => true
123
+ )
124
+ @server_received.must_equal(REGISTER)
125
+ end
126
+
127
+ it "must be provided an irc uri" do
128
+ lambda {
129
+ CarrierPigeon.send(:message => "test")
130
+ }.must_raise RuntimeError
131
+ end
132
+
133
+ it "must be provided an irc message" do
134
+ lambda {
135
+ CarrierPigeon.send(:uri => "irc://foo@localhost:16667/#test")
136
+ }.must_raise RuntimeError
137
+ end
138
+
139
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrier-pigeon
3
3
  version: !ruby/object:Gem::Version
4
- hash: 11
4
+ hash: 7
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 5
8
+ - 6
9
9
  - 0
10
- version: 0.5.0
10
+ version: 0.6.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Sean Porter
@@ -15,12 +15,10 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-09-04 00:00:00 -07:00
18
+ date: 2012-09-29 00:00:00 -07:00
19
19
  default_executable:
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: addressable
23
- prerelease: false
24
22
  requirement: &id001 !ruby/object:Gem::Requirement
25
23
  none: false
26
24
  requirements:
@@ -31,7 +29,23 @@ dependencies:
31
29
  - 0
32
30
  version: "0"
33
31
  type: :runtime
32
+ name: addressable
33
+ prerelease: false
34
34
  version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ hash: 3
42
+ segments:
43
+ - 0
44
+ version: "0"
45
+ type: :development
46
+ name: rake
47
+ prerelease: false
48
+ version_requirements: *id002
35
49
  description: The simplest library to say something on IRC
36
50
  email:
37
51
  - portertech@gmail.com
@@ -43,12 +57,14 @@ extra_rdoc_files: []
43
57
 
44
58
  files:
45
59
  - .gitignore
60
+ - .travis.yml
46
61
  - Gemfile
47
62
  - MIT-LICENSE.txt
48
63
  - README.org
49
64
  - Rakefile
50
65
  - carrier-pigeon.gemspec
51
66
  - lib/carrier-pigeon.rb
67
+ - test/send_tests.rb
52
68
  has_rdoc: true
53
69
  homepage: https://github.com/portertech/carrier-pigeon
54
70
  licenses: