biff 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +7 -3
  3. data/VERSION +1 -1
  4. data/lib/biff.rb +25 -4
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0da6aff1a04c3f31827aab85246b86b37d9a01ec
4
- data.tar.gz: ea755b8c05cc961eade23a301ecc0c66ca668771
3
+ metadata.gz: 2baea458f955162e0a3a6bc431cbdc6911d8f049
4
+ data.tar.gz: 7de399206437a9b1ee3aa78c5a413400b8642daf
5
5
  SHA512:
6
- metadata.gz: 81c38ac5eb631c9fd901d0905977bea38789ba1c972ac1d1146007f8be1794641e5485848dafd5911db1fafaf076981087d6992cfa43786eff72346da30af726
7
- data.tar.gz: 4b1d2de44bb119f6a8c4eed863ff7d040259efdbfcf1107633fe2ec141c771ce96cd4e8c61cfdeef6bfedbc48841c1a0e180d91be1a09dfeafea64a688d7b1c6
6
+ metadata.gz: e4ea12c2f02fccede0695d88fa9c65dd12bcec1934c3c33671e0ebe8d03a920435ec8b04570cc6af6c8cd07c87013fd0b613c0dd2baef2d6a71228a82f59b298
7
+ data.tar.gz: be6a0c1408e071dbd1957a3f8eb586bf3e733b7fcd3cb780722d5a8da2747b390ae6148c96dd45fdcc19811b7eacc7ae6a2d1770ae4eda46d524aea6732caeb4
data/README.md CHANGED
@@ -14,14 +14,18 @@ The gem provides two command-line scripts, `biffer` (to avoid conflict w/ system
14
14
 
15
15
  `biff.5m.rb` is a [BitBar](https://getbitbar.com) script, which will run every 5 minutes to update the menubar entry.
16
16
 
17
- Both scripts use (by default) the configuration in ~/.biff.yaml, which should be in the following format, multiple top-level keys (servers) are allowed. Note that one of either `password` or `passcmd` is required.
17
+ Both scripts use (by default) the configuration in ~/.biff.yaml, which should be in the following format, multiple top-level keys (servers) are allowed. Note that one of `password`, `passcmd`, `token` or `tokencmd` is required.
18
+
19
+ `token` and `tokencmd` are used for gmail oauth2 authentication, and will generate a runtime error if the [gmail_xoauth](https://github.com/nfo/gmail_xoauth) gem is not installed. See the [gmail_xoauth](https://github.com/nfo/gmail_xoauth) homepage for info on how to generate an oauth2 token.
18
20
 
19
21
  ```yaml
20
22
  Name:
21
- host: required.host.address
22
- user: required_user_name
23
+ host: required.host.user
24
+ addressmak: required_user_name
23
25
  password: optional_password
24
26
  passcmd: shell_command_if_password_not_specified
27
+ token: gmail_app_oauth2_token
28
+ tokencmd: shell_command_for_gmail_token
25
29
  run: optional_command_to_run_after_inbox_changes
26
30
  cmd: optional_email_command_for_bitbar_menu_hot_link
27
31
  debug: optional_set_net_imap_debug
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
data/lib/biff.rb CHANGED
@@ -19,10 +19,7 @@ class Biff
19
19
  end
20
20
 
21
21
  def open
22
- pass = @config['password'] || `#{@config['passcmd']}`.chomp
23
- log('login', @config['user'])
24
-
25
- @imap.login(@config['user'], pass)
22
+ authenticate || login
26
23
  @imap.examine('INBOX')
27
24
  end
28
25
 
@@ -107,6 +104,30 @@ class Biff
107
104
  end
108
105
 
109
106
  private
107
+ # gmail oauth
108
+ def authenticate
109
+ return false unless @config['token'] || @config['tokencmd']
110
+
111
+ begin
112
+ require 'gmail_xoauth'
113
+ rescue Error => e
114
+ log('Is gmail_xoauth installed?')
115
+ raise e
116
+ end
117
+
118
+ token = @config['token'] || `#{@config['tokencmd']}`.chomp
119
+
120
+ @imap.authenticate('XOAUTH2', @config['user'], token)
121
+ end
122
+
123
+ # password login
124
+ def login
125
+ pass = @config['password'] || `#{@config['passcmd']}`.chomp
126
+ log('login', @config['user'])
127
+
128
+ @imap.login(@config['user'], pass)
129
+ end
130
+
110
131
  def log(*args)
111
132
  return unless @config['verbose']
112
133
  $stderr.puts(['INFO', *args].join(' '))
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: biff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rick Frankel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-17 00:00:00.000000000 Z
11
+ date: 2017-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: version