netprint 0.0.4 → 0.1.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.
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'netprint'
4
+ require 'docopt'
5
+
6
+ program_name = File.basename($0)
7
+ doc =<<-EOS
8
+ Usage:
9
+ #{program_name} [--user=<userid:password>] [--email=<email>] [--secret=<secret>] <filename>
10
+ #{program_name} -h | --help
11
+
12
+ Options:
13
+ -h --help Show this screen.
14
+ -v --version Show version information.
15
+ -u --user=<userid:password> User account. if not specified, use ENV['NETPRINT_(USERID|PASSWORD)']
16
+ -e --email=<email> Email address to notify
17
+ -s --secret=<secret> Secret code
18
+ EOS
19
+
20
+ begin
21
+ options = Docopt::docopt(doc, :version => Netprint::VERSION)
22
+ userid, password = options['--user'].split(':') if options['--user']
23
+ netprint = Netprint::Agent.new(
24
+ userid || ENV['NETPRINT_USERID'],
25
+ password || ENV['NETPRINT_PASSWORD'])
26
+
27
+ netprint.login
28
+ code = netprint.upload(options['<filename>'],
29
+ :email => options['--email'] || ENV['NETPRINT_EMAIL'],
30
+ :secret_code => options['--secret'])
31
+
32
+ puts code
33
+ rescue Docopt::Exit => e
34
+ puts e.message
35
+ end
@@ -2,6 +2,7 @@
2
2
  require "tmpdir"
3
3
  require "fileutils"
4
4
  require "pathname"
5
+ require 'digest/md5'
5
6
 
6
7
  module Netprint
7
8
  class Agent
@@ -25,7 +26,7 @@ module Netprint
25
26
  options = Options.new(options)
26
27
 
27
28
  Dir.mktmpdir do |dir|
28
- upload_filename = (Pathname(dir) + ([Time.now.to_f.to_s, File.basename(filename)].join('_'))).to_s
29
+ upload_filename = (Pathname(dir) + ([Time.now.to_f.to_s, Digest::MD5.hexdigest(filename).to_s].join('_'))).to_s
29
30
  cp filename, upload_filename
30
31
 
31
32
  page = mechanize.get(url.upload)
@@ -1,3 +1,3 @@
1
1
  module Netprint
2
- VERSION = "0.0.4"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -9,8 +9,8 @@ Gem::Specification.new do |gem|
9
9
  gem.homepage = ""
10
10
 
11
11
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
12
- gem.files = `git ls-files`.split("\n")
13
- gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
12
+ gem.files = `git ls-files -z`.split("\0")
13
+ gem.test_files = `git ls-files -z -- {test,spec,features}/*`.split("\0")
14
14
  gem.name = "netprint"
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = Netprint::VERSION
@@ -19,6 +19,7 @@ Gem::Specification.new do |gem|
19
19
  gem.add_development_dependency('rake')
20
20
  gem.add_development_dependency('netprint')
21
21
  gem.add_development_dependency('webmock')
22
- gem.add_dependency('mechanize', '2.5.1')
22
+ gem.add_dependency('mechanize', '2.7.0')
23
23
  gem.add_dependency('addressable')
24
+ gem.add_dependency('docopt')
24
25
  end
@@ -1,3 +1,4 @@
1
+ # -*- coding: utf-8 -*-
1
2
  require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
2
3
 
3
4
  include Netprint
@@ -18,34 +19,48 @@ describe Agent do
18
19
  @agent.should be_login
19
20
  end
20
21
 
21
- it 'should upload' do
22
- stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
23
- to_return(open(File.expand_path(File.dirname(__FILE__) + '/../upload.html')).read)
24
- stub_request(:post, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
25
- to_return(open(File.expand_path(File.dirname(__FILE__) + '/../list.html')).read)
26
- stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=0&s=qwertyuiopoiuytrewq').
27
- to_return(open(File.expand_path(File.dirname(__FILE__) + '/../list.html')).read)
22
+ shared_examples_for '#upload' do
23
+ it 'should upload' do
24
+ stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
25
+ to_return(open(File.expand_path(File.dirname(__FILE__) + '/../upload.html')).read)
26
+ stub_request(:post, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
27
+ to_return(open(File.expand_path(File.dirname(__FILE__) + '/../list.html')).read)
28
+ stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=0&s=qwertyuiopoiuytrewq').
29
+ to_return(open(File.expand_path(File.dirname(__FILE__) + '/../list.html')).read)
28
30
 
29
- filename = File.expand_path(File.dirname(__FILE__) + '/../foo.pdf')
30
- @agent.login
31
+ filename = File.expand_path(pdf_filename)
32
+ @agent.login
33
+
34
+ code = @agent.upload(filename)
35
+ code.should match(/^[0-9A-Z]{8}$/)
36
+ end
37
+
38
+ it 'should handle registration error' do
39
+ stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
40
+ to_return(open(File.expand_path(File.dirname(__FILE__) + '/../upload.html')).read)
41
+ stub_request(:post, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
42
+ to_return(open(File.expand_path(File.dirname(__FILE__) + '/../list.html')).read)
43
+ stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=0&s=qwertyuiopoiuytrewq').
44
+ to_return(open(File.expand_path(File.dirname(__FILE__) + '/../error.html')).read)
31
45
 
32
- code = @agent.upload(filename)
33
- code.should match(/^[0-9A-Z]{8}$/)
46
+ filename = File.expand_path(pdf_filename)
47
+ @agent.login
48
+
49
+ lambda {
50
+ @agent.upload(filename)
51
+ }.should raise_error(RegistrationError)
52
+ end
34
53
  end
35
54
 
36
- it 'should handle registration error' do
37
- stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
38
- to_return(open(File.expand_path(File.dirname(__FILE__) + '/../upload.html')).read)
39
- stub_request(:post, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=1&s=qwertyuiopoiuytrewq').
40
- to_return(open(File.expand_path(File.dirname(__FILE__) + '/../list.html')).read)
41
- stub_request(:get, 'https://www.printing.ne.jp/cgi-bin/mn.cgi?c=0&m=0&s=qwertyuiopoiuytrewq').
42
- to_return(open(File.expand_path(File.dirname(__FILE__) + '/../error.html')).read)
55
+ context 'filename is ASCII only' do
56
+ let(:pdf_filename) { File.dirname(__FILE__) + '/../foo.pdf' }
43
57
 
44
- filename = File.expand_path(File.dirname(__FILE__) + '/../foo.pdf')
45
- @agent.login
58
+ it_should_behave_like '#upload'
59
+ end
60
+
61
+ context 'filename has non-ASCII characters' do
62
+ let(:pdf_filename) { File.dirname(__FILE__) + '/../あいうえお.pdf' }
46
63
 
47
- lambda {
48
- @agent.upload(filename)
49
- }.should raise_error(RegistrationError)
64
+ it_should_behave_like '#upload'
50
65
  end
51
66
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netprint
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-10-20 00:00:00.000000000 Z
12
+ date: 2013-12-05 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -82,7 +82,7 @@ dependencies:
82
82
  requirements:
83
83
  - - '='
84
84
  - !ruby/object:Gem::Version
85
- version: 2.5.1
85
+ version: 2.7.0
86
86
  type: :runtime
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,7 +90,7 @@ dependencies:
90
90
  requirements:
91
91
  - - '='
92
92
  - !ruby/object:Gem::Version
93
- version: 2.5.1
93
+ version: 2.7.0
94
94
  - !ruby/object:Gem::Dependency
95
95
  name: addressable
96
96
  requirement: !ruby/object:Gem::Requirement
@@ -107,10 +107,27 @@ dependencies:
107
107
  - - ! '>='
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: docopt
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
110
126
  description: A library to upload file to netprint
111
127
  email:
112
128
  - youpy@buycheapviagraonlinenow.com
113
- executables: []
129
+ executables:
130
+ - netprint
114
131
  extensions: []
115
132
  extra_rdoc_files: []
116
133
  files:
@@ -120,6 +137,7 @@ files:
120
137
  - LICENSE
121
138
  - README.md
122
139
  - Rakefile
140
+ - bin/netprint
123
141
  - lib/netprint.rb
124
142
  - lib/netprint/agent.rb
125
143
  - lib/netprint/constants.rb
@@ -136,6 +154,7 @@ files:
136
154
  - spec/netprint/url_spec.rb
137
155
  - spec/spec_helper.rb
138
156
  - spec/upload.html
157
+ - spec/あいうえお.pdf
139
158
  homepage: ''
140
159
  licenses: []
141
160
  post_install_message:
@@ -150,7 +169,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
150
169
  version: '0'
151
170
  segments:
152
171
  - 0
153
- hash: -1077446977435558909
172
+ hash: -565048395014736693
154
173
  required_rubygems_version: !ruby/object:Gem::Requirement
155
174
  none: false
156
175
  requirements:
@@ -159,10 +178,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
159
178
  version: '0'
160
179
  segments:
161
180
  - 0
162
- hash: -1077446977435558909
181
+ hash: -565048395014736693
163
182
  requirements: []
164
183
  rubyforge_project:
165
- rubygems_version: 1.8.24
184
+ rubygems_version: 1.8.25
166
185
  signing_key:
167
186
  specification_version: 3
168
187
  summary: A library to upload file to netprint
@@ -175,3 +194,4 @@ test_files:
175
194
  - spec/netprint/url_spec.rb
176
195
  - spec/spec_helper.rb
177
196
  - spec/upload.html
197
+ - spec/あいうえお.pdf