This implements option 2 from Rick's document about shortening query params (gzipping then base58 encoding filter configs serialized to a transit string -- base58 because it's URL friendly by default to avoid an extra step of having to handle non-URL friendly chars, transit because it can preserve clojure data structures and types). Ultimately we might switch to whatever gets implemented in muttnik (currently being discussed/implemented here), but for now this is a self-contained option (i.e. doesn't require any extra ops or maintaining indexes etc) that at least buys us a non-trivial amount of extra space (~15x or so for most filter configurations). Fixes #75.
This implements option 2 from Rick's document about shortening query params (gzipping then base58 encoding filter configs serialized to a transit string -- base58 because it's URL friendly by default to avoid an extra step of having to handle non-URL friendly chars, transit because it can preserve clojure data structures and types). Ultimately we might switch to whatever gets implemented in muttnik (currently being discussed/implemented here), but for now this is a self-contained option (i.e. doesn't require any extra ops or maintaining indexes etc) that at least buys us a non-trivial amount of extra space (~15x or so for most filter configurations). Fixes #75.