reddit_wallpaper 0.0.2 → 0.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.
- checksums.yaml +4 -4
- data/lib/reddit_wallpaper.rb +17 -8
- data/spec/reddit_wallpaper_spec.rb +78 -0
- data/spec/support/reddit_stub.rb +15 -0
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 114bcb054b2e01cae7d3a9edff84d9584ce13dce
|
4
|
+
data.tar.gz: 25c1435e6ff0fc26038981df9591abe01d98e769
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d0fb0af3be8b2e4d2349f7a605c807a9fd9c02339609281791bbe0050cc608cd023a79ea0c0cf88f500ff92659612d18f25f31e929c831ab416c0d7b59b7b3c8
|
7
|
+
data.tar.gz: 7d82e5892b7a6a257488c5447328c0ee5bddb6007a004bd9e4b6695b6cfbe89808dacc0f1a1b4f2c067eea32ad06cd1a3b4cb7da3a213c83fe9f487ed708d668
|
data/lib/reddit_wallpaper.rb
CHANGED
@@ -3,6 +3,10 @@ require 'ruby_reddit_api'
|
|
3
3
|
require 'open_uri_redirections'
|
4
4
|
|
5
5
|
class RedditWallpaper
|
6
|
+
def self.reddit
|
7
|
+
@reddit ||= Reddit::Api.new
|
8
|
+
end
|
9
|
+
|
6
10
|
def initialize(subreddit, destination_file)
|
7
11
|
@subreddit = subreddit
|
8
12
|
@path = destination_file
|
@@ -13,10 +17,10 @@ class RedditWallpaper
|
|
13
17
|
attr_reader :path, :subreddit, :downloaded, :not_downloaded
|
14
18
|
|
15
19
|
def download_new_image
|
16
|
-
posts = reddit.browse(subreddit)
|
17
|
-
posts.each do |
|
18
|
-
if
|
19
|
-
not_downloaded <<
|
20
|
+
posts = RedditWallpaper.reddit.browse(subreddit)
|
21
|
+
posts.map(&:url).each do |url|
|
22
|
+
if download? url
|
23
|
+
not_downloaded << url
|
20
24
|
end
|
21
25
|
end
|
22
26
|
|
@@ -25,14 +29,19 @@ class RedditWallpaper
|
|
25
29
|
|
26
30
|
private
|
27
31
|
|
28
|
-
|
29
|
-
|
32
|
+
# Checks that the post url is either a jpg file or hosted on imgur
|
33
|
+
#
|
34
|
+
def download?(url)
|
35
|
+
url[/(imgur|\.jpe?g\z)/] && !downloaded.include?(url)
|
30
36
|
end
|
31
37
|
|
32
38
|
def download_image(url)
|
33
|
-
|
39
|
+
return unless url
|
40
|
+
# Append .jpg to ensure we are getting the image file from imgur
|
41
|
+
url += ".jpg" unless url[/\.jpe?g\z/]
|
42
|
+
|
34
43
|
open(path, 'wb') do |file|
|
35
|
-
file << open(url
|
44
|
+
file << open(url, allow_redirections: :all).read
|
36
45
|
end
|
37
46
|
downloaded << url
|
38
47
|
end
|
@@ -0,0 +1,78 @@
|
|
1
|
+
require 'minitest/autorun'
|
2
|
+
|
3
|
+
require_relative '../lib/reddit_wallpaper'
|
4
|
+
require_relative 'support/reddit_stub'
|
5
|
+
|
6
|
+
describe 'RedditWallpaper' do
|
7
|
+
let(:reddit_wallpaper) { RedditWallpaper.new(subreddit, "/dev/null") }
|
8
|
+
let(:image_url) { "http://i.imgur.com/Nhg3uHn.jpg" }
|
9
|
+
let(:subreddit) { "fancy-subreddit" }
|
10
|
+
|
11
|
+
it 'downloads the latest image posts' do
|
12
|
+
post = MiniTest::Mock.new
|
13
|
+
post.expect :url, image_url
|
14
|
+
|
15
|
+
RedditWallpaper.stub :reddit, Support::RedditStub.new([post]) do
|
16
|
+
reddit_wallpaper.download_new_image
|
17
|
+
end
|
18
|
+
|
19
|
+
post.verify
|
20
|
+
|
21
|
+
reddit_wallpaper.downloaded.must_include image_url
|
22
|
+
end
|
23
|
+
|
24
|
+
it 'loads posts from the specified subreddit' do
|
25
|
+
reddit_stub = Support::RedditStub.new
|
26
|
+
|
27
|
+
RedditWallpaper.stub :reddit, reddit_stub do
|
28
|
+
reddit_wallpaper.download_new_image
|
29
|
+
end
|
30
|
+
|
31
|
+
reddit_stub.subreddit.must_equal subreddit
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'does not download non-jpg files' do
|
35
|
+
bad_url = "http://www.google.com"
|
36
|
+
|
37
|
+
post = MiniTest::Mock.new
|
38
|
+
post.expect :url, bad_url
|
39
|
+
|
40
|
+
RedditWallpaper.stub :reddit, Support::RedditStub.new([post]) do
|
41
|
+
reddit_wallpaper.download_new_image
|
42
|
+
end
|
43
|
+
|
44
|
+
post.verify
|
45
|
+
|
46
|
+
reddit_wallpaper.downloaded.wont_include bad_url
|
47
|
+
end
|
48
|
+
|
49
|
+
it 'accepts imgur urls without an extension' do
|
50
|
+
imgur_url = "http://imgur.com/Nhg3uHn"
|
51
|
+
|
52
|
+
post = MiniTest::Mock.new
|
53
|
+
post.expect :url, imgur_url
|
54
|
+
|
55
|
+
RedditWallpaper.stub :reddit, Support::RedditStub.new([post]) do
|
56
|
+
reddit_wallpaper.download_new_image
|
57
|
+
end
|
58
|
+
|
59
|
+
post.verify
|
60
|
+
|
61
|
+
reddit_wallpaper.downloaded.must_include imgur_url + ".jpg"
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'does not mind being redirected' do
|
65
|
+
secure_url = "https://imgur.com/Nhg3uHn"
|
66
|
+
|
67
|
+
post = MiniTest::Mock.new
|
68
|
+
post.expect :url, secure_url
|
69
|
+
|
70
|
+
RedditWallpaper.stub :reddit, Support::RedditStub.new([post]) do
|
71
|
+
reddit_wallpaper.download_new_image
|
72
|
+
end
|
73
|
+
|
74
|
+
post.verify
|
75
|
+
|
76
|
+
reddit_wallpaper.downloaded.must_include secure_url + ".jpg"
|
77
|
+
end
|
78
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: reddit_wallpaper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Emad Elsaid
|
@@ -39,6 +39,20 @@ dependencies:
|
|
39
39
|
- - ~>
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0.1'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: minitest
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ~>
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '5.3'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ~>
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '5.3'
|
42
56
|
description: Download the latest images from your favorite subreddit and set them
|
43
57
|
as your desktop background
|
44
58
|
email:
|
@@ -53,6 +67,8 @@ files:
|
|
53
67
|
- README.md
|
54
68
|
- bin/reddit_wallpaper
|
55
69
|
- lib/reddit_wallpaper.rb
|
70
|
+
- spec/reddit_wallpaper_spec.rb
|
71
|
+
- spec/support/reddit_stub.rb
|
56
72
|
homepage: https://github.com/jordanbyron/reddit_wallpaper
|
57
73
|
licenses:
|
58
74
|
- MIT
|
@@ -77,5 +93,7 @@ rubygems_version: 2.2.2
|
|
77
93
|
signing_key:
|
78
94
|
specification_version: 4
|
79
95
|
summary: Auto-changing wallpaper from reddit / imgur images
|
80
|
-
test_files:
|
96
|
+
test_files:
|
97
|
+
- spec/reddit_wallpaper_spec.rb
|
98
|
+
- spec/support/reddit_stub.rb
|
81
99
|
has_rdoc:
|