{"action":"created","issue":{"url":"https://api.github.com/repos/aspnet/Common/issues/93","repository_url":"https://api.github.com/repos/aspnet/Common","labels_url":"https://api.github.com/repos/aspnet/Common/issues/93/labels{/name}","comments_url":"https://api.github.com/repos/aspnet/Common/issues/93/comments","events_url":"https://api.github.com/repos/aspnet/Common/issues/93/events","html_url":"https://github.com/aspnet/Common/issues/93","id":134455517,"number":93,"title":"Remove duplicated `WebEncoders` class","user":{"login":"dougbu","id":6431421,"avatar_url":"https://avatars.githubusercontent.com/u/6431421?v=3","gravatar_id":"","url":"https://api.github.com/users/dougbu","html_url":"https://github.com/dougbu","followers_url":"https://api.github.com/users/dougbu/followers","following_url":"https://api.github.com/users/dougbu/following{/other_user}","gists_url":"https://api.github.com/users/dougbu/gists{/gist_id}","starred_url":"https://api.github.com/users/dougbu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dougbu/subscriptions","organizations_url":"https://api.github.com/users/dougbu/orgs","repos_url":"https://api.github.com/users/dougbu/repos","events_url":"https://api.github.com/users/dougbu/events{/privacy}","received_events_url":"https://api.github.com/users/dougbu/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/aspnet/Common/labels/1%20-%20Ready","name":"1 - Ready","color":"CCCCCC"},{"url":"https://api.github.com/repos/aspnet/Common/labels/task","name":"task","color":"0052cc"}],"state":"open","locked":false,"assignee":{"login":"dougbu","id":6431421,"avatar_url":"https://avatars.githubusercontent.com/u/6431421?v=3","gravatar_id":"","url":"https://api.github.com/users/dougbu","html_url":"https://github.com/dougbu","followers_url":"https://api.github.com/users/dougbu/followers","following_url":"https://api.github.com/users/dougbu/following{/other_user}","gists_url":"https://api.github.com/users/dougbu/gists{/gist_id}","starred_url":"https://api.github.com/users/dougbu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dougbu/subscriptions","organizations_url":"https://api.github.com/users/dougbu/orgs","repos_url":"https://api.github.com/users/dougbu/repos","events_url":"https://api.github.com/users/dougbu/events{/privacy}","received_events_url":"https://api.github.com/users/dougbu/received_events","type":"User","site_admin":false},"milestone":{"url":"https://api.github.com/repos/aspnet/Common/milestones/9","html_url":"https://github.com/aspnet/Common/milestones/1.0.0","labels_url":"https://api.github.com/repos/aspnet/Common/milestones/9/labels","id":1679187,"number":9,"title":"1.0.0","description":null,"creator":{"login":"Eilon","id":202643,"avatar_url":"https://avatars.githubusercontent.com/u/202643?v=3","gravatar_id":"","url":"https://api.github.com/users/Eilon","html_url":"https://github.com/Eilon","followers_url":"https://api.github.com/users/Eilon/followers","following_url":"https://api.github.com/users/Eilon/following{/other_user}","gists_url":"https://api.github.com/users/Eilon/gists{/gist_id}","starred_url":"https://api.github.com/users/Eilon/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Eilon/subscriptions","organizations_url":"https://api.github.com/users/Eilon/orgs","repos_url":"https://api.github.com/users/Eilon/repos","events_url":"https://api.github.com/users/Eilon/events{/privacy}","received_events_url":"https://api.github.com/users/Eilon/received_events","type":"User","site_admin":false},"open_issues":2,"closed_issues":1,"state":"open","created_at":"2016-04-02T05:03:39Z","updated_at":"2016-05-22T22:04:05Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2016-02-18T01:40:10Z","updated_at":"2016-05-26T04:09:14Z","closed_at":null,"body":"A big chunk of `Microsoft.AspNetCore.WebUtilities.WebEncoders` (for base64url-encoding and -decoding) is duplicated in `Microsoft.AspNetCore.DataProtection.WebEncoders`. With aspnet/HttpAbstractions#563, these classes are getting less aligned and DataProtection can't take advantage of the expanded API.\r\n\r\nAfter a few offline discussions, have two ways to remove this wart:\r\n\r\n1. Move `WebEncoders` from HttpAbstractions to Common\r\n - `#if` the code such that it is placed in `Microsoft.AspNetCore.DataProtection.Internal` or `Microsoft.AspNetCore.WebUtilities`, depending on a flag.\r\n    - In the DataProtection version, could make the class `internal` and leave it in `Microsoft.AspNetCore.DataProtection` if anyone feels strongly.\r\n - Use the new Common version in both DataProtection and HttpAbstractions (where it remains publicly exposed).\r\n - Leave Antiforgery and MVC alone; they will continue to rely on the `public` class in HttpAbstractions.\r\n2. Reuse the approach we took for `ActivatorUtilities` and place `WebEncoders` as an `internal` class in `Microsoft.Extensions.Internal` then expose it through a facade in HttpAbstractions. That avoids the oddity of a `public` class in a `Blah.Blah.Blah.Sources` package and makes the moved class more consistent w/ others in Common. But it involves more ceremony."},"comment":{"url":"https://api.github.com/repos/aspnet/Common/issues/comments/221772728","html_url":"https://github.com/aspnet/Common/issues/93#issuecomment-221772728","issue_url":"https://api.github.com/repos/aspnet/Common/issues/93","id":221772728,"user":{"login":"dougbu","id":6431421,"avatar_url":"https://avatars.githubusercontent.com/u/6431421?v=3","gravatar_id":"","url":"https://api.github.com/users/dougbu","html_url":"https://github.com/dougbu","followers_url":"https://api.github.com/users/dougbu/followers","following_url":"https://api.github.com/users/dougbu/following{/other_user}","gists_url":"https://api.github.com/users/dougbu/gists{/gist_id}","starred_url":"https://api.github.com/users/dougbu/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dougbu/subscriptions","organizations_url":"https://api.github.com/users/dougbu/orgs","repos_url":"https://api.github.com/users/dougbu/repos","events_url":"https://api.github.com/users/dougbu/events{/privacy}","received_events_url":"https://api.github.com/users/dougbu/received_events","type":"User","site_admin":false},"created_at":"2016-05-26T04:09:14Z","updated_at":"2016-05-26T04:09:14Z","body":"/cc @Eilon @danroth27 "}}
{"actor":{"display_login":"dougbu"}}