coder_decorator 1.1.0 → 1.1.1

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +97 -0
  3. metadata +8 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a423e4cf25574fb8fc664fb87cfd4aeb6141db36
4
- data.tar.gz: a7a5deaa59f369953372cc6503fb4ad2d0123a76
3
+ metadata.gz: a0565842f5d3c837685232a7b349511616ad779b
4
+ data.tar.gz: 9e87db8f9dc04ad0795ab0daaf1741e01ba34603
5
5
  SHA512:
6
- metadata.gz: 7cea41ab6d8ce21c5e5ae102a840bc6322aedc8c9ebff76eeb7fbb0797c2a9c5282628cc3fa4af48ebcb7a12bca71a8d8e56739bc545848eeb0abf143c463a3c
7
- data.tar.gz: 4e9a7ced2ee8742b3111a6ace93c60fdb8db2ad5bbab87c466b4ad1f289880223e18418208f1d639822d6f40777c1d3612011ff1536eec33f4a1b12d53656a56
6
+ metadata.gz: 193e8eaff80c90c4db9633149461399f8782f0c7538fe3f5154e9ea23f9a543835b76c5e637950b45606dce99961e35bc758804b33e57eadbfb7a4d046060ea2
7
+ data.tar.gz: 18e1e8afd7ba035dced6c5fc76f1f4c261110520a757333e493d616504b78666e84cebe1256658b106094d3fa3d74f726565dc93e464c4e088fad55b92514edc
data/README.md ADDED
@@ -0,0 +1,97 @@
1
+ # CoderDecorator [![Build Status](https://travis-ci.org/tonytonyjan/coder_decorator.svg?branch=master)](https://travis-ci.org/tonytonyjan/coder_decorator) [![Yard Docs](https://img.shields.io/badge/yard-doc-blue.svg)](http://www.rubydoc.info/gems/coder_decorator/)
2
+
3
+ It's a encoding/decoding library for Ruby designed with [decorator pattern](https://en.wikipedia.org/wiki/Decorator_pattern), which makes it more flexible, and can be wrapped infinitely using Ruby instantiation.
4
+
5
+ This gem can refers to [this pull request](https://github.com/rack/rack/pull/1134).
6
+
7
+ # Install
8
+
9
+ ```
10
+ gem install 'coder_decorator'
11
+ ```
12
+
13
+ # Usage
14
+
15
+ Encode data with Marshal and Base64:
16
+
17
+ ```ruby
18
+ require 'coder_decorator/coders/base64'
19
+ require 'coder_decorator/coders/marshal'
20
+ include CoderDecorator
21
+ coder = Coders::Base64.new(Coders::Marshal.new)
22
+ encoded_data = coder.encode(data)
23
+ coder.decode(encoded_data)
24
+ ```
25
+
26
+ Encode data with JSON and Zip:
27
+
28
+ ```ruby
29
+ require 'coder_decorator/coders/json'
30
+ require 'coder_decorator/coders/zip'
31
+ include CoderDecorator
32
+ coder = Coders::Zip.new(Coders::JSON.new)
33
+ encoded_data = coder.encode(data)
34
+ coder.decode(encoded_data)
35
+ ```
36
+
37
+ To load all coders and utilities, simply do:
38
+
39
+ ```ruby
40
+ require 'coder_decorator'
41
+ ```
42
+
43
+ All built-in coders are listed in [lib/coder_decorator/coders](lib/coder_decorator/coders).
44
+
45
+ ## Use `CoderDecorator::Builder` to construct coders
46
+
47
+ `CoderDecorator::Builder` provides a convenient interface to build a coder by passing arguments instead of tediously initializing and wrapping coders, for example:
48
+
49
+ ```ruby
50
+ require 'coder_decorator/builder'
51
+ CoderDecorator::Builder.build(:marshal, :base64)
52
+ ```
53
+
54
+ is equivalent to:
55
+
56
+ ```ruby
57
+ require 'coder_decorator/coders/marshal'
58
+ require 'coder_decorator/coders/base64'
59
+ CoderDecorator::Coders::Marshal.new(CoderDecorator::Coders::Base64.new)
60
+ ```
61
+
62
+ Use array to pass arguments to the coder:
63
+
64
+ ```ruby
65
+ CoderDecorator::Builder.build(:marshal, [:base64, {strict: true}])
66
+ ```
67
+
68
+ Use `CoderDecorator.coder_names` to see all available coder names.
69
+
70
+ ## Integration with Rack
71
+
72
+ ```ruby
73
+ require 'rack'
74
+ require 'coder_decorator/builder'
75
+
76
+ include CoderDecorator
77
+
78
+ app = lambda do |env|
79
+ session = env['rack.session']
80
+ session[:count] ||= 0
81
+ session[:count] += 1
82
+ [200, {}, [session[:count].to_s]]
83
+ end
84
+
85
+ coder = CoderDecorator::Builder.build(
86
+ :marshal,
87
+ [:cipher, {secret: 'x' * 32}],
88
+ [:hmac, {secret: 'y' * 32}],
89
+ :rescue
90
+ )
91
+
92
+ app = Rack::Builder.app(app) do
93
+ use Rack::Session::Cookie, coder: coder, let_coder_handle_secure_encoding: true
94
+ end
95
+
96
+ Rack::Handler::WEBrick.run app
97
+ ```
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: coder_decorator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jian Weihang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-10 00:00:00.000000000 Z
11
+ date: 2017-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -16,28 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 5.10.1
19
+ version: '5.10'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 5.10.1
26
+ version: '5.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 12.0.0
33
+ version: '12.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 12.0.0
40
+ version: '12.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rubocop
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -58,6 +58,7 @@ executables: []
58
58
  extensions: []
59
59
  extra_rdoc_files: []
60
60
  files:
61
+ - README.md
61
62
  - lib/coder_decorator.rb
62
63
  - lib/coder_decorator/builder.rb
63
64
  - lib/coder_decorator/coders/base64.rb
@@ -71,7 +72,7 @@ files:
71
72
  - lib/coder_decorator/coders/zip.rb
72
73
  - lib/coder_decorator/errors.rb
73
74
  - lib/coder_decorator/name_converter.rb
74
- homepage:
75
+ homepage: https://github.com/tonytonyjan/coder_decorator
75
76
  licenses:
76
77
  - MIT
77
78
  metadata: {}