s3itch_client 1.1.0 → 1.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.
- data/CHANGELOG.md +18 -0
- data/README.md +1 -0
- data/lib/s3itch_client.rb +24 -3
- data/lib/s3itch_client/cli.rb +4 -0
- data/lib/s3itch_client/version.rb +1 -1
- data/s3itch_client.gemspec +2 -0
- data/spec/s3itch_client_spec.rb +23 -0
- metadata +55 -39
data/CHANGELOG.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# CHANGELOG
|
2
|
+
|
3
|
+
## 1.2.0
|
4
|
+
|
5
|
+
* Adds filename parameterization support
|
6
|
+
|
7
|
+
## 1.1.0
|
8
|
+
|
9
|
+
* Adds HTTPS support (without certificate validation)
|
10
|
+
|
11
|
+
## 1.0.1
|
12
|
+
|
13
|
+
* URI encoding for filenames
|
14
|
+
* Doumentation updates
|
15
|
+
|
16
|
+
## 1.0.0
|
17
|
+
|
18
|
+
* Initial release
|
data/README.md
CHANGED
data/lib/s3itch_client.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require "s3itch_client/version"
|
2
2
|
|
3
|
+
require "i18n"
|
3
4
|
require "net/http"
|
4
5
|
require "securerandom"
|
5
6
|
require "uri"
|
@@ -19,7 +20,7 @@ module S3itchClient
|
|
19
20
|
password = options[:password]
|
20
21
|
|
21
22
|
if File.exists?(filepath) && !File.directory?(filepath)
|
22
|
-
uniq_name = build_unique_name(filepath)
|
23
|
+
uniq_name = build_unique_name(filepath, options[:parameterize])
|
23
24
|
|
24
25
|
uri.path = "/#{uniq_name}"
|
25
26
|
|
@@ -48,7 +49,7 @@ module S3itchClient
|
|
48
49
|
end
|
49
50
|
end
|
50
51
|
|
51
|
-
def self.build_unique_name(filepath)
|
52
|
+
def self.build_unique_name(filepath, to_param=false)
|
52
53
|
filename = File.basename(filepath)
|
53
54
|
extname = File.extname(filename)
|
54
55
|
basename = File.basename(filename, extname)
|
@@ -56,7 +57,10 @@ module S3itchClient
|
|
56
57
|
# Ruby 1.8.7 compatibility
|
57
58
|
uuid = SecureRandom.respond_to?(:uuid) ? SecureRandom.uuid : SecureRandom.hex
|
58
59
|
|
59
|
-
|
60
|
+
uniq_name = "#{basename}_#{uuid}#{extname}"
|
61
|
+
uniq_name = parameterize(uniq_name) if to_param
|
62
|
+
|
63
|
+
URI.encode(uniq_name)
|
60
64
|
end
|
61
65
|
|
62
66
|
def self.indifferent_hash(hash)
|
@@ -64,4 +68,21 @@ module S3itchClient
|
|
64
68
|
indifferent.merge(hash)
|
65
69
|
end
|
66
70
|
|
71
|
+
def self.parameterize(string)
|
72
|
+
parameterized_string = I18n.transliterate(string, :replacement => "-", :locale => :en)
|
73
|
+
|
74
|
+
# Turn unwanted chars into the separator
|
75
|
+
parameterized_string.gsub!(/[^a-z0-9\-_]+/i, "-")
|
76
|
+
|
77
|
+
re_sep = Regexp.escape("-")
|
78
|
+
|
79
|
+
# No more than one of the separator in a row.
|
80
|
+
parameterized_string.gsub!(/#{re_sep}{2,}/, "-")
|
81
|
+
|
82
|
+
# Remove leading/trailing separator.
|
83
|
+
parameterized_string.gsub!(/^#{re_sep}|#{re_sep}$/i, '')
|
84
|
+
|
85
|
+
parameterized_string
|
86
|
+
end
|
87
|
+
|
67
88
|
end
|
data/lib/s3itch_client/cli.rb
CHANGED
@@ -29,6 +29,10 @@ module S3itchClient
|
|
29
29
|
options["password"] = password
|
30
30
|
end
|
31
31
|
|
32
|
+
opts.on("-e", "--[no-]parameterize", "Parameterize the filename") do |parameterize|
|
33
|
+
options["parameterize"] = parameterize
|
34
|
+
end
|
35
|
+
|
32
36
|
opts.on_tail("-h", "--help", "Show this message") do
|
33
37
|
puts opts
|
34
38
|
exit
|
data/s3itch_client.gemspec
CHANGED
@@ -12,6 +12,8 @@ Gem::Specification.new do |gem|
|
|
12
12
|
gem.summary = %q{Upload files to S3 via your own s3itch instance}
|
13
13
|
gem.homepage = "https://github.com/k33l0r/s3itch_client"
|
14
14
|
|
15
|
+
gem.add_dependency "i18n", ">= 0.6.1"
|
16
|
+
|
15
17
|
gem.add_development_dependency "bundler"
|
16
18
|
gem.add_development_dependency "rake"
|
17
19
|
gem.add_development_dependency "rspec", "~> 2.11.0"
|
data/spec/s3itch_client_spec.rb
CHANGED
@@ -37,6 +37,29 @@ describe S3itchClient do
|
|
37
37
|
name = S3itchClient.build_unique_name("/tmp/cute kitten.jpeg")
|
38
38
|
name.should match(/\Acute%20kitten_[\da-z-]{32,36}\.jpeg\z/)
|
39
39
|
end
|
40
|
+
|
41
|
+
it "parameterizes the name if required to" do
|
42
|
+
S3itchClient.should_receive(:parameterize).with(/\Akitten/).and_return do |argument|
|
43
|
+
argument
|
44
|
+
end
|
45
|
+
S3itchClient.build_unique_name("kitten", true)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
describe ".parameterize" do
|
50
|
+
it "transliterates non-ASCII characters" do
|
51
|
+
utf8 = "Ä-Ö-Ü-Å-Æ-and-Ø"
|
52
|
+
ascii = S3itchClient.parameterize(utf8)
|
53
|
+
ascii.should == "A-O-U-A-AE-and-O"
|
54
|
+
end
|
55
|
+
|
56
|
+
it "converts spaces to hyphens" do
|
57
|
+
S3itchClient.parameterize("This and that").should == "This-and-that"
|
58
|
+
end
|
59
|
+
|
60
|
+
it "removes 'unwanted' characters" do
|
61
|
+
S3itchClient.parameterize("Unwanted?!€Characters").should == "Unwanted-Characters"
|
62
|
+
end
|
40
63
|
end
|
41
64
|
|
42
65
|
describe ".upload" do
|
metadata
CHANGED
@@ -1,96 +1,112 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3itch_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.2.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Matias Korhonen
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
|
15
|
+
name: i18n
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
17
18
|
requirements:
|
18
19
|
- - ! '>='
|
19
20
|
- !ruby/object:Gem::Version
|
20
|
-
version:
|
21
|
+
version: 0.6.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
21
25
|
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.6.1
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: bundler
|
22
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
23
34
|
requirements:
|
24
35
|
- - ! '>='
|
25
36
|
- !ruby/object:Gem::Version
|
26
37
|
version: '0'
|
27
|
-
none: false
|
28
|
-
prerelease: false
|
29
38
|
type: :development
|
30
|
-
|
31
|
-
name: rake
|
39
|
+
prerelease: false
|
32
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
33
42
|
requirements:
|
34
43
|
- - ! '>='
|
35
44
|
- !ruby/object:Gem::Version
|
36
45
|
version: '0'
|
37
|
-
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rake
|
38
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
39
50
|
requirements:
|
40
51
|
- - ! '>='
|
41
52
|
- !ruby/object:Gem::Version
|
42
53
|
version: '0'
|
43
|
-
none: false
|
44
|
-
prerelease: false
|
45
54
|
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
46
62
|
- !ruby/object:Gem::Dependency
|
47
63
|
name: rspec
|
48
|
-
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
49
66
|
requirements:
|
50
67
|
- - ~>
|
51
68
|
- !ruby/object:Gem::Version
|
52
69
|
version: 2.11.0
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
73
|
none: false
|
54
|
-
requirement: !ruby/object:Gem::Requirement
|
55
74
|
requirements:
|
56
75
|
- - ~>
|
57
76
|
- !ruby/object:Gem::Version
|
58
77
|
version: 2.11.0
|
59
|
-
none: false
|
60
|
-
prerelease: false
|
61
|
-
type: :development
|
62
78
|
- !ruby/object:Gem::Dependency
|
63
79
|
name: webmock
|
64
|
-
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
65
82
|
requirements:
|
66
83
|
- - ~>
|
67
84
|
- !ruby/object:Gem::Version
|
68
85
|
version: 1.8.11
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
89
|
none: false
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
71
90
|
requirements:
|
72
91
|
- - ~>
|
73
92
|
- !ruby/object:Gem::Version
|
74
93
|
version: 1.8.11
|
75
|
-
none: false
|
76
|
-
prerelease: false
|
77
|
-
type: :development
|
78
94
|
- !ruby/object:Gem::Dependency
|
79
95
|
name: simplecov
|
80
|
-
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
81
98
|
requirements:
|
82
99
|
- - ~>
|
83
100
|
- !ruby/object:Gem::Version
|
84
101
|
version: 0.6.4
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
85
105
|
none: false
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
106
|
requirements:
|
88
107
|
- - ~>
|
89
108
|
- !ruby/object:Gem::Version
|
90
109
|
version: 0.6.4
|
91
|
-
none: false
|
92
|
-
prerelease: false
|
93
|
-
type: :development
|
94
110
|
description: Send files to s3itch from the command line
|
95
111
|
email:
|
96
112
|
- me@matiaskorhonen.fi
|
@@ -102,6 +118,7 @@ files:
|
|
102
118
|
- .gitignore
|
103
119
|
- .rspec
|
104
120
|
- .travis.yml
|
121
|
+
- CHANGELOG.md
|
105
122
|
- CONTRIBUTING.md
|
106
123
|
- Gemfile
|
107
124
|
- LICENSE.txt
|
@@ -117,36 +134,35 @@ files:
|
|
117
134
|
- spec/support/kitten.jpeg
|
118
135
|
homepage: https://github.com/k33l0r/s3itch_client
|
119
136
|
licenses: []
|
120
|
-
post_install_message:
|
137
|
+
post_install_message:
|
121
138
|
rdoc_options: []
|
122
139
|
require_paths:
|
123
140
|
- lib
|
124
141
|
required_ruby_version: !ruby/object:Gem::Requirement
|
142
|
+
none: false
|
125
143
|
requirements:
|
126
144
|
- - ! '>='
|
127
145
|
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
128
147
|
segments:
|
129
148
|
- 0
|
130
|
-
|
131
|
-
hash: 2
|
132
|
-
none: false
|
149
|
+
hash: 3180291602005236204
|
133
150
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
151
|
+
none: false
|
134
152
|
requirements:
|
135
153
|
- - ! '>='
|
136
154
|
- !ruby/object:Gem::Version
|
155
|
+
version: '0'
|
137
156
|
segments:
|
138
157
|
- 0
|
139
|
-
|
140
|
-
hash: 2
|
141
|
-
none: false
|
158
|
+
hash: 3180291602005236204
|
142
159
|
requirements: []
|
143
|
-
rubyforge_project:
|
160
|
+
rubyforge_project:
|
144
161
|
rubygems_version: 1.8.24
|
145
|
-
signing_key:
|
162
|
+
signing_key:
|
146
163
|
specification_version: 3
|
147
164
|
summary: Upload files to S3 via your own s3itch instance
|
148
165
|
test_files:
|
149
166
|
- spec/s3itch_client_spec.rb
|
150
167
|
- spec/spec_helper.rb
|
151
168
|
- spec/support/kitten.jpeg
|
152
|
-
...
|