yammer-cli 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/.gitignore +1 -0
- data/README.md +17 -0
- data/bin/yammer +45 -0
- data/lib/yammer-cli.rb +106 -0
- data/yammer-cli.gemspec +22 -0
- metadata +125 -0
data/.gitignore
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
*.gem
|
data/README.md
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
A Yammer Command Line Interface
|
2
|
+
===============================
|
3
|
+
|
4
|
+
This is a simple command line interface for Yammer that can be used to quickly lookup and post new updates.
|
5
|
+
|
6
|
+
Usage
|
7
|
+
-----
|
8
|
+
./yammer.rb -u "Yammer from the command line is so much quicker!" (post update)
|
9
|
+
|
10
|
+
./yammer.rb -l (list last 20 updates)
|
11
|
+
|
12
|
+
Right now you'll have to manually configure your OAuth token and secret in the source code.
|
13
|
+
|
14
|
+
TODO
|
15
|
+
----
|
16
|
+
|
17
|
+
* Add better support for configuring OAuth credentials
|
data/bin/yammer
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'yammer-cli'
|
5
|
+
|
6
|
+
puts "starting yammer-cli"
|
7
|
+
|
8
|
+
options = {}
|
9
|
+
|
10
|
+
optparse = OptionParser.new do|opts|
|
11
|
+
opts.banner = "Usage: yammer [options] ..."
|
12
|
+
|
13
|
+
options[:update] = false
|
14
|
+
opts.on( '-u', '--update', 'Send an update to yammer' ) do
|
15
|
+
options[:update] = true
|
16
|
+
end
|
17
|
+
|
18
|
+
options[:list] = false
|
19
|
+
opts.on( '-l', '--list', 'Get the last 20 updates' ) do
|
20
|
+
options[:list] = true
|
21
|
+
end
|
22
|
+
|
23
|
+
options[:setup] = false
|
24
|
+
opts.on( '-s', '--setup', 'Setup OAuth authentication to Yammer' ) do
|
25
|
+
options[:setup] = true
|
26
|
+
end
|
27
|
+
|
28
|
+
opts.on( '-h', '--help', 'Display this screen' ) do
|
29
|
+
puts opts
|
30
|
+
exit
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
#parse command line arguments and remove parsed flags from ARGV
|
35
|
+
optparse.parse!
|
36
|
+
|
37
|
+
yammer = YammerCli.new
|
38
|
+
|
39
|
+
if options[:update]
|
40
|
+
yammer.send_update(ARGV.join(' '))
|
41
|
+
elsif options[:list]
|
42
|
+
yammer.list
|
43
|
+
elsif options[:setup]
|
44
|
+
YammerCli.setup
|
45
|
+
end
|
data/lib/yammer-cli.rb
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
require 'yammer'
|
2
|
+
require 'rainbow'
|
3
|
+
require 'launchy'
|
4
|
+
require 'date'
|
5
|
+
require 'oauth'
|
6
|
+
require 'yaml'
|
7
|
+
|
8
|
+
class YammerCli
|
9
|
+
|
10
|
+
#attr_accessor :yammer
|
11
|
+
|
12
|
+
CONSUMER_TOKEN = 'mWn3PY7sc2znsuZxEMvNUQ'
|
13
|
+
CONSUMER_SECRET = 'AGP2akBsMwybb1AoGBp7RdLc4vfb2l3NY4P6VM'
|
14
|
+
|
15
|
+
def self.new
|
16
|
+
|
17
|
+
super
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize
|
22
|
+
|
23
|
+
settings_path = File.expand_path('./lib/config.yml')
|
24
|
+
|
25
|
+
puts "Settings path: #{settings_path}"
|
26
|
+
|
27
|
+
if File.exists?(settings_path)
|
28
|
+
settings = YAML::load(File.open(settings_path))
|
29
|
+
else
|
30
|
+
puts "Settings not found. Run yammer with config option."
|
31
|
+
exit
|
32
|
+
end
|
33
|
+
|
34
|
+
#configure the yammer authentication parameters
|
35
|
+
Yammer.configure do |config|
|
36
|
+
config.consumer_key = CONSUMER_TOKEN
|
37
|
+
config.consumer_secret = CONSUMER_SECRET
|
38
|
+
config.oauth_token = settings[:oauth_token]
|
39
|
+
config.oauth_token_secret = settings[:oauth_secret]
|
40
|
+
end
|
41
|
+
|
42
|
+
#create new yammer object
|
43
|
+
@yammer = Yammer.new
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
def send_update(update)
|
48
|
+
puts "Sending update to Yammer: #{update}"
|
49
|
+
@yammer.update(update)
|
50
|
+
end
|
51
|
+
|
52
|
+
def list
|
53
|
+
messages = @yammer.messages
|
54
|
+
|
55
|
+
#parse out user objects from references
|
56
|
+
users = messages[:references].select {|f| f[:type] == 'user' }
|
57
|
+
|
58
|
+
#parse each message and look up user names from users array
|
59
|
+
messages[:messages].each do |message|
|
60
|
+
body = message[:body][:plain]
|
61
|
+
created_at = DateTime.parse(message[:created_at]).to_time.getlocal.strftime("%I:%M%p")
|
62
|
+
user = get_user(users, message[:sender_id])[:full_name]
|
63
|
+
puts user.foreground(:red) + " at " + created_at.foreground(:blue) + " " + body
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.setup
|
68
|
+
consumer=OAuth::Consumer.new CONSUMER_TOKEN,
|
69
|
+
CONSUMER_SECRET,
|
70
|
+
{:site=>"https://www.yammer.com"}
|
71
|
+
|
72
|
+
request_token=consumer.get_request_token
|
73
|
+
|
74
|
+
Launchy.open(request_token.authorize_url)
|
75
|
+
|
76
|
+
puts "Place \"#{request_token.authorize_url}\" in your browser"
|
77
|
+
print "Enter the number they give you: "
|
78
|
+
pin = STDIN.readline.chomp
|
79
|
+
|
80
|
+
access_token = request_token.get_access_token(:oauth_verifier => pin)
|
81
|
+
|
82
|
+
tokens = {:oauth_token => access_token.token, :oauth_secret => access_token.secret}
|
83
|
+
|
84
|
+
settings_path = File.expand_path('./lib/config.yml')
|
85
|
+
|
86
|
+
File.open(settings_path, "w") do |f|
|
87
|
+
f.write tokens.to_yaml
|
88
|
+
end
|
89
|
+
|
90
|
+
puts "Settings saved."
|
91
|
+
|
92
|
+
#puts "Token: #{access_token.token}"
|
93
|
+
|
94
|
+
#puts "Secret: #{access_token.secret}"
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
|
99
|
+
#search users for user with specific id and return that user
|
100
|
+
def get_user(users, id)
|
101
|
+
user = users.select { |f| f[:id] == id }
|
102
|
+
user.first
|
103
|
+
end
|
104
|
+
|
105
|
+
|
106
|
+
end
|
data/yammer-cli.gemspec
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Gem::Specification.new do |gem|
|
2
|
+
gem.name = "yammer-cli"
|
3
|
+
gem.version = "0.2.0"
|
4
|
+
gem.authors = ["Joe Wright"]
|
5
|
+
gem.email = ["joe.wright@noventech.com"]
|
6
|
+
gem.description = "A yammer command line client."
|
7
|
+
gem.summary = "A yammer command line client."
|
8
|
+
gem.homepage = "http://www.noventech.com"
|
9
|
+
|
10
|
+
gem.files = `git ls-files`.split($/)
|
11
|
+
gem.executables << 'yammer'
|
12
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
13
|
+
gem.require_paths = ["lib"]
|
14
|
+
|
15
|
+
gem.add_runtime_dependency 'yammer'
|
16
|
+
gem.add_runtime_dependency 'rainbow'
|
17
|
+
gem.add_runtime_dependency 'oauth'
|
18
|
+
gem.add_runtime_dependency 'launchy'
|
19
|
+
|
20
|
+
gem.add_development_dependency 'bundler'
|
21
|
+
gem.add_development_dependency 'rake'
|
22
|
+
end
|
metadata
ADDED
@@ -0,0 +1,125 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: yammer-cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease:
|
5
|
+
version: 0.2.0
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Joe Wright
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
|
13
|
+
date: 2012-11-02 00:00:00 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: yammer
|
17
|
+
prerelease: false
|
18
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
19
|
+
none: false
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "0"
|
24
|
+
type: :runtime
|
25
|
+
version_requirements: *id001
|
26
|
+
- !ruby/object:Gem::Dependency
|
27
|
+
name: rainbow
|
28
|
+
prerelease: false
|
29
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
30
|
+
none: false
|
31
|
+
requirements:
|
32
|
+
- - ">="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: "0"
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id002
|
37
|
+
- !ruby/object:Gem::Dependency
|
38
|
+
name: oauth
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: "0"
|
46
|
+
type: :runtime
|
47
|
+
version_requirements: *id003
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: launchy
|
50
|
+
prerelease: false
|
51
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
53
|
+
requirements:
|
54
|
+
- - ">="
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: "0"
|
57
|
+
type: :runtime
|
58
|
+
version_requirements: *id004
|
59
|
+
- !ruby/object:Gem::Dependency
|
60
|
+
name: bundler
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
63
|
+
none: false
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
version: "0"
|
68
|
+
type: :development
|
69
|
+
version_requirements: *id005
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: rake
|
72
|
+
prerelease: false
|
73
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
74
|
+
none: false
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: "0"
|
79
|
+
type: :development
|
80
|
+
version_requirements: *id006
|
81
|
+
description: A yammer command line client.
|
82
|
+
email:
|
83
|
+
- joe.wright@noventech.com
|
84
|
+
executables:
|
85
|
+
- yammer
|
86
|
+
extensions: []
|
87
|
+
|
88
|
+
extra_rdoc_files: []
|
89
|
+
|
90
|
+
files:
|
91
|
+
- .gitignore
|
92
|
+
- README.md
|
93
|
+
- bin/yammer
|
94
|
+
- lib/yammer-cli.rb
|
95
|
+
- yammer-cli.gemspec
|
96
|
+
homepage: http://www.noventech.com
|
97
|
+
licenses: []
|
98
|
+
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options: []
|
101
|
+
|
102
|
+
require_paths:
|
103
|
+
- lib
|
104
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ">="
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: "0"
|
110
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: "0"
|
116
|
+
requirements: []
|
117
|
+
|
118
|
+
rubyforge_project:
|
119
|
+
rubygems_version: 1.8.24
|
120
|
+
signing_key:
|
121
|
+
specification_version: 3
|
122
|
+
summary: A yammer command line client.
|
123
|
+
test_files: []
|
124
|
+
|
125
|
+
has_rdoc:
|