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`)