{"action":"created","comment":{"url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/comments/60679785","id":60679785,"diff_hunk":"@@ -207,9 +215,11 @@ private static IEnumerable<Directory> ProcessChunk([NotNull] PngChunk chunk)\n             else if (chunkType == PngChunkType.tEXt)\n             {\n                 var reader = new SequentialByteArrayReader(bytes);\n-                var keyword = reader.GetNullTerminatedString(maxLengthBytes: 79);\n+                var keyword = reader.GetNullTerminatedStringValue(maxLengthBytes: 79).ToString(defaultEncoding);","path":"MetadataExtractor/Formats/Png/PngMetadataReader.cs","position":36,"original_position":36,"commit_id":"7f9f79ef8f1d8fb4e3f891e2848a638a7d866dc9","original_commit_id":"7f9f79ef8f1d8fb4e3f891e2848a638a7d866dc9","user":{"login":"kwhopper","id":16009408,"avatar_url":"https://avatars.githubusercontent.com/u/16009408?v=3","gravatar_id":"","url":"https://api.github.com/users/kwhopper","html_url":"https://github.com/kwhopper","followers_url":"https://api.github.com/users/kwhopper/followers","following_url":"https://api.github.com/users/kwhopper/following{/other_user}","gists_url":"https://api.github.com/users/kwhopper/gists{/gist_id}","starred_url":"https://api.github.com/users/kwhopper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kwhopper/subscriptions","organizations_url":"https://api.github.com/users/kwhopper/orgs","repos_url":"https://api.github.com/users/kwhopper/repos","events_url":"https://api.github.com/users/kwhopper/events{/privacy}","received_events_url":"https://api.github.com/users/kwhopper/received_events","type":"User","site_admin":false},"body":"I went back and forth on this one originally, and agree - it's a toss-up. You could certainly pass it along, but in the end it seemed like the reader should stick to 'reading' and let the user decide later how it should be interpreted explicitly. An overload could accomplish it in the near term; if it was required up-front and the default encoding for that reader always matched, it would seem a little redundant. But again, this feels like a programmer 'taste' issue.","created_at":"2016-04-22T01:22:10Z","updated_at":"2016-04-22T01:22:10Z","html_url":"https://github.com/drewnoakes/metadata-extractor-dotnet/pull/34#discussion_r60679785","pull_request_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34","_links":{"self":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/comments/60679785"},"html":{"href":"https://github.com/drewnoakes/metadata-extractor-dotnet/pull/34#discussion_r60679785"},"pull_request":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34"}}},"pull_request":{"url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34","id":57306916,"html_url":"https://github.com/drewnoakes/metadata-extractor-dotnet/pull/34","diff_url":"https://github.com/drewnoakes/metadata-extractor-dotnet/pull/34.diff","patch_url":"https://github.com/drewnoakes/metadata-extractor-dotnet/pull/34.patch","issue_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/issues/34","number":34,"state":"open","locked":false,"title":"Hold original string byte arrays to allow variable encoding (second try)","user":{"login":"kwhopper","id":16009408,"avatar_url":"https://avatars.githubusercontent.com/u/16009408?v=3","gravatar_id":"","url":"https://api.github.com/users/kwhopper","html_url":"https://github.com/kwhopper","followers_url":"https://api.github.com/users/kwhopper/followers","following_url":"https://api.github.com/users/kwhopper/following{/other_user}","gists_url":"https://api.github.com/users/kwhopper/gists{/gist_id}","starred_url":"https://api.github.com/users/kwhopper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kwhopper/subscriptions","organizations_url":"https://api.github.com/users/kwhopper/orgs","repos_url":"https://api.github.com/users/kwhopper/repos","events_url":"https://api.github.com/users/kwhopper/events{/privacy}","received_events_url":"https://api.github.com/users/kwhopper/received_events","type":"User","site_admin":false},"body":"Replaces part of Issue #31, and some discussion is there. This puts it in another branch for now.\r\n\r\nThis is a work-in-progress to keep byte arrays available for user-defined encoding, like Issue #19. As a bonus, XMP Extract uses the original byte array directly instead of encoding the whole thing first.","created_at":"2016-01-27T02:50:51Z","updated_at":"2016-04-22T01:22:10Z","closed_at":null,"merged_at":null,"merge_commit_sha":"404caede1a7307476dd5c7609958e8099fde8e81","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34/commits","review_comments_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34/comments","review_comment_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/comments{/number}","comments_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/issues/34/comments","statuses_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/statuses/7f9f79ef8f1d8fb4e3f891e2848a638a7d866dc9","head":{"label":"kwhopper:variablestringencoding","ref":"variablestringencoding","sha":"7f9f79ef8f1d8fb4e3f891e2848a638a7d866dc9","user":{"login":"kwhopper","id":16009408,"avatar_url":"https://avatars.githubusercontent.com/u/16009408?v=3","gravatar_id":"","url":"https://api.github.com/users/kwhopper","html_url":"https://github.com/kwhopper","followers_url":"https://api.github.com/users/kwhopper/followers","following_url":"https://api.github.com/users/kwhopper/following{/other_user}","gists_url":"https://api.github.com/users/kwhopper/gists{/gist_id}","starred_url":"https://api.github.com/users/kwhopper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kwhopper/subscriptions","organizations_url":"https://api.github.com/users/kwhopper/orgs","repos_url":"https://api.github.com/users/kwhopper/repos","events_url":"https://api.github.com/users/kwhopper/events{/privacy}","received_events_url":"https://api.github.com/users/kwhopper/received_events","type":"User","site_admin":false},"repo":{"id":50387020,"name":"metadata-extractor-dotnet","full_name":"kwhopper/metadata-extractor-dotnet","owner":{"login":"kwhopper","id":16009408,"avatar_url":"https://avatars.githubusercontent.com/u/16009408?v=3","gravatar_id":"","url":"https://api.github.com/users/kwhopper","html_url":"https://github.com/kwhopper","followers_url":"https://api.github.com/users/kwhopper/followers","following_url":"https://api.github.com/users/kwhopper/following{/other_user}","gists_url":"https://api.github.com/users/kwhopper/gists{/gist_id}","starred_url":"https://api.github.com/users/kwhopper/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kwhopper/subscriptions","organizations_url":"https://api.github.com/users/kwhopper/orgs","repos_url":"https://api.github.com/users/kwhopper/repos","events_url":"https://api.github.com/users/kwhopper/events{/privacy}","received_events_url":"https://api.github.com/users/kwhopper/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/kwhopper/metadata-extractor-dotnet","description":"Extracts Exif, IPTC, XMP, ICC and other metadata from image and video files","fork":true,"url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet","forks_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/forks","keys_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/teams","hooks_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/hooks","issue_events_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/events","assignees_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/tags","blobs_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/languages","stargazers_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/stargazers","contributors_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/contributors","subscribers_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/subscribers","subscription_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/subscription","commits_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/merges","archive_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/downloads","issues_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/kwhopper/metadata-extractor-dotnet/deployments","created_at":"2016-01-25T22:55:56Z","updated_at":"2016-01-25T22:55:57Z","pushed_at":"2016-04-02T20:13:14Z","git_url":"git://github.com/kwhopper/metadata-extractor-dotnet.git","ssh_url":"git@github.com:kwhopper/metadata-extractor-dotnet.git","clone_url":"https://github.com/kwhopper/metadata-extractor-dotnet.git","svn_url":"https://github.com/kwhopper/metadata-extractor-dotnet","homepage":"","size":6410,"stargazers_count":0,"watchers_count":0,"language":"C#","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"drewnoakes:master","ref":"master","sha":"2ddcb5996b36c35f7cd9ab8f39ab9807923c97f5","user":{"login":"drewnoakes","id":350947,"avatar_url":"https://avatars.githubusercontent.com/u/350947?v=3","gravatar_id":"","url":"https://api.github.com/users/drewnoakes","html_url":"https://github.com/drewnoakes","followers_url":"https://api.github.com/users/drewnoakes/followers","following_url":"https://api.github.com/users/drewnoakes/following{/other_user}","gists_url":"https://api.github.com/users/drewnoakes/gists{/gist_id}","starred_url":"https://api.github.com/users/drewnoakes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drewnoakes/subscriptions","organizations_url":"https://api.github.com/users/drewnoakes/orgs","repos_url":"https://api.github.com/users/drewnoakes/repos","events_url":"https://api.github.com/users/drewnoakes/events{/privacy}","received_events_url":"https://api.github.com/users/drewnoakes/received_events","type":"User","site_admin":false},"repo":{"id":37817574,"name":"metadata-extractor-dotnet","full_name":"drewnoakes/metadata-extractor-dotnet","owner":{"login":"drewnoakes","id":350947,"avatar_url":"https://avatars.githubusercontent.com/u/350947?v=3","gravatar_id":"","url":"https://api.github.com/users/drewnoakes","html_url":"https://github.com/drewnoakes","followers_url":"https://api.github.com/users/drewnoakes/followers","following_url":"https://api.github.com/users/drewnoakes/following{/other_user}","gists_url":"https://api.github.com/users/drewnoakes/gists{/gist_id}","starred_url":"https://api.github.com/users/drewnoakes/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/drewnoakes/subscriptions","organizations_url":"https://api.github.com/users/drewnoakes/orgs","repos_url":"https://api.github.com/users/drewnoakes/repos","events_url":"https://api.github.com/users/drewnoakes/events{/privacy}","received_events_url":"https://api.github.com/users/drewnoakes/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/drewnoakes/metadata-extractor-dotnet","description":"Extracts Exif, IPTC, XMP, ICC and other metadata from image and movie files","fork":false,"url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet","forks_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/forks","keys_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/keys{/key_id}","collaborators_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/teams","hooks_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/hooks","issue_events_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/issues/events{/number}","events_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/events","assignees_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/assignees{/user}","branches_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/branches{/branch}","tags_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/tags","blobs_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/git/refs{/sha}","trees_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/git/trees{/sha}","statuses_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/statuses/{sha}","languages_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/languages","stargazers_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/stargazers","contributors_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/contributors","subscribers_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/subscribers","subscription_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/subscription","commits_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/commits{/sha}","git_commits_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/git/commits{/sha}","comments_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/comments{/number}","issue_comment_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/issues/comments{/number}","contents_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/contents/{+path}","compare_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/compare/{base}...{head}","merges_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/merges","archive_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/downloads","issues_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/issues{/number}","pulls_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls{/number}","milestones_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/milestones{/number}","notifications_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/labels{/name}","releases_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/releases{/id}","deployments_url":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/deployments","created_at":"2015-06-21T17:06:56Z","updated_at":"2016-04-12T04:19:34Z","pushed_at":"2016-04-20T22:30:09Z","git_url":"git://github.com/drewnoakes/metadata-extractor-dotnet.git","ssh_url":"git@github.com:drewnoakes/metadata-extractor-dotnet.git","clone_url":"https://github.com/drewnoakes/metadata-extractor-dotnet.git","svn_url":"https://github.com/drewnoakes/metadata-extractor-dotnet","homepage":"","size":6768,"stargazers_count":34,"watchers_count":34,"language":"C#","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":8,"mirror_url":null,"open_issues_count":9,"forks":8,"open_issues":9,"watchers":34,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34"},"html":{"href":"https://github.com/drewnoakes/metadata-extractor-dotnet/pull/34"},"issue":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/issues/34"},"comments":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/issues/34/comments"},"review_comments":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34/comments"},"review_comment":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/pulls/34/commits"},"statuses":{"href":"https://api.github.com/repos/drewnoakes/metadata-extractor-dotnet/statuses/7f9f79ef8f1d8fb4e3f891e2848a638a7d866dc9"}}}}