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.
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: