ubcbooker 0.2.3 → 1.0.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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/lib/ubcbooker.rb +11 -0
- data/lib/ubcbooker/cli.rb +5 -3
- data/lib/ubcbooker/config.rb +46 -25
- data/lib/ubcbooker/version.rb +1 -1
- data/ubcbooker.gemspec +3 -0
- metadata +44 -3
- data/lib/ubcbooker/sample.yml +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d1e73b63f6a87178f231f0c23da7c8cccc7b2037
|
4
|
+
data.tar.gz: c1d507e4562bf8ce1da4dac8c09c5363a6c7d947
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3b840fbd221115e669777f7dd264bcf8ae2db82c492ba2711be026d2cbfc0aa650f1a6d4a9ba9742a216a7945ebd930075b4fb1ad2d563b1cd7ba75cc9018c23
|
7
|
+
data.tar.gz: 1f5a9abbdc2cd2a1ec6747d207207a8f318e142bc37abc3f959a5f4efef67c7ebfb667a342e4620b443e1e1460dc66d4c6441427beab508d82e606b52cce701c
|
data/README.md
CHANGED
@@ -49,7 +49,7 @@ ex. Book a room in CS from 11am to 1pm on March 5th with the name 'Study Group'
|
|
49
49
|
$> ubcbooker -b cs -n 'Study Group' -d 03/05 -t 11:00-13:00
|
50
50
|
```
|
51
51
|
|
52
|
-
Currently this app supports project rooms in cs (
|
52
|
+
Currently this app supports project rooms in cs (Computer Science). Run `ubcbooker -l` to check the latest supported departments.
|
53
53
|
|
54
54
|
Feel free to send a PR that supports your department's rooms.
|
55
55
|
|
@@ -67,4 +67,4 @@ The gem is available as open source under the terms of the [MIT License](https:/
|
|
67
67
|
|
68
68
|
## Code of Conduct
|
69
69
|
|
70
|
-
Everyone interacting in the Ubcbooker project’s
|
70
|
+
Everyone interacting in the Ubcbooker project’s codebase, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/jumbosushi/ubcbooker/blob/master/CODE_OF_CONDUCT.md).
|
data/lib/ubcbooker.rb
CHANGED
@@ -7,6 +7,17 @@ require "obscenity"
|
|
7
7
|
require "io/console" # For handling password
|
8
8
|
require "optparse"
|
9
9
|
require "yaml"
|
10
|
+
require "keyring"
|
11
|
+
# Keyring dependencies
|
12
|
+
# Keyring gem is currently unable to correcly detect the following downlaod
|
13
|
+
# https://github.com/jheiss/keyring/blob/master/ext/mkrf_conf.rb#L26
|
14
|
+
# http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using
|
15
|
+
case Gem::Platform.local.os
|
16
|
+
when "linux"
|
17
|
+
require "gir_ffi-gnome_keyring"
|
18
|
+
when "darwin"
|
19
|
+
require "ruby-keychain"
|
20
|
+
end
|
10
21
|
|
11
22
|
module Ubcbooker
|
12
23
|
BOOKING_URL = {
|
data/lib/ubcbooker/cli.rb
CHANGED
@@ -130,11 +130,13 @@ module Ubcbooker
|
|
130
130
|
]
|
131
131
|
|
132
132
|
@options = get_options
|
133
|
-
|
133
|
+
if !@config.defined? || @config.is_windows?
|
134
|
+
@config.ask
|
135
|
+
end
|
134
136
|
|
135
137
|
@client = get_scraper(@options[:department],
|
136
|
-
@config.
|
137
|
-
@config.
|
138
|
+
@config.get_username,
|
139
|
+
@config.get_password)
|
138
140
|
begin
|
139
141
|
room_id = @client.book(@options)
|
140
142
|
puts "Success! #{room_id} is booked".green
|
data/lib/ubcbooker/config.rb
CHANGED
@@ -2,13 +2,15 @@ module Ubcbooker
|
|
2
2
|
class Config
|
3
3
|
attr_accessor :account
|
4
4
|
|
5
|
+
# We use system keyring for storing cwl credentials
|
6
|
+
# https://askubuntu.com/questions/32164/what-does-a-keyring-do
|
7
|
+
#
|
8
|
+
# since the keyring gem doesn't suppot Windows, we ask for cred each time
|
9
|
+
# if the user is on OSX or Linux, username and password will be stored in keyring
|
5
10
|
def initialize
|
6
|
-
@
|
7
|
-
|
8
|
-
|
9
|
-
end
|
10
|
-
|
11
|
-
@account = YAML.load_file(@config_path)
|
11
|
+
@keyring = Keyring.new
|
12
|
+
@win_username = ""
|
13
|
+
@win_password = ""
|
12
14
|
end
|
13
15
|
|
14
16
|
def ask
|
@@ -17,24 +19,20 @@ module Ubcbooker
|
|
17
19
|
print "Your CWL password: "
|
18
20
|
# Hide the password input
|
19
21
|
password = STDIN.noecho(&:gets).chomp
|
20
|
-
|
22
|
+
save_credentials(username, password)
|
21
23
|
puts
|
22
24
|
end
|
23
25
|
|
24
|
-
def
|
25
|
-
|
26
|
-
|
26
|
+
def save_credentials(username, password)
|
27
|
+
if is_windows?
|
28
|
+
@win_username = username
|
29
|
+
@win_pasword = password
|
30
|
+
else
|
31
|
+
@keyring.set_password("ubcbooker", "username", username)
|
32
|
+
@keyring.set_password("ubcbooker", "password", password)
|
27
33
|
end
|
28
34
|
end
|
29
35
|
|
30
|
-
def write(username, password)
|
31
|
-
@account["username"] = username
|
32
|
-
@account["password"] = password
|
33
|
-
new_yml = YAML.dump(@account)
|
34
|
-
open(@config_path, "w") { |f| f.write(new_yml) }
|
35
|
-
@account = YAML.load_file(@config_path)
|
36
|
-
end
|
37
|
-
|
38
36
|
def print_supported_departments
|
39
37
|
puts "Supported department options in #{Ubcbooker::VERSION}:"
|
40
38
|
BOOKING_URL.keys.each do |d|
|
@@ -42,18 +40,41 @@ module Ubcbooker
|
|
42
40
|
end
|
43
41
|
end
|
44
42
|
|
45
|
-
|
46
|
-
|
47
|
-
|
43
|
+
# True if user is on windows platform
|
44
|
+
def is_windows?
|
45
|
+
return Gem.win_platform?
|
46
|
+
end
|
47
|
+
|
48
|
+
# Delete stored user credentials
|
49
|
+
# Used in specs
|
50
|
+
def delete_credentials
|
51
|
+
if is_windows?
|
52
|
+
@win_username = ""
|
53
|
+
@win_password = ""
|
54
|
+
else
|
55
|
+
@keyring.delete_password("ubcbooker", "username")
|
56
|
+
@keyring.delete_password("ubcbooker", "password")
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_username
|
61
|
+
if is_windows?
|
62
|
+
return @win_username
|
63
|
+
else
|
64
|
+
return @keyring.get_password("ubcbooker", "username")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def get_password
|
69
|
+
if is_windows?
|
70
|
+
return @win_pasword
|
48
71
|
else
|
49
|
-
|
72
|
+
return @keyring.get_password("ubcbooker", "password")
|
50
73
|
end
|
51
74
|
end
|
52
75
|
|
53
76
|
def defined?
|
54
|
-
return
|
55
|
-
@account["username"] != "sample" &&
|
56
|
-
@account["password"] != "sample"
|
77
|
+
return !!(get_username && get_password)
|
57
78
|
end
|
58
79
|
end
|
59
80
|
end
|
data/lib/ubcbooker/version.rb
CHANGED
data/ubcbooker.gemspec
CHANGED
@@ -24,6 +24,9 @@ Gem::Specification.new do |spec|
|
|
24
24
|
spec.add_dependency "typhoeus", "~> 1.1"
|
25
25
|
spec.add_dependency "obscenity", "~> 1.0.2"
|
26
26
|
spec.add_dependency "tty-spinner", "~> 0.7.0"
|
27
|
+
spec.add_dependency "keyring", "~> 0.4.1"
|
28
|
+
spec.add_dependency "gir_ffi-gnome_keyring", "~> 0.0.3"
|
29
|
+
spec.add_dependency "ruby-keychain", "~> 0.3.2"
|
27
30
|
|
28
31
|
spec.add_development_dependency "rake", "~> 10.0"
|
29
32
|
spec.add_development_dependency "rspec", "~> 3.0"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ubcbooker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Atsushi Yamamoto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|
@@ -80,6 +80,48 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.7.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: keyring
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.4.1
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.4.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: gir_ffi-gnome_keyring
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 0.0.3
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 0.0.3
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: ruby-keychain
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.3.2
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: 0.3.2
|
83
125
|
- !ruby/object:Gem::Dependency
|
84
126
|
name: rake
|
85
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -175,7 +217,6 @@ files:
|
|
175
217
|
- lib/ubcbooker/color.rb
|
176
218
|
- lib/ubcbooker/config.rb
|
177
219
|
- lib/ubcbooker/error.rb
|
178
|
-
- lib/ubcbooker/sample.yml
|
179
220
|
- lib/ubcbooker/scrapers/base_scraper.rb
|
180
221
|
- lib/ubcbooker/scrapers/cs.rb
|
181
222
|
- lib/ubcbooker/scrapers/scraper.rb
|
data/lib/ubcbooker/sample.yml
DELETED