surely 0.2.1 → 0.3
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/README.md +1 -6
- data/lib/surely/daemon.rb +5 -2
- data/lib/surely/uploader.rb +36 -10
- data/lib/surely/version.rb +1 -1
- data/lib/surely.rb +1 -0
- metadata +3 -3
data/README.md
CHANGED
@@ -8,17 +8,12 @@ Surely is a daemon that watches your screenshots directory and upload new files
|
|
8
8
|
# Install the gem
|
9
9
|
$ gem install surely
|
10
10
|
|
11
|
-
# Configure it (environment variables sucks but that’ll do for now)
|
12
|
-
# Create an imgur application here: https://api.imgur.com/oauth2/addclient
|
13
|
-
export IMGUR_CLIENT_ID=…
|
14
|
-
export IMGUR_CLIENT_SECRET=…
|
15
|
-
|
16
11
|
# Start it
|
17
12
|
# The first time you run it, it will open a browser window and ask you to
|
18
13
|
# enter the OAuth credentials that you will obtain after allowing your imgur app
|
19
14
|
$ surely start
|
20
15
|
|
21
|
-
# After that, you can kill it (^C) and start it as a real daemon
|
16
|
+
# After that, you can kill it (^C) (or `ps -ef | grep surely` and `kill` its PID) and start it as a real daemon
|
22
17
|
$ surely start -d
|
23
18
|
```
|
24
19
|
|
data/lib/surely/daemon.rb
CHANGED
@@ -2,14 +2,17 @@ module Surely
|
|
2
2
|
class Daemon
|
3
3
|
def initialize(env)
|
4
4
|
@env = env
|
5
|
+
settings_file = File.join(@env['HOME'], '.surely.yml')
|
6
|
+
@settings = File.exists?(settings_file) ? YAML.load_file(settings_file) : {}
|
5
7
|
end
|
6
8
|
|
7
9
|
def start
|
8
|
-
directory = @
|
10
|
+
directory = @settings['directory']
|
9
11
|
directory ||= `defaults read com.apple.screencapture location 2> /dev/null`.chomp
|
10
12
|
directory = "#{@env['HOME']}/Desktop" if directory.empty?
|
11
13
|
|
12
|
-
@uploader = Uploader.new(@env, directory)
|
14
|
+
@uploader = Uploader.new(@env, @settings, directory)
|
15
|
+
@uploader.add_client!
|
13
16
|
@uploader.authorize!
|
14
17
|
|
15
18
|
Raad::Logger.info "Listening to changes on #{directory}..."
|
data/lib/surely/uploader.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
module Surely
|
2
2
|
class Uploader
|
3
|
-
def initialize(env, directory)
|
4
|
-
@access_token =
|
5
|
-
@refresh_token =
|
3
|
+
def initialize(env, settings, directory)
|
4
|
+
@access_token = settings['access_token']
|
5
|
+
@refresh_token = settings['refresh_token']
|
6
|
+
@imgur_client_id = settings['imgur_client_id']
|
7
|
+
@imgur_client_secret = settings['imgur_client_secret']
|
6
8
|
|
7
9
|
@imgur = Faraday.new(url: 'https://api.imgur.com') do |c|
|
8
10
|
c.request :multipart
|
@@ -11,6 +13,7 @@ module Surely
|
|
11
13
|
end
|
12
14
|
|
13
15
|
@env = env
|
16
|
+
@settings = settings
|
14
17
|
@directory = directory
|
15
18
|
end
|
16
19
|
|
@@ -32,17 +35,40 @@ module Surely
|
|
32
35
|
def update_tokens(token_data)
|
33
36
|
@access_token = token_data['access_token']
|
34
37
|
@refresh_token = token_data['refresh_token']
|
35
|
-
|
36
|
-
|
38
|
+
save_settings
|
39
|
+
end
|
40
|
+
|
41
|
+
def save_settings
|
42
|
+
@settings = @settings.merge({
|
43
|
+
'imgur_client_id' => @imgur_client_id,
|
44
|
+
'imgur_client_secret' => @imgur_client_secret,
|
45
|
+
'access_token' => @access_token,
|
46
|
+
'refresh_token' => @refresh_token,
|
47
|
+
})
|
48
|
+
|
49
|
+
File.open("#{@env['HOME']}/.surely.yml", 'w') { |f| f << @settings.to_yaml }
|
50
|
+
end
|
51
|
+
|
52
|
+
def add_client!
|
53
|
+
return true if @imgur_client_id && @imgur_client_secret
|
54
|
+
|
55
|
+
puts 'Create an imgur application here: https://api.imgur.com/oauth2/addclient'
|
56
|
+
print 'Enter your application client_id: '
|
57
|
+
@imgur_client_id = STDIN.gets.chomp
|
58
|
+
print 'Enter your application client_secret: '
|
59
|
+
@imgur_client_secret = STDIN.gets.chomp
|
60
|
+
|
61
|
+
save_settings
|
37
62
|
end
|
38
63
|
|
39
64
|
def authorize!
|
40
65
|
return true if @access_token && @refresh_token
|
41
|
-
|
66
|
+
|
67
|
+
system "open 'https://api.imgur.com/oauth2/authorize?client_id=#{@imgur_client_id}&response_type=token'"
|
42
68
|
print 'Enter your access_token: '
|
43
|
-
access_token = gets.chomp
|
69
|
+
access_token = STDIN.gets.chomp
|
44
70
|
print 'Enter your refresh_token: '
|
45
|
-
refresh_token = gets.chomp
|
71
|
+
refresh_token = STDIN.gets.chomp
|
46
72
|
update_tokens('access_token' => access_token, 'refresh_token' => refresh_token)
|
47
73
|
end
|
48
74
|
|
@@ -50,8 +76,8 @@ module Surely
|
|
50
76
|
response = @imgur.post '/oauth2/token' do |r|
|
51
77
|
r.body = {
|
52
78
|
refresh_token: @refresh_token,
|
53
|
-
client_id: @
|
54
|
-
client_secret: @
|
79
|
+
client_id: @imgur_client_id,
|
80
|
+
client_secret: @imgur_client_secret,
|
55
81
|
grant_type: 'refresh_token'
|
56
82
|
}
|
57
83
|
end
|
data/lib/surely/version.rb
CHANGED
data/lib/surely.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: surely
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.3'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -142,7 +142,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
142
142
|
version: '0'
|
143
143
|
segments:
|
144
144
|
- 0
|
145
|
-
hash: -
|
145
|
+
hash: -478749530698552417
|
146
146
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
147
147
|
none: false
|
148
148
|
requirements:
|
@@ -151,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
151
|
version: '0'
|
152
152
|
segments:
|
153
153
|
- 0
|
154
|
-
hash: -
|
154
|
+
hash: -478749530698552417
|
155
155
|
requirements: []
|
156
156
|
rubyforge_project:
|
157
157
|
rubygems_version: 1.8.23
|