{"action":"opened","issue":{"url":"https://api.github.com/repos/abseil/abseil-cpp/issues/188","repository_url":"https://api.github.com/repos/abseil/abseil-cpp","labels_url":"https://api.github.com/repos/abseil/abseil-cpp/issues/188/labels{/name}","comments_url":"https://api.github.com/repos/abseil/abseil-cpp/issues/188/comments","events_url":"https://api.github.com/repos/abseil/abseil-cpp/issues/188/events","html_url":"https://github.com/abseil/abseil-cpp/issues/188","id":369714470,"node_id":"MDU6SXNzdWUzNjk3MTQ0NzA=","number":188,"title":"Expose custom Base64 encoding/decoding functions.","user":{"login":"Alfus","id":4567082,"node_id":"MDQ6VXNlcjQ1NjcwODI=","avatar_url":"https://avatars3.githubusercontent.com/u/4567082?v=4","gravatar_id":"","url":"https://api.github.com/users/Alfus","html_url":"https://github.com/Alfus","followers_url":"https://api.github.com/users/Alfus/followers","following_url":"https://api.github.com/users/Alfus/following{/other_user}","gists_url":"https://api.github.com/users/Alfus/gists{/gist_id}","starred_url":"https://api.github.com/users/Alfus/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Alfus/subscriptions","organizations_url":"https://api.github.com/users/Alfus/orgs","repos_url":"https://api.github.com/users/Alfus/repos","events_url":"https://api.github.com/users/Alfus/events{/privacy}","received_events_url":"https://api.github.com/users/Alfus/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":0,"created_at":"2018-10-12T21:20:39Z","updated_at":"2018-10-12T21:20:39Z","closed_at":null,"author_association":"NONE","body":"It would be great to have support for custom base64 functions (similar to Base64UnescapeInternal and Base64EscapeInternal functions in absl/strings/escaping.cc), so that custom Base64 alphabets can be supported.\r\n\r\nI have a use case where I need to convert binary (leveldb) keys to something that works well with Google Cloud Datastore/Firestore and GCS. where the resulting string meets the following requirements:\r\n - All characters sort after `/`, so \"paths\" are sorted correctly.\r\n - All characters are can be used in URI paths, i.e. must be a 'safe', un-encoded pchar from rfc3986,\r\n specifically one of `[0-9a-zA-Z-._!$&'()*+,;=@:]`.\r\n - Must not conflict with google api specs (so not `:`).\r\n\r\nThis leaves `[0-9a-zA-Z;=@_]` as options, from which I chose `[0-9a-zA-Z@_]` (sorted by ASCII value of course)."}}
{"actor":{"display_login":"Alfus"}}