README.md in refcode-0.0.1 vs README.md in refcode-0.1.0
- old
+ new
@@ -3,11 +3,13 @@
Currently a standalone gem for converting arbitrary Ruby objects into encrypted,
URL-safe strings. The strings can be simply decrypted later to be used by your
application.
Refcode was conceived as a way to attach referral data to tracking links. Encryption
-makes it unlikely that the links can be tampered with.
+makes it unlikely that the links will be tampered with. Still, it is not recommended
+for critically sensitive applications! It was designed to power a simple referral
+link tracking system.
## Implementation
- **Encryption** using the AES-256-CBC algorithm with https://github.com/attr-encrypted/encryptor which wraps the Ruby OpenSSL library.
@@ -29,21 +31,44 @@
$ gem install refcode
## Usage
+Refcode can be used in two ways. Most simply, you can use the `Refcode::Encoder` class directly.
+
encoder = Refcode::Encoder.new do |e|
e.secret = "a long crunchy secret"
e.salt = "some salt"
end
something = OpenStruct.new(channel: 'facebook', action: 'message', user_id: 43765)
encoded_param = encoder.encode something
- # in some future request...
+ # in some future request:
something = encoder.decode params[:encoded_param]
puts something.channel # 'facebook'
+
+For added convenience when using Refcode with an ORM such as ActiveRecord, a module called `Refcode::Encodable` is also provided.
+
+ class Job < ActiveRecord::Base
+ include Refcode::Encodable
+ has_refcode secret: 'a long crunchy secret', salt: :id
+ end
+
+ # the salt option of the has_refcode method can accept a proc/lambda, string
+ # or a symbol representing an existing method on the class (id in this case)
+
+ # in some controller code:
+
+ @job = Job.find params[:id]
+ referral_code = @job.generate_refcode channel: 'facebook', action: 'message', user_id: 43765
+
+ # and in another action:
+
+ @job = Job.find params[:id]
+ referral_data = @job.parse_refcode params[:encoded_param]
+
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)