yammer-cli 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/.gitignore +1 -0
  2. data/README.md +17 -0
  3. data/bin/yammer +45 -0
  4. data/lib/yammer-cli.rb +106 -0
  5. data/yammer-cli.gemspec +22 -0
  6. 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
@@ -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: