bbs_uploader 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +54 -3
- data/bin/bbs_uploader +7 -15
- data/lib/bbs_uploader/ruby_regex.rb +78 -0
- data/lib/bbs_uploader/version.rb +1 -1
- data/lib/bbs_uploader.rb +86 -8
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5a6493e66e376c7fc95de0b042ad07fed9513589
|
4
|
+
data.tar.gz: cba63d2d2124b7523c985cff4135014e389b7f25
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71c1a42c39aad4e4a362fb5a2589be96ea6dd3f78e1afc4e0562facc8f62d7f522428947b4c46550974c4b77472a4f471be8ec3242ca9568a28224cd96047b8a
|
7
|
+
data.tar.gz: 23687eb9066ef25c007edf1c39b458d3522ac55f8cc9466b68af871d0549cdabc3fbd1e11fa5c67c56a882c761686ed1f5ca109a563ddc7ccd9f39b7e5f48930
|
data/README.md
CHANGED
@@ -22,8 +22,60 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
+
**命令行使用:**
|
25
26
|
|
27
|
+
使用指南:
|
26
28
|
|
29
|
+
```
|
30
|
+
Usage: bbs_uploader [options]
|
31
|
+
-i, --input-file [file] Input file can be URL, image file or other file
|
32
|
+
-h, --help Show this message
|
33
|
+
-v, --version Print version
|
34
|
+
```
|
35
|
+
|
36
|
+
调用实例:
|
37
|
+
|
38
|
+
```
|
39
|
+
$ bbs_uploader ~/Downloads/test.jpg
|
40
|
+
D, [2016-11-15T16:31:52.906672 #30130] DEBUG -- : Query bss-image hosts Success: {"ttl"=>86400, "http"=>{"io"=>["http://iovip.qbox.me"], "up"=>["http://up.qiniu.com", "http://upload.qiniu.com", "-H up.qiniu.com http://183.136.139.16"]}, "https"=>{"io"=>["https://iovip.qbox.me"], "up"=>["https://up.qbox.me"]}}
|
41
|
+
图片上传成功!
|
42
|
+
链接为: http://ognvcf5x6.bkt.clouddn.com/bbs_image/test.jpg
|
43
|
+
markdown 链接: ![](http://ognvcf5x6.bkt.clouddn.com/bbs_image/test.jpg)
|
44
|
+
|
45
|
+
$ bin/bbs_uploader http://xiajian.github.io/assets/images/dongxiang.png
|
46
|
+
下载文件的地址: http://xiajian.github.io/assets/images/dongxiang.png
|
47
|
+
/tmp/dongxiang.png
|
48
|
+
D, [2016-11-21T09:57:43.758140 #49294] DEBUG -- : Query bss-image hosts Success: {"ttl"=>86400, "http"=>{"io"=>["http://iovip.qbox.me"], "up"=>["http://up.qiniu.com", "http://upload.qiniu.com", "-H up.qiniu.com http://183.136.139.16"]}, "https"=>{"io"=>["https://iovip.qbox.me"], "up"=>["https://up.qbox.me"]}}
|
49
|
+
上传成功!
|
50
|
+
链接为: http://ognvcf5x6.bkt.clouddn.com/bbs_image/dongxiang.png
|
51
|
+
|
52
|
+
markdown 链接: ![](http://ognvcf5x6.bkt.clouddn.com/bbs_image/dongxiang.png)
|
53
|
+
```
|
54
|
+
|
55
|
+
![](http://ognvcf5x6.bkt.clouddn.com/bbs_image/test.jpg)
|
56
|
+
|
57
|
+
**编程使用:**
|
58
|
+
|
59
|
+
```
|
60
|
+
BbsUploader.qiniu = {
|
61
|
+
access_key: 'your access key',
|
62
|
+
secret_key: 'your secret key',
|
63
|
+
bucket: "your bucket",
|
64
|
+
bucket_domain: "your application domain"
|
65
|
+
}
|
66
|
+
|
67
|
+
# 超集方法:可以上传任意的文件
|
68
|
+
BbsUploader.upload '~/Downloads/test.jpg'
|
69
|
+
BbsUploader.upload 'http://xiajian.github.io/assets/images/dongxiang.png'
|
70
|
+
|
71
|
+
BbsUploader.upload_image '~/Downloads/test.jpg'
|
72
|
+
BbsUploader.upload_file '~/Downloads/install.php'
|
73
|
+
|
74
|
+
```
|
75
|
+
|
76
|
+
然后,就祝你安好!!!
|
77
|
+
|
78
|
+
> PS: 思考 网盘以及 CDN 在部署的上区别。 CDN 内容分发,网盘就是云存储。 这就不明白,SB!!
|
27
79
|
|
28
80
|
## Development
|
29
81
|
|
@@ -33,10 +85,9 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
33
85
|
|
34
86
|
## Contributing
|
35
87
|
|
36
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
88
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/xiajian/bbs_uploader. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](contributor-covenant.org) code of conduct.
|
37
89
|
|
38
90
|
|
39
91
|
## License
|
40
92
|
|
41
|
-
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
42
|
-
|
93
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/bin/bbs_uploader
CHANGED
@@ -21,12 +21,7 @@ OptionParser.new do |opts|
|
|
21
21
|
exit
|
22
22
|
end
|
23
23
|
|
24
|
-
opts.on('-i', '--input-file [file]', '
|
25
|
-
unless File.exist? file
|
26
|
-
puts "输入的文件 #{file} 不存在,请检查后重试"
|
27
|
-
exit
|
28
|
-
end
|
29
|
-
|
24
|
+
opts.on('-i', '--input-file [file]', 'Input file can be URL, image file or other file') do |file|
|
30
25
|
options[:input_file] = File.absolute_path file
|
31
26
|
end
|
32
27
|
end.parse!
|
@@ -34,15 +29,12 @@ end.parse!
|
|
34
29
|
if options[:input_file].nil?
|
35
30
|
file = ARGV[0]
|
36
31
|
|
37
|
-
if
|
38
|
-
|
39
|
-
|
40
|
-
puts "输入的文件 #{ARGV[0]} 不存在,请检查后重试"
|
41
|
-
exit
|
42
|
-
elsif file.nil?
|
43
|
-
puts "没有选择上传的图片"
|
44
|
-
exit
|
32
|
+
if file.nil?
|
33
|
+
puts "没有选择上传的文件"
|
34
|
+
exit
|
45
35
|
end
|
36
|
+
|
37
|
+
options[:input_file] = file
|
46
38
|
end
|
47
39
|
|
48
|
-
BbsUploader.
|
40
|
+
BbsUploader.upload options[:input_file]
|
@@ -0,0 +1,78 @@
|
|
1
|
+
# Copy from https://github.com/eparreno/ruby_regex/blob/master/lib/ruby_regex.rb
|
2
|
+
# All Rights belong to author Emili Parreno(https://github.com/eparreno)
|
3
|
+
module BbsUploader
|
4
|
+
module RubyRegex
|
5
|
+
# Username
|
6
|
+
# This regular expression doesn't validate username's length
|
7
|
+
Username = /\A[a-zA-Z0-9_]*\z/
|
8
|
+
|
9
|
+
# Dni (spanish ID card)
|
10
|
+
Dni = /\A\d{8}[A-Za-z]{1}\z/
|
11
|
+
|
12
|
+
# URL
|
13
|
+
Url = URL = /(\A\z)|(\A(http|https):\/\/[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?\/.*)?\z)/ix
|
14
|
+
|
15
|
+
# Domain
|
16
|
+
Domain = /(\A\z)|(\A[a-z0-9]+([\-\.]{1}[a-z0-9]+)*\.[a-z]{2,5}(([0-9]{1,5})?)?\z)/ix
|
17
|
+
|
18
|
+
# CreditCard
|
19
|
+
# Validates Credit Card numbers, Checks if it contains 16 numbers in groups of 4 separated by -, space or nothing
|
20
|
+
CreditCard = /\A(\d{4}-){3}\d{4}\z|\A(\d{4}\s){3}\d{4}\z|\A\d{16}\z/
|
21
|
+
|
22
|
+
# MasterCard credit card
|
23
|
+
MasterCard = /\A5[1-5]\d{14}\z/
|
24
|
+
|
25
|
+
# Visa credit card
|
26
|
+
Visa = /\A4\d{15}\z/
|
27
|
+
|
28
|
+
# US Social Security
|
29
|
+
USSocialSecurity = /\A\d{3}-\d{2}-\d{4}\z/
|
30
|
+
|
31
|
+
# General postal code
|
32
|
+
# Validates a 5 digits postal code
|
33
|
+
GeneralPostalCode = /\A\d{5}\z/
|
34
|
+
|
35
|
+
# US ZIP code
|
36
|
+
# Validates US ZIP Code (basic and extended format)
|
37
|
+
ZIPCode = /\A(\d{5}\z)|(\d{5}-\d{4}\z)/
|
38
|
+
|
39
|
+
# Twitter username
|
40
|
+
TwitterUsername = /\A([a-z0-9\_])+\z/ix
|
41
|
+
|
42
|
+
# Github username
|
43
|
+
GithubUsername = /\A([a-z0-9\_\-])+\z/ix
|
44
|
+
|
45
|
+
# Slideshare username
|
46
|
+
SlideshareUsername = /\A([a-z0-9])+\z/ix
|
47
|
+
|
48
|
+
# Del.icio.us username
|
49
|
+
DeliciousUsername = /\A([a-z0-9\_\-])+\z/ix
|
50
|
+
|
51
|
+
# Email
|
52
|
+
# From the email regex research: http://fightingforalostcause.net/misc/2006/compare-email-regex.php
|
53
|
+
# Authors: James Watts and Francisco Jose Martin Moreno
|
54
|
+
Email = /\A([\w\!\#\z\%\&\'\*\+\-\/\=\?\\A\`{\|\}\~]+\.)*[\w\+-]+@((((([a-z0-9]{1}[a-z0-9\-]{0,62}[a-z0-9]{1})|[a-z])\.)+[a-z]{2,6})|(\d{1,3}\.){3}\d{1,3}(\:\d{1,5})?)\z/i
|
55
|
+
|
56
|
+
# UUID
|
57
|
+
# Validates a UUID as defined: http://en.wikipedia.org/wiki/Universally_unique_identifier
|
58
|
+
UUID = /\A([0-9a-fA-F]{32}|[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})\z/
|
59
|
+
|
60
|
+
# Date DB format YYYY-MM-DD
|
61
|
+
# I know it will validate 2001-02-31 but is I think we are focusing in formats more than in parsing
|
62
|
+
DBDate = /\A\d{4}-(#{("01".."12").to_a.join("|")})-(#{("01".."31").to_a.join("|")})\z/
|
63
|
+
|
64
|
+
# Date Time DB format YYYY-MM-DD hh:mm:ss
|
65
|
+
DBDateTime = /\A\d{4}-(#{("01".."12").to_a.join("|")})-(#{("01".."31").to_a.join("|")})\s(#{("00".."23").to_a.join("|")}):(#{("00".."59").to_a.join("|")}):(#{("00".."59").to_a.join("|")})\z/
|
66
|
+
|
67
|
+
# SpanishBankAccountNumber
|
68
|
+
SpanishBankAccountNumber = /\A\d{4}[ -]?\d{4}[ -]?\d{2}[ -]?\d{10}\z/
|
69
|
+
|
70
|
+
# IBAN
|
71
|
+
# Source: http://snipplr.com/view/15322/iban-regex-all-ibans/
|
72
|
+
# You have to remove spaces or any separator character from the original field before use this regex
|
73
|
+
IBAN = /[a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}/
|
74
|
+
|
75
|
+
# MacAddress
|
76
|
+
MacAddress = /\A([0-9A-F]{2}[:-]){5}([0-9A-F]{2})\z/i
|
77
|
+
end
|
78
|
+
end
|
data/lib/bbs_uploader/version.rb
CHANGED
data/lib/bbs_uploader.rb
CHANGED
@@ -1,10 +1,20 @@
|
|
1
1
|
require "qiniu"
|
2
|
+
require "open-uri" # 下载文件
|
2
3
|
require "bbs_uploader/version"
|
4
|
+
require "bbs_uploader/ruby_regex"
|
3
5
|
|
4
6
|
module BbsUploader
|
5
7
|
# Your code goes here...
|
6
8
|
IMAGE_URL_REGEXP = /http:\/\/.*[jpg|png|jpeg]$/
|
7
9
|
|
10
|
+
IMAGE_FILE_REGEXP = /.*[jpg|png|jpeg|gif|bmp]$/
|
11
|
+
|
12
|
+
module FileType
|
13
|
+
IMAGE = 'image'.freeze
|
14
|
+
|
15
|
+
FILE = 'file'.freeze
|
16
|
+
end
|
17
|
+
|
8
18
|
class << self
|
9
19
|
@@qiniu = {}
|
10
20
|
|
@@ -26,12 +36,48 @@ module BbsUploader
|
|
26
36
|
}.merge(options)
|
27
37
|
end
|
28
38
|
|
29
|
-
|
30
|
-
|
39
|
+
# 下载文件 - 依赖本地的 tmp 目录, 需要 `open-uri`
|
40
|
+
#
|
41
|
+
# 参考: http://stackoverflow.com/questions/2263540/how-do-i-download-a-binary-file-over-http
|
42
|
+
#
|
43
|
+
# @param {String} url - 网络上的 URL 地址
|
44
|
+
# @param {String} file_path - 下载指定的文件路径地址
|
45
|
+
#
|
46
|
+
# @return {String} file_path - 文件在当前系统的中的路径
|
47
|
+
def download(url, file_path = '')
|
48
|
+
puts "下载文件的地址: #{url}"
|
49
|
+
|
50
|
+
if file_path == ''.freeze
|
51
|
+
file_path = "/tmp/#{url.scan(/.*\/([^\/]*)/).flatten[0]}"
|
52
|
+
end
|
53
|
+
|
54
|
+
if File.exist? file_path
|
55
|
+
`rm -rf #{file_path}`
|
56
|
+
end
|
57
|
+
|
58
|
+
File.open(file_path, 'wb') do |saved_file|
|
59
|
+
open(url, 'rb') do |read_file|
|
60
|
+
saved_file.write(read_file.read)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
file_path
|
65
|
+
rescue => e
|
66
|
+
puts "下载文件发生异常: #{e}"
|
67
|
+
|
68
|
+
''
|
69
|
+
end
|
70
|
+
|
71
|
+
def upload_file(file_path, file_type = FileType::FILE)
|
31
72
|
Qiniu.establish_connection! access_key: self.qiniu[:access_key],
|
32
73
|
secret_key: self.qiniu[:secret_key]
|
33
74
|
|
34
|
-
key =
|
75
|
+
key = if file_type == FileType::FILE
|
76
|
+
"bbs_file/#{File.basename(file_path)}"
|
77
|
+
elsif file_type == FileType::IMAGE
|
78
|
+
"bbs_image/#{File.basename(file_path)}"
|
79
|
+
end
|
80
|
+
|
35
81
|
put_policy = Qiniu::Auth::PutPolicy.new(
|
36
82
|
self.qiniu[:bucket], # 存储空间
|
37
83
|
key, # 指定上传的资源名,如果传入 nil,就表示不指定资源名,将使用默认的资源名
|
@@ -50,22 +96,54 @@ module BbsUploader
|
|
50
96
|
)
|
51
97
|
|
52
98
|
if code == 200
|
53
|
-
|
99
|
+
file_url = "http://#{self.qiniu[:bucket_domain]}/#{result['key']}"
|
54
100
|
|
55
|
-
puts "
|
101
|
+
puts "上传成功! \n链接为: #{file_url}"
|
56
102
|
|
57
|
-
|
103
|
+
file_url
|
58
104
|
else
|
59
|
-
puts '
|
105
|
+
puts '上传文件失败'
|
60
106
|
|
61
107
|
nil
|
62
108
|
end
|
63
109
|
rescue => e
|
64
|
-
puts "
|
110
|
+
puts "上传发生异常: #{e}"
|
65
111
|
|
66
112
|
nil
|
67
113
|
end
|
68
114
|
|
115
|
+
def upload_image(file_path)
|
116
|
+
if file_path =~ IMAGE_FILE_REGEXP
|
117
|
+
image_url = upload_file file_path, FileType::IMAGE
|
118
|
+
|
119
|
+
puts "markdown 链接: #{markdown_image_link(image_url)}"
|
120
|
+
|
121
|
+
image_url
|
122
|
+
else
|
123
|
+
puts '不是图片文件,请选择重新选择!!'
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def upload(resource = '')
|
128
|
+
if resource =~ RubyRegex::URL
|
129
|
+
file_path = download resource
|
130
|
+
|
131
|
+
if file_path =~ IMAGE_FILE_REGEXP
|
132
|
+
upload_image file_path
|
133
|
+
end
|
134
|
+
elsif File.exist? resource
|
135
|
+
file_path = File.absolute_path(resource)
|
136
|
+
|
137
|
+
if resource =~ IMAGE_FILE_REGEXP
|
138
|
+
upload_image file_path
|
139
|
+
else
|
140
|
+
upload_file file_path
|
141
|
+
end
|
142
|
+
else
|
143
|
+
puts "输入的文件 #{resource} 不存在,请检查后重试"
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
69
147
|
def markdown_image_link(image_url)
|
70
148
|
if image_url && image_url.is_a?(String) && IMAGE_URL_REGEXP.match(image_url)
|
71
149
|
"![](#{image_url})"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bbs_uploader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- xiajian
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-11-
|
11
|
+
date: 2016-11-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: qiniu
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- bin/console
|
73
73
|
- bin/setup
|
74
74
|
- lib/bbs_uploader.rb
|
75
|
+
- lib/bbs_uploader/ruby_regex.rb
|
75
76
|
- lib/bbs_uploader/version.rb
|
76
77
|
homepage: https://github.com/xiajian/bbs_uploader
|
77
78
|
licenses:
|