random_yiff 0.1.0 → 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.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9cdbfff59f5fe1ec753aa7e68d0d5ae3e4860d2e
4
- data.tar.gz: 4b685a8b90e3a68db2399ea6ad3582b958f9247d
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ YTI3ZDM4MjA4NDE3ZWRiMjFhOTY1YjFmNjk4MjQ0MDFiMDMzN2M3NA==
5
+ data.tar.gz: !binary |-
6
+ NmJjMTY5MDA3Yzc1MThhNGI5MGQ5OTlmYjg0NWQyNTAwNTFhMDc1YQ==
5
7
  SHA512:
6
- metadata.gz: 8acb682305358d552b6c56a5b9aeb0c6a063c9656ef5ca7448d4829050439329061d2e6240d0f4e8a9cf5849f63bb11df293e84d158e60e5f4673089be6bd3e6
7
- data.tar.gz: fe2f13b8ead9e3d6958018eabe4e51e6203da7487dafbb36381b7946fe6582713f8efc9557c93dac15763839d9a8e7066dc87770cbd2f926baebbcdd910485ad
8
+ metadata.gz: !binary |-
9
+ YjMyOTgzYmQyODFiODc5ZDJiNGI3N2E4ZDMyZjE4MDdlZmE3NmM3OTBhMjQz
10
+ MTZkZGFjNmQzMTRjYTc1YjE3N2NjNWRkYzA0MGMyZDcwMGE4YzBmZjczYThi
11
+ YmU2MjVmZThiZTJjMDg3NjgyODg1NTlmOTdkOTAwN2FhMDU1NDc=
12
+ data.tar.gz: !binary |-
13
+ ZWNjYjZmNzhlMzZjOWYxNmRjMzRmNjE4MzY1ODY5OTRjZTFmMDY1MDBiOWY5
14
+ ODhlNGE1NmM0YTcxM2RhYjM3YmIxNGI5NTIxNTlhYzM1NGVjNmEzOTkwN2I2
15
+ YTdkNjE0N2MwOTRlMmUyNTgwY2FiYjVjYWU0YzAzOGUwMjc5ZDc=
@@ -1,8 +1,14 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 2.2.0
4
- bundler_args: --jobs 7
3
+ - 2.2.0
4
+ bundler_args: "--jobs 7"
5
5
  gemfile:
6
- - Gemfile
6
+ - Gemfile
7
7
  script:
8
- - rspec --format documentation --color
8
+ - rspec --format documentation --color
9
+ deploy:
10
+ provider: rubygems
11
+ api_key:
12
+ secure: A5brsfww6hOoGIlYcEihr3AIohFmJKJj4oRVwnonXq2sZ366wDETkQblV3hgss0/CnD18WWn/H8ncu9qLpefSDjsdzYF1/Cz5utsh8rMpE41OTsRQtaFozefJ1PyVY194M4ifVhUZr+i8RsQqHhS5NsgnBSqsoFtF7Ji3/NoSn8=
13
+ on:
14
+ tags: true
@@ -1,14 +1,50 @@
1
1
  require 'thor'
2
2
  require 'launchy'
3
+ require 'asciiart'
3
4
 
4
5
  module RandomYiff
5
6
  class Cli < Thor
6
7
  desc 'open', 'Default action, open furry pr0n in webbrowser'
8
+
7
9
  def open
8
10
  RandomYiff::E621.new do |yiff|
9
11
  Launchy.open(yiff.file_url)
10
12
  end
11
13
  end
14
+
15
+ desc 'ascii', 'Print furry pr0n as ascii'
16
+
17
+ def ascii
18
+ yiff = random_image
19
+ puts AsciiArt.new(yiff.file_url).to_ascii_art(color: true, width: 160)
20
+ end
21
+
22
+ desc 'download', 'Download furry pr0n'
23
+
24
+ method_option :path,
25
+ desc: 'path of directory to download furry pr0n into',
26
+ type: :string,
27
+ default: './'
28
+
29
+ def download
30
+ RandomYiff::E621.new do |yiff|
31
+ path = File.join(options[:path], yiff.file_name)
32
+ File.write(path, yiff.file)
33
+ end
34
+ end
35
+
12
36
  default_task :open
37
+
38
+ private
39
+
40
+ class NotAnImage < StandardError; end
41
+
42
+ def random_image
43
+ RandomYiff::E621.new do |yiff|
44
+ fail NotAnImage if yiff.file_ext == 'flv'
45
+ end
46
+ rescue NotAnImage
47
+ random_image
48
+ end
13
49
  end
14
50
  end
@@ -1,3 +1,3 @@
1
1
  module RandomYiff
2
- VERSION = '0.1.0'
2
+ VERSION = '0.2.0'
3
3
  end
@@ -19,6 +19,7 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_dependency 'thor'
21
21
  spec.add_dependency 'launchy'
22
+ spec.add_dependency 'asciiart'
22
23
  spec.add_development_dependency 'bundler', '~> 1.7'
23
24
  spec.add_development_dependency 'rake', '~> 10.0'
24
25
  spec.add_development_dependency 'rspec', '~> 3.2'
@@ -7,8 +7,6 @@ ARGV.clear
7
7
  describe RandomYiff::Cli do
8
8
  include_context :e621
9
9
 
10
- let(:launchy) { double(Launchy) }
11
-
12
10
  describe '#open' do
13
11
  it 'opens random furry pr0n via Launchy' do
14
12
  allow(Launchy).to receive(:open).with(e621_image_url)
@@ -16,4 +14,47 @@ describe RandomYiff::Cli do
16
14
  expect(Launchy).to have_received(:open).with(e621_image_url)
17
15
  end
18
16
  end
17
+
18
+ describe '#download' do
19
+ before do
20
+ allow(File).to receive(:write).and_return(true)
21
+ end
22
+
23
+ context 'When called without options' do
24
+ it 'downloads random furry pr0n to pwd' do
25
+ RandomYiff::Cli.start(['download'])
26
+ expect(File).to have_received(:write)
27
+ .with("./#{e621_image_name}", 'yiff')
28
+ end
29
+ end
30
+
31
+ context 'When called with `path` option' do
32
+ it 'downloads random furry pr0n into path provided' do
33
+ RandomYiff::Cli.start(%w(download --path /foo))
34
+ expect(File).to have_received(:write)
35
+ .with("/foo/#{e621_image_name}", 'yiff')
36
+ end
37
+ end
38
+ end
39
+
40
+ describe '#ascii' do
41
+ let(:furry_pr0n) { instance_double(AsciiArt) }
42
+ it 'prints a random furry pr0n image as ascii' do
43
+ allow(AsciiArt).to receive(:new).and_return(furry_pr0n)
44
+ allow(furry_pr0n).to receive(:to_ascii_art).and_return('yiff')
45
+ expect { RandomYiff::Cli.start(['ascii']) }
46
+ .to output("yiff\n").to_stdout
47
+ end
48
+ end
49
+
50
+ describe '#random_image' do
51
+ subject(:cli) { RandomYiff::Cli.new }
52
+
53
+ it 'reinitializes RandomYiff::E621 until it finds an image' do
54
+ furry_pr0n = double(RandomYiff::E621)
55
+ expect(RandomYiff::E621).to receive(:new).twice.and_yield(furry_pr0n)
56
+ expect(furry_pr0n).to receive(:file_ext).twice.and_return('flv', 'jpg')
57
+ cli.send(:random_image)
58
+ end
59
+ end
19
60
  end
@@ -37,6 +37,6 @@ RSpec.shared_context :e621 do
37
37
  before do
38
38
  stub_request(:get, e621_random_route).to_return(e621_post_response)
39
39
  stub_request(:get, e621_post_url).to_return(e621_post_raw)
40
- stub_request(:get, e621_image_url)
40
+ stub_request(:get, e621_image_url).to_return(body: 'yiff')
41
41
  end
42
42
  end
metadata CHANGED
@@ -1,111 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: random_yiff
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Awesome
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-14 00:00:00.000000000 Z
11
+ date: 2015-03-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - ! '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - ! '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: launchy
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - ! '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: asciiart
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ! '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ! '>='
39
53
  - !ruby/object:Gem::Version
40
54
  version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ~>
46
60
  - !ruby/object:Gem::Version
47
61
  version: '1.7'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ~>
53
67
  - !ruby/object:Gem::Version
54
68
  version: '1.7'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rake
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ~>
60
74
  - !ruby/object:Gem::Version
61
75
  version: '10.0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ~>
67
81
  - !ruby/object:Gem::Version
68
82
  version: '10.0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: rspec
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ~>
74
88
  - !ruby/object:Gem::Version
75
89
  version: '3.2'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ~>
81
95
  - !ruby/object:Gem::Version
82
96
  version: '3.2'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: webmock
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - "~>"
101
+ - - ~>
88
102
  - !ruby/object:Gem::Version
89
103
  version: '1.20'
90
104
  type: :development
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - "~>"
108
+ - - ~>
95
109
  - !ruby/object:Gem::Version
96
110
  version: '1.20'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: coveralls
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ">="
115
+ - - ! '>='
102
116
  - !ruby/object:Gem::Version
103
117
  version: '0'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ">="
122
+ - - ! '>='
109
123
  - !ruby/object:Gem::Version
110
124
  version: '0'
111
125
  description:
@@ -116,8 +130,8 @@ executables:
116
130
  extensions: []
117
131
  extra_rdoc_files: []
118
132
  files:
119
- - ".gitignore"
120
- - ".travis.yml"
133
+ - .gitignore
134
+ - .travis.yml
121
135
  - Gemfile
122
136
  - LICENSE.txt
123
137
  - README.md
@@ -144,12 +158,12 @@ require_paths:
144
158
  - lib
145
159
  required_ruby_version: !ruby/object:Gem::Requirement
146
160
  requirements:
147
- - - ">="
161
+ - - ! '>='
148
162
  - !ruby/object:Gem::Version
149
163
  version: '0'
150
164
  required_rubygems_version: !ruby/object:Gem::Requirement
151
165
  requirements:
152
- - - ">="
166
+ - - ! '>='
153
167
  - !ruby/object:Gem::Version
154
168
  version: '0'
155
169
  requirements: []