jiffy_bag 1.0.0 → 1.0.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1d88b1fdc8c138de155d7fecad20d87ca467e29d
4
- data.tar.gz: 88d808e95333162bfc3c6523b261be5f8c68e9d1
3
+ metadata.gz: 1796e1b602f7071931335317ed742cfc9cccdd04
4
+ data.tar.gz: 50816d1a785efbfbeb820c2cdc8846b286c89b39
5
5
  SHA512:
6
- metadata.gz: 3f5a50de1459c9008d7fd120ec7363f5947f6894a3af3ad574c59319c4dcbbe54a0558215379c34f936dea92c82c5488cce8cf59bb12182c9b882b98612e4c7d
7
- data.tar.gz: '08dc85d6138c8d5ce172e6810a6f5fa857c4da2d60d3ff2c043cea8f9d52874d15fed2fd2fc6d81276beb2e52ab5ff1bd2eacccc6ae716fc2713b2583831cec5'
6
+ metadata.gz: 484e98c0c713a6a6bb6c57380cb8c3e3235d782e3f67025d0e0fa03947e7157a7d7872589fe2ce70e64eb2b9b1ea04b467577f3fe2258266753633f53f81faee
7
+ data.tar.gz: 0ec408633ee77f47680c9b23b3c47482cc5550dae68ec2580b9f2f36a9446c4b96cf83479f96f70890c9a6cb09df3077ce69c8d38dbec0d8753c79ae77b4d80d
data/README.md CHANGED
@@ -19,7 +19,7 @@ Or install it yourself as:
19
19
  $ gem install jiffy_bag
20
20
 
21
21
  ## Usage
22
- Either include or extend JiffyBag in your class depending on whether you want Instance or Class methods. The you get 6 simple methods;
22
+ Either include or extend JiffyBag in your class depending on whether you want Instance or Class methods. The you get 7 simple methods;
23
23
 
24
24
  JiffyBag.serialize(payload)
25
25
  Takes an object and serializes it to YAML.
@@ -42,7 +42,7 @@ Either include or extend JiffyBag in your class depending on whether you want In
42
42
  JiffyBag.decode_as_struct(payload)
43
43
  Decodes the Base64 payload, unzips it and de-serializes the YAML and if it contains a Hash it instantiates an anonymous Struct from it. This is
44
44
 
45
- for the most part the you really only need encode_payload
45
+ for the most part the you really only need JiffyBag.encode
46
46
 
47
47
  payload = JiffyBag.encode(my: 'cheeky', payload: 'in a nice little package')
48
48
 
@@ -9,19 +9,11 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["James McCarthy"]
10
10
  spec.email = ["james2mccarthy@gmail.com"]
11
11
 
12
- spec.summary = %q{Package up structs into neat little packages for sending between services.}
13
- spec.description = %q{Takes a hash and zips it up into a portable struct to send between services.}
12
+ spec.summary = %q{Package up Ruby objects into neat little packages for sending between services.}
13
+ spec.description = %q{Takes an object zips it up into a serialized, zipped, Base64 encoded string to send between services.}
14
14
  spec.homepage = 'http://github.com/james2m/jiffy_bag'
15
15
  spec.license = 'MIT'
16
16
 
17
- # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
- # to allow pushing to a single host or delete this section to allow pushing to any host.
19
- # if spec.respond_to?(:metadata)
20
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
- # else
22
- # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
- # end
24
-
25
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
18
  spec.bindir = "exe"
27
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -3,31 +3,98 @@ require 'yaml'
3
3
  require 'zlib'
4
4
  require "jiffy_bag/version"
5
5
 
6
+ # == JiffyBag
7
+ # Lets you serialize, zip and encode small Ruby objects for sending between services. The content is not
8
+ # encrypted so this is best used for internal app communication between peer services. e.g. over Sidekiq
9
+ # or using a private API.
10
+ #
11
+ # === Example
12
+ # You will usually only need JiffyBag.encode and JiffyBag.decode. To send package up a Hash to send to
13
+ # another service.
14
+ #
15
+ # payload = JiffyBag.encode(my: 'cheeky', payload: 'in a nice little package')
16
+ #
17
+ # => "eJzT1dVVUCwqTarULy4pKk0u4cqttFJIzkhNza7kKkiszMlPTLFSyMxTSFTI\ny0xOVShOTEtVKEhMzk5MT+UCAF+4FDw=\n"
18
+ #
19
+ # Do whatever you got to do get it to the other end and decode it thus;
20
+ #
21
+ # hash = JiffyBag.decode(payload)
22
+ #
23
+ # => {my: 'cheeky', payload: 'in a nice little package'}
24
+ #
25
+ # struct = JiffyBag.decode_as_struct(payload)
26
+ #
27
+ # => #<struct my="cheeky", payload="in a nice littke package">
28
+ #
6
29
  module JiffyBag
30
+ # Serialize, Zip and Base64 encode a payload.
31
+ #
32
+ # ==== Parameters
33
+ #
34
+ # * +payload+ The object you want to send. This is
35
+ # any object that can be serialized with YAML.dump.
7
36
  def self.encode(payload)
8
37
  Base64.encode64 deflate(payload)
9
38
  end
10
39
 
40
+ # Serialize and Zip a payload.
41
+ #
42
+ # ==== Parameters
43
+ #
44
+ # * +payload+ The object you want to send. This is any object that can be
45
+ # serialized with YAML.dump.
11
46
  def self.deflate(payload)
12
47
  Zlib::Deflate.deflate serialize(payload)
13
48
  end
14
49
 
50
+ # Serialize a payload.
51
+ #
52
+ # ==== Parameters
53
+ #
54
+ # * +payload+ The object you want to send. This is
55
+ # any object that can be serialized with YAML.dump.
15
56
  def self.serialize(payload)
16
57
  YAML.dump(payload)
17
58
  end
18
59
 
60
+ # De-serialize a payload. The opposite of JiffyBag.serialize.
61
+ #
62
+ # ==== Parameters
63
+ #
64
+ # * +payload+ The received payload you want to de-serialize.
65
+ # This can any string returned from YAML.dump.
19
66
  def self.deserialize(payload)
20
67
  YAML.load(payload)
21
68
  end
22
69
 
70
+ # De-serialize and unzip a payload. The opposite of JiffyBag.deflate.
71
+ #
72
+ # ==== Parameters
73
+ #
74
+ # * +payload+ The received payload you want to de-serialize and unzip.
23
75
  def self.inflate(payload)
24
76
  deserialize Zlib::Inflate.inflate(payload)
25
77
  end
26
78
 
79
+ # De-serialize and unzip and decode a Base64 encoded payload. The opposite
80
+ # of JiffyBag.encode.
81
+ #
82
+ # ==== Parameters
83
+ #
84
+ # * +payload+ The received payload you want to de-serialize, unzip and decode.
27
85
  def self.decode(payload)
28
86
  inflate Base64.decode64(payload)
29
87
  end
30
88
 
89
+ # De-serialize and unzip and decode a Base64 encoded payload into an anonymous
90
+ # Struct. This is a convenience method for sending a Hash and re-building it
91
+ # into a Struct. Nested Hashes are not returned as Structs.
92
+ #
93
+ # ==== Parameters
94
+ #
95
+ # * +payload+ The received payload you want to de-serialize, unzip and decode.
96
+ # The original JiffyBag.encoded object needs to be a Hash for a Struct to be
97
+ # returned, any other class of object will be treated like JiffyBag.decode.
31
98
  def self.decode_as_struct(payload)
32
99
  object = decode(payload)
33
100
  return object unless object.is_a?(Hash)
@@ -1,3 +1,3 @@
1
1
  module JiffyBag
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jiffy_bag
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James McCarthy
@@ -52,7 +52,8 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.0'
55
- description: Takes a hash and zips it up into a portable struct to send between services.
55
+ description: Takes an object zips it up into a serialized, zipped, Base64 encoded
56
+ string to send between services.
56
57
  email:
57
58
  - james2mccarthy@gmail.com
58
59
  executables: []
@@ -94,5 +95,5 @@ rubyforge_project:
94
95
  rubygems_version: 2.6.10
95
96
  signing_key:
96
97
  specification_version: 4
97
- summary: Package up structs into neat little packages for sending between services.
98
+ summary: Package up Ruby objects into neat little packages for sending between services.
98
99
  test_files: []