kanoko 0.0.3 → 0.0.4
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 +49 -0
- data/lib/kanoko.rb +5 -15
- data/lib/kanoko/application/convert.rb +1 -1
- data/lib/kanoko/configure.rb +1 -27
- data/lib/kanoko/version.rb +1 -1
- data/test/test_configure.rb +0 -13
- data/test/test_kanoko.rb +3 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 174aaa5dc844a02ce0fe1bc7d99aabddffbc8db5
|
4
|
+
data.tar.gz: b78fe145753b4104900984eccc76d7259da3922e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d980fb390493a82e79718a41054486272b9e0390bf6a963e877c4fbe92aada2fd197d3f74045cd80d5a6352383f94109db67d328c53a8f15f49ffdc5dbbbdc8
|
7
|
+
data.tar.gz: ae4bc45b643ae3f19233377b242c497bfa7bd27366f2fcb2ecf3b4319809a20ff24aa21605336271404b2f1b399ef1bfb468a0748258e9b5b720ac4b2800489d
|
data/README.md
CHANGED
@@ -2,3 +2,52 @@ kanoko
|
|
2
2
|
===
|
3
3
|
|
4
4
|
[](https://travis-ci.org/spice-life/kanoko)
|
5
|
+
|
6
|
+
**kanoko** is an active image generate application.
|
7
|
+
|
8
|
+
# Quick Start
|
9
|
+
|
10
|
+
```
|
11
|
+
require 'kanoko/application/convert'
|
12
|
+
|
13
|
+
class MyApp < Kanoko::Application::Convert
|
14
|
+
end
|
15
|
+
|
16
|
+
run MyApp
|
17
|
+
```
|
18
|
+
|
19
|
+
```
|
20
|
+
$ KANOKO_DIGEST_FUNC=sha1 KANOKO_SECRET_KEY=devkey unicorn --config-file config/unicorn/development.rb
|
21
|
+
```
|
22
|
+
|
23
|
+
# Arguments
|
24
|
+
|
25
|
+
**http://{{kanoko.host}}/:hash/:func/:args/:path**
|
26
|
+
|
27
|
+
- **hash:** params signature (see also **Signature**)
|
28
|
+
- **func:** a function name of image processing (e.g. fit)
|
29
|
+
- **args:** image processing arguments (e.g. "100x100")
|
30
|
+
- **path:** Target image path without scheme (e.g. "host/path/to/image?params\_a=value\_a")
|
31
|
+
|
32
|
+
# Signature
|
33
|
+
|
34
|
+
**hash** is changeable.
|
35
|
+
|
36
|
+
By default, see `Kanoko::Configure#initialize`.
|
37
|
+
|
38
|
+
On application, It must be set **hash** same way as this.
|
39
|
+
|
40
|
+
If hash not match, application should be return *400 Bad Request*.
|
41
|
+
|
42
|
+
This function behavior can change by Kanoko.configure.
|
43
|
+
|
44
|
+
```ruby
|
45
|
+
Kanoko.configure.hash_proc = ->{
|
46
|
+
"some_hash_value_on_url"
|
47
|
+
}
|
48
|
+
```
|
49
|
+
|
50
|
+
# TODO
|
51
|
+
|
52
|
+
- To be able to change digest_func and secret_key on graceful restart
|
53
|
+
- More fast
|
data/lib/kanoko.rb
CHANGED
@@ -3,7 +3,7 @@ require 'kanoko/configure'
|
|
3
3
|
|
4
4
|
module Kanoko
|
5
5
|
# example:
|
6
|
-
# Kanoko.configure.
|
6
|
+
# Kanoko.configure.digest_func = "sha1"
|
7
7
|
# p Kanoko.configure #=> #<Kanoko::Configure ...>
|
8
8
|
def configure
|
9
9
|
@configure ||= Configure.new
|
@@ -19,24 +19,14 @@ module Kanoko
|
|
19
19
|
@configure = value
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
23
|
-
|
24
|
-
|
25
|
-
end
|
26
|
-
"#{configure.kanoko_host}#{make_path(func, args, src)}"
|
22
|
+
def path_for(func, args, src)
|
23
|
+
hash = make_hash(func, args, src)
|
24
|
+
"/#{hash}/#{[func, args].map{|i| URI.encode_www_form_component(i)}.join('/')}/#{src}"
|
27
25
|
end
|
28
|
-
module_function :
|
26
|
+
module_function :path_for
|
29
27
|
|
30
28
|
def make_hash(*args)
|
31
29
|
configure.hash_proc.call(*args)
|
32
30
|
end
|
33
31
|
module_function :make_hash
|
34
|
-
|
35
|
-
private
|
36
|
-
|
37
|
-
def make_path(func, args, src)
|
38
|
-
hash = make_hash(func, args, src)
|
39
|
-
"/#{hash}/#{[func, args].map{|i| URI.encode_www_form_component(i)}.join('/')}/#{src}"
|
40
|
-
end
|
41
|
-
module_function :make_path
|
42
32
|
end
|
@@ -3,7 +3,7 @@ require 'net/http'
|
|
3
3
|
require 'tempfile'
|
4
4
|
require 'kanoko'
|
5
5
|
|
6
|
-
# This is
|
6
|
+
# This is an experimental implementation.
|
7
7
|
# You can set configure and other.
|
8
8
|
# This application receve url make by Kanoko.url_for().
|
9
9
|
# You can choice function that image processing.
|
data/lib/kanoko/configure.rb
CHANGED
@@ -6,20 +6,17 @@ module Kanoko
|
|
6
6
|
class Configure
|
7
7
|
attr_accessor :digest_func, :secret_key, :hash_proc
|
8
8
|
|
9
|
-
# kanoko_host expect String
|
10
9
|
# digest_func expect String
|
11
10
|
# secret_key expect String
|
12
11
|
# hash_proc expect Proc
|
13
12
|
#
|
14
13
|
# example:
|
15
14
|
# Kanoko.configure do |c|
|
16
|
-
# c.kanoko_host = "http://example.com"
|
17
15
|
# c.digest_func = "sha1"
|
18
16
|
# c.secret_key = "secret"
|
19
17
|
# end
|
20
|
-
# Kanoko.
|
18
|
+
# Kanoko.path_for(:resize, "100x100") #=> "/hashing_value/resize/100x100"
|
21
19
|
def initialize
|
22
|
-
@kanoko_host = nil
|
23
20
|
@digest_func = ENV['KANOKO_DIGEST_FUNC']
|
24
21
|
@secret_key = ENV['KANOKO_SECRET_KEY']
|
25
22
|
@hash_proc = ->(*args){
|
@@ -33,28 +30,5 @@ module Kanoko
|
|
33
30
|
)
|
34
31
|
}
|
35
32
|
end
|
36
|
-
|
37
|
-
def kanoko_host=(host)
|
38
|
-
@kanoko_host = normalize_url(host)
|
39
|
-
end
|
40
|
-
|
41
|
-
def kanoko_host
|
42
|
-
@kanoko_host
|
43
|
-
end
|
44
|
-
|
45
|
-
private
|
46
|
-
|
47
|
-
def normalize_url(host)
|
48
|
-
case host
|
49
|
-
when %r{\Ahttps?://}
|
50
|
-
host
|
51
|
-
when %r{\A[^/]}
|
52
|
-
"http://#{host}"
|
53
|
-
when %r{\A//}
|
54
|
-
"http:#{host}"
|
55
|
-
else
|
56
|
-
fail ConfigureError, "invalid kanoko_host `#{host}'"
|
57
|
-
end
|
58
|
-
end
|
59
33
|
end
|
60
34
|
end
|
data/lib/kanoko/version.rb
CHANGED
data/test/test_configure.rb
CHANGED
@@ -6,19 +6,6 @@ class TestKanokoConfigure < Minitest::Test
|
|
6
6
|
@config = Kanoko::Configure.new
|
7
7
|
end
|
8
8
|
|
9
|
-
def test_kanoko_host
|
10
|
-
assert_raises(Kanoko::ConfigureError) { @config.kanoko_host = "/example.com" }
|
11
|
-
|
12
|
-
@config.kanoko_host = "example.com"
|
13
|
-
assert_equal "http://example.com", @config.kanoko_host
|
14
|
-
|
15
|
-
@config.kanoko_host = "http://example.com"
|
16
|
-
assert_equal "http://example.com", @config.kanoko_host
|
17
|
-
|
18
|
-
@config.kanoko_host = "https://example.com"
|
19
|
-
assert_equal "https://example.com", @config.kanoko_host
|
20
|
-
end
|
21
|
-
|
22
9
|
def test_hash_proc_by_default_error
|
23
10
|
@config.digest_func = nil
|
24
11
|
@config.secret_key = nil
|
data/test/test_kanoko.rb
CHANGED
@@ -5,7 +5,6 @@ class TestKanoko < Minitest::Test
|
|
5
5
|
def setup
|
6
6
|
Kanoko.configure.digest_func = "sha1"
|
7
7
|
Kanoko.configure.secret_key = "test"
|
8
|
-
Kanoko.configure.kanoko_host = "http://example.com"
|
9
8
|
end
|
10
9
|
|
11
10
|
def change_hash_proc(hash_proc)
|
@@ -25,10 +24,10 @@ class TestKanoko < Minitest::Test
|
|
25
24
|
assert_equal "ok", Kanoko.configure.digest_func
|
26
25
|
end
|
27
26
|
|
28
|
-
def
|
27
|
+
def test_path_for_with_default_hash_proc
|
29
28
|
change_hash_proc(proc{ "aaa" }) do
|
30
|
-
assert_equal "
|
31
|
-
assert_equal "
|
29
|
+
assert_equal "/aaa/test_func/test_args/test_path", Kanoko.path_for(:test_func, "test_args", "test_path")
|
30
|
+
assert_equal "/aaa/test_func/%2F%3F-_%3D%21%40%23%3C%3E%5C//?-_=!@#<>\\", Kanoko.path_for(:test_func, "/?-_=!@#<>\\", "/?-_=!@#<>\\")
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|