ocelots 0.0.2 → 0.0.3
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.md +21 -1
- data/bin/ocelots +1 -1
- data/bin/ocelots_bot +9 -0
- data/lib/ocelots.rb +31 -2
- data/lib/ocelots/bot.rb +29 -0
- data/lib/ocelots/cli.rb +24 -11
- data/ocelots.gemspec +2 -1
- metadata +24 -5
data/README.md
CHANGED
@@ -24,7 +24,27 @@ Override the default url (http://ocelots.herokuapp.com) with your own instance b
|
|
24
24
|
|
25
25
|
You should now be ready to roll:
|
26
26
|
|
27
|
-
|
27
|
+
### Profile lookup
|
28
|
+
|
29
|
+
ocelots profile user@mail.com
|
30
|
+
|
31
|
+
This command performs an immediate lookup of a user's profile by their email address.
|
32
|
+
|
33
|
+
### Chat shell
|
34
|
+
|
35
|
+
You can enter a very basic interactive antechamber (chat client) shell:
|
36
|
+
|
37
|
+
ocelots antechamber team_slug
|
38
|
+
|
39
|
+
### IRC bot
|
40
|
+
|
41
|
+
You can also run an irc bot that will answer basic queries in a channel:
|
42
|
+
|
43
|
+
ocelots_bot ocelots irc.freenode.org 6667 '#channel'
|
44
|
+
|
45
|
+
At this stage, the bot will respond to a message to look up a phone number:
|
46
|
+
|
47
|
+
phone for user@mail.com
|
28
48
|
|
29
49
|
## Contributing
|
30
50
|
|
data/bin/ocelots
CHANGED
data/bin/ocelots_bot
ADDED
data/lib/ocelots.rb
CHANGED
@@ -1,4 +1,33 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
require 'cgi'
|
3
|
+
|
1
4
|
module Ocelots
|
2
|
-
|
5
|
+
def request_profile email
|
6
|
+
get "profiles/#{Digest::MD5.hexdigest email}"
|
7
|
+
end
|
8
|
+
|
9
|
+
def request_antechamber team_slug, from
|
10
|
+
get "antechamber/#{team_slug}", from: from
|
11
|
+
end
|
12
|
+
|
13
|
+
def post_antechamber team_slug, content
|
14
|
+
post "antechamber/#{team_slug}", body: {content: content}, headers: {'ContentType' => 'application/json'}
|
15
|
+
end
|
16
|
+
|
17
|
+
def get command, params
|
18
|
+
HTTParty.get url_for command, params
|
19
|
+
end
|
20
|
+
|
21
|
+
def post command, params
|
22
|
+
HTTParty.post url_for(command), params
|
23
|
+
end
|
24
|
+
|
25
|
+
def url_for command, params={}
|
26
|
+
params[:auth_token] = ENV['OCELOTS_AUTH_TOKEN']
|
27
|
+
"#{base_url}/api/#{command}?#{params.map{ |k,v| "#{k}=#{CGI.escape v.to_s}" }.join('&')}"
|
28
|
+
end
|
3
29
|
|
4
|
-
|
30
|
+
def base_url
|
31
|
+
ENV['OCELOTS_URL'] || 'http://ocelots.herokuapp.com'
|
32
|
+
end
|
33
|
+
end
|
data/lib/ocelots/bot.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
require 'cinch'
|
2
|
+
require 'ocelots'
|
3
|
+
|
4
|
+
module Ocelots::Bot
|
5
|
+
include Ocelots
|
6
|
+
|
7
|
+
def execute *args
|
8
|
+
RiplWatir
|
9
|
+
bot = Cinch::Bot.new do
|
10
|
+
configure do |c|
|
11
|
+
c.nick = args.shift
|
12
|
+
c.server = args.shift
|
13
|
+
c.port = args.shift.to_i
|
14
|
+
c.channels = args
|
15
|
+
end
|
16
|
+
|
17
|
+
on :message, /^phone for (.+)$/ do |m, text|
|
18
|
+
visit_page(:gab).search text
|
19
|
+
phone = on_page(:gab).phone
|
20
|
+
if phone
|
21
|
+
m.reply "phone for #{text} is #{phone}"
|
22
|
+
else
|
23
|
+
m.reply "couldn't find a phone number for #{text} sorry"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
bot.start
|
28
|
+
end
|
29
|
+
end
|
data/lib/ocelots/cli.rb
CHANGED
@@ -1,30 +1,43 @@
|
|
1
|
-
require '
|
1
|
+
require 'ocelots'
|
2
2
|
|
3
3
|
module Ocelots::Cli
|
4
|
+
include Ocelots
|
5
|
+
|
4
6
|
def execute *args
|
5
7
|
command, *args = *args
|
6
8
|
send command, *args
|
7
9
|
end
|
8
10
|
|
9
11
|
def profile email
|
10
|
-
|
11
|
-
response = request "profiles/#{persona_id}"
|
12
|
+
response = request_profile email
|
12
13
|
if response
|
13
14
|
show response, :full_name
|
14
15
|
show response, :phone
|
15
16
|
show response, :photo_url
|
16
17
|
end
|
17
18
|
end
|
19
|
+
|
20
|
+
def antechamber team_slug
|
21
|
+
Thread.new do
|
22
|
+
from = 0
|
23
|
+
loop do
|
24
|
+
messages = request_antechamber team_slug, from
|
25
|
+
messages.reverse.each do |message|
|
26
|
+
from = message['id']
|
27
|
+
person = message['person']
|
28
|
+
ts = Time.at message['timestamp'].to_i
|
29
|
+
puts "#{ts.strftime('%d/%m %H:%M:%S')} #{person['full_name']}: #{message['content']}"
|
30
|
+
end
|
31
|
+
sleep 5
|
32
|
+
end
|
33
|
+
end
|
34
|
+
loop do
|
35
|
+
message = $stdin.gets
|
36
|
+
post_antechamber team_slug, message
|
37
|
+
end
|
38
|
+
end
|
18
39
|
private
|
19
40
|
def show response, field
|
20
41
|
puts response[field.to_s] if response[field.to_s]
|
21
42
|
end
|
22
|
-
|
23
|
-
def request command
|
24
|
-
HTTParty.get "#{base_url}/api/#{command}?auth_token=#{ENV['OCELOTS_AUTH_TOKEN']}"
|
25
|
-
end
|
26
|
-
|
27
|
-
def base_url
|
28
|
-
ENV['OCELOTS_URL'] || 'http://ocelots.herokuapp.com'
|
29
|
-
end
|
30
43
|
end
|
data/ocelots.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "ocelots"
|
7
|
-
gem.version = '0.0.
|
7
|
+
gem.version = '0.0.3'
|
8
8
|
gem.authors = ["Mark Ryall"]
|
9
9
|
gem.email = ["mark@ryall.name"]
|
10
10
|
gem.description = %q{Command line wrapper for ocelots api}
|
@@ -20,5 +20,6 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.require_paths = ["lib"]
|
21
21
|
|
22
22
|
gem.add_dependency 'httparty'
|
23
|
+
gem.add_dependency 'cinch'
|
23
24
|
gem.add_development_dependency 'rake'
|
24
25
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ocelots
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-11-06 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: httparty
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: cinch
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: rake
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -48,6 +64,7 @@ email:
|
|
48
64
|
- mark@ryall.name
|
49
65
|
executables:
|
50
66
|
- ocelots
|
67
|
+
- ocelots_bot
|
51
68
|
extensions: []
|
52
69
|
extra_rdoc_files: []
|
53
70
|
files:
|
@@ -57,7 +74,9 @@ files:
|
|
57
74
|
- README.md
|
58
75
|
- Rakefile
|
59
76
|
- bin/ocelots
|
77
|
+
- bin/ocelots_bot
|
60
78
|
- lib/ocelots.rb
|
79
|
+
- lib/ocelots/bot.rb
|
61
80
|
- lib/ocelots/cli.rb
|
62
81
|
- ocelots.gemspec
|
63
82
|
homepage: http://github.com/ocelots/ocelots_gem
|
@@ -74,7 +93,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
74
93
|
version: '0'
|
75
94
|
segments:
|
76
95
|
- 0
|
77
|
-
hash:
|
96
|
+
hash: -3497293529455536224
|
78
97
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
98
|
none: false
|
80
99
|
requirements:
|
@@ -83,10 +102,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
102
|
version: '0'
|
84
103
|
segments:
|
85
104
|
- 0
|
86
|
-
hash:
|
105
|
+
hash: -3497293529455536224
|
87
106
|
requirements: []
|
88
107
|
rubyforge_project:
|
89
|
-
rubygems_version: 1.8.
|
108
|
+
rubygems_version: 1.8.23
|
90
109
|
signing_key:
|
91
110
|
specification_version: 3
|
92
111
|
summary: This gem encapsulates usage of the ocelots api and provides a command line
|