bbs_uploader 0.1.1 → 0.1.2
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/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 链接: 
|
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 链接: 
|
53
|
+
```
|
54
|
+
|
55
|
+

|
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
|
""
|
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:
|