{"action":"closed","number":1009,"pull_request":{"url":"https://api.github.com/repos/bottlepy/bottle/pulls/1009","id":150721426,"html_url":"https://github.com/bottlepy/bottle/pull/1009","diff_url":"https://github.com/bottlepy/bottle/pull/1009.diff","patch_url":"https://github.com/bottlepy/bottle/pull/1009.patch","issue_url":"https://api.github.com/repos/bottlepy/bottle/issues/1009","number":1009,"state":"closed","locked":false,"title":"Fix Last-Modifed and Date header formats in static_file for non-engli…","user":{"login":"atalax","id":3966931,"avatar_url":"https://avatars0.githubusercontent.com/u/3966931?v=4","gravatar_id":"","url":"https://api.github.com/users/atalax","html_url":"https://github.com/atalax","followers_url":"https://api.github.com/users/atalax/followers","following_url":"https://api.github.com/users/atalax/following{/other_user}","gists_url":"https://api.github.com/users/atalax/gists{/gist_id}","starred_url":"https://api.github.com/users/atalax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atalax/subscriptions","organizations_url":"https://api.github.com/users/atalax/orgs","repos_url":"https://api.github.com/users/atalax/repos","events_url":"https://api.github.com/users/atalax/events{/privacy}","received_events_url":"https://api.github.com/users/atalax/received_events","type":"User","site_admin":false},"body":"…sh locales\r\n\r\ntime.strftime produces locale-dependent date format. At best, this lead to\r\ninvalid dates being produced, e. g: 'Ne, 05 lis 2017 12:58:28 GMT'. At worst,\r\nthis lead to encoding crashes for dates like 'Út, 31 říj 2017 12:58:28 GMT'\r\n\r\nSome code to reproduce the issue\r\n\r\n```\r\n#! /usr/bin/env python3\r\n\r\nimport locale\r\nimport os\r\nimport bottle\r\nimport time\r\n\r\nlocale.setlocale(locale.LC_TIME, \"cs_CZ.UTF-8\")\r\n\r\nprint(time.strftime(\"%a, %d %b %Y %H:%M:%S GMT\", time.gmtime()))\r\n\r\n\r\n@bottle.route(\"/<path:path>\")\r\ndef handle(path):\r\n    return bottle.static_file(path, root=os.path.dirname(__file__))\r\n\r\nbottle.run(host=\"localhost\", port=\"9999\")\r\n```\r\n\r\n(wait for tuesday to get it to crash :))","created_at":"2017-11-05T13:04:25Z","updated_at":"2017-11-06T12:30:02Z","closed_at":"2017-11-06T12:30:02Z","merged_at":"2017-11-06T12:30:02Z","merge_commit_sha":"58ebf2318817893b6bd48429a9edb75bdd2e82b3","assignee":null,"assignees":[],"requested_reviewers":[],"milestone":null,"commits_url":"https://api.github.com/repos/bottlepy/bottle/pulls/1009/commits","review_comments_url":"https://api.github.com/repos/bottlepy/bottle/pulls/1009/comments","review_comment_url":"https://api.github.com/repos/bottlepy/bottle/pulls/comments{/number}","comments_url":"https://api.github.com/repos/bottlepy/bottle/issues/1009/comments","statuses_url":"https://api.github.com/repos/bottlepy/bottle/statuses/443491630426c79befcc19f3c3bb4e654a6a25e5","head":{"label":"atalax:master","ref":"master","sha":"443491630426c79befcc19f3c3bb4e654a6a25e5","user":{"login":"atalax","id":3966931,"avatar_url":"https://avatars0.githubusercontent.com/u/3966931?v=4","gravatar_id":"","url":"https://api.github.com/users/atalax","html_url":"https://github.com/atalax","followers_url":"https://api.github.com/users/atalax/followers","following_url":"https://api.github.com/users/atalax/following{/other_user}","gists_url":"https://api.github.com/users/atalax/gists{/gist_id}","starred_url":"https://api.github.com/users/atalax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atalax/subscriptions","organizations_url":"https://api.github.com/users/atalax/orgs","repos_url":"https://api.github.com/users/atalax/repos","events_url":"https://api.github.com/users/atalax/events{/privacy}","received_events_url":"https://api.github.com/users/atalax/received_events","type":"User","site_admin":false},"repo":{"id":109579992,"name":"bottle","full_name":"atalax/bottle","owner":{"login":"atalax","id":3966931,"avatar_url":"https://avatars0.githubusercontent.com/u/3966931?v=4","gravatar_id":"","url":"https://api.github.com/users/atalax","html_url":"https://github.com/atalax","followers_url":"https://api.github.com/users/atalax/followers","following_url":"https://api.github.com/users/atalax/following{/other_user}","gists_url":"https://api.github.com/users/atalax/gists{/gist_id}","starred_url":"https://api.github.com/users/atalax/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/atalax/subscriptions","organizations_url":"https://api.github.com/users/atalax/orgs","repos_url":"https://api.github.com/users/atalax/repos","events_url":"https://api.github.com/users/atalax/events{/privacy}","received_events_url":"https://api.github.com/users/atalax/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/atalax/bottle","description":"bottle.py is a fast and simple micro-framework for python web-applications.","fork":true,"url":"https://api.github.com/repos/atalax/bottle","forks_url":"https://api.github.com/repos/atalax/bottle/forks","keys_url":"https://api.github.com/repos/atalax/bottle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/atalax/bottle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/atalax/bottle/teams","hooks_url":"https://api.github.com/repos/atalax/bottle/hooks","issue_events_url":"https://api.github.com/repos/atalax/bottle/issues/events{/number}","events_url":"https://api.github.com/repos/atalax/bottle/events","assignees_url":"https://api.github.com/repos/atalax/bottle/assignees{/user}","branches_url":"https://api.github.com/repos/atalax/bottle/branches{/branch}","tags_url":"https://api.github.com/repos/atalax/bottle/tags","blobs_url":"https://api.github.com/repos/atalax/bottle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/atalax/bottle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/atalax/bottle/git/refs{/sha}","trees_url":"https://api.github.com/repos/atalax/bottle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/atalax/bottle/statuses/{sha}","languages_url":"https://api.github.com/repos/atalax/bottle/languages","stargazers_url":"https://api.github.com/repos/atalax/bottle/stargazers","contributors_url":"https://api.github.com/repos/atalax/bottle/contributors","subscribers_url":"https://api.github.com/repos/atalax/bottle/subscribers","subscription_url":"https://api.github.com/repos/atalax/bottle/subscription","commits_url":"https://api.github.com/repos/atalax/bottle/commits{/sha}","git_commits_url":"https://api.github.com/repos/atalax/bottle/git/commits{/sha}","comments_url":"https://api.github.com/repos/atalax/bottle/comments{/number}","issue_comment_url":"https://api.github.com/repos/atalax/bottle/issues/comments{/number}","contents_url":"https://api.github.com/repos/atalax/bottle/contents/{+path}","compare_url":"https://api.github.com/repos/atalax/bottle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/atalax/bottle/merges","archive_url":"https://api.github.com/repos/atalax/bottle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/atalax/bottle/downloads","issues_url":"https://api.github.com/repos/atalax/bottle/issues{/number}","pulls_url":"https://api.github.com/repos/atalax/bottle/pulls{/number}","milestones_url":"https://api.github.com/repos/atalax/bottle/milestones{/number}","notifications_url":"https://api.github.com/repos/atalax/bottle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/atalax/bottle/labels{/name}","releases_url":"https://api.github.com/repos/atalax/bottle/releases{/id}","deployments_url":"https://api.github.com/repos/atalax/bottle/deployments","created_at":"2017-11-05T13:03:02Z","updated_at":"2017-11-05T13:03:05Z","pushed_at":"2017-11-05T19:15:42Z","git_url":"git://github.com/atalax/bottle.git","ssh_url":"git@github.com:atalax/bottle.git","clone_url":"https://github.com/atalax/bottle.git","svn_url":"https://github.com/atalax/bottle","homepage":"http://bottlepy.org/","size":5813,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_projects":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"bottlepy:master","ref":"master","sha":"db8da3a6aab1142ea0694963eb9afb5026c3c467","user":{"login":"bottlepy","id":1019799,"avatar_url":"https://avatars0.githubusercontent.com/u/1019799?v=4","gravatar_id":"","url":"https://api.github.com/users/bottlepy","html_url":"https://github.com/bottlepy","followers_url":"https://api.github.com/users/bottlepy/followers","following_url":"https://api.github.com/users/bottlepy/following{/other_user}","gists_url":"https://api.github.com/users/bottlepy/gists{/gist_id}","starred_url":"https://api.github.com/users/bottlepy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bottlepy/subscriptions","organizations_url":"https://api.github.com/users/bottlepy/orgs","repos_url":"https://api.github.com/users/bottlepy/repos","events_url":"https://api.github.com/users/bottlepy/events{/privacy}","received_events_url":"https://api.github.com/users/bottlepy/received_events","type":"Organization","site_admin":false},"repo":{"id":239940,"name":"bottle","full_name":"bottlepy/bottle","owner":{"login":"bottlepy","id":1019799,"avatar_url":"https://avatars0.githubusercontent.com/u/1019799?v=4","gravatar_id":"","url":"https://api.github.com/users/bottlepy","html_url":"https://github.com/bottlepy","followers_url":"https://api.github.com/users/bottlepy/followers","following_url":"https://api.github.com/users/bottlepy/following{/other_user}","gists_url":"https://api.github.com/users/bottlepy/gists{/gist_id}","starred_url":"https://api.github.com/users/bottlepy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bottlepy/subscriptions","organizations_url":"https://api.github.com/users/bottlepy/orgs","repos_url":"https://api.github.com/users/bottlepy/repos","events_url":"https://api.github.com/users/bottlepy/events{/privacy}","received_events_url":"https://api.github.com/users/bottlepy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/bottlepy/bottle","description":"bottle.py is a fast and simple micro-framework for python web-applications.","fork":false,"url":"https://api.github.com/repos/bottlepy/bottle","forks_url":"https://api.github.com/repos/bottlepy/bottle/forks","keys_url":"https://api.github.com/repos/bottlepy/bottle/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bottlepy/bottle/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bottlepy/bottle/teams","hooks_url":"https://api.github.com/repos/bottlepy/bottle/hooks","issue_events_url":"https://api.github.com/repos/bottlepy/bottle/issues/events{/number}","events_url":"https://api.github.com/repos/bottlepy/bottle/events","assignees_url":"https://api.github.com/repos/bottlepy/bottle/assignees{/user}","branches_url":"https://api.github.com/repos/bottlepy/bottle/branches{/branch}","tags_url":"https://api.github.com/repos/bottlepy/bottle/tags","blobs_url":"https://api.github.com/repos/bottlepy/bottle/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bottlepy/bottle/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bottlepy/bottle/git/refs{/sha}","trees_url":"https://api.github.com/repos/bottlepy/bottle/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bottlepy/bottle/statuses/{sha}","languages_url":"https://api.github.com/repos/bottlepy/bottle/languages","stargazers_url":"https://api.github.com/repos/bottlepy/bottle/stargazers","contributors_url":"https://api.github.com/repos/bottlepy/bottle/contributors","subscribers_url":"https://api.github.com/repos/bottlepy/bottle/subscribers","subscription_url":"https://api.github.com/repos/bottlepy/bottle/subscription","commits_url":"https://api.github.com/repos/bottlepy/bottle/commits{/sha}","git_commits_url":"https://api.github.com/repos/bottlepy/bottle/git/commits{/sha}","comments_url":"https://api.github.com/repos/bottlepy/bottle/comments{/number}","issue_comment_url":"https://api.github.com/repos/bottlepy/bottle/issues/comments{/number}","contents_url":"https://api.github.com/repos/bottlepy/bottle/contents/{+path}","compare_url":"https://api.github.com/repos/bottlepy/bottle/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bottlepy/bottle/merges","archive_url":"https://api.github.com/repos/bottlepy/bottle/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bottlepy/bottle/downloads","issues_url":"https://api.github.com/repos/bottlepy/bottle/issues{/number}","pulls_url":"https://api.github.com/repos/bottlepy/bottle/pulls{/number}","milestones_url":"https://api.github.com/repos/bottlepy/bottle/milestones{/number}","notifications_url":"https://api.github.com/repos/bottlepy/bottle/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bottlepy/bottle/labels{/name}","releases_url":"https://api.github.com/repos/bottlepy/bottle/releases{/id}","deployments_url":"https://api.github.com/repos/bottlepy/bottle/deployments","created_at":"2009-06-30T17:51:30Z","updated_at":"2017-11-06T12:27:06Z","pushed_at":"2017-11-06T12:30:02Z","git_url":"git://github.com/bottlepy/bottle.git","ssh_url":"git@github.com:bottlepy/bottle.git","clone_url":"https://github.com/bottlepy/bottle.git","svn_url":"https://github.com/bottlepy/bottle","homepage":"http://bottlepy.org/","size":5801,"stargazers_count":4962,"watchers_count":4962,"language":"Python","has_issues":true,"has_projects":true,"has_downloads":false,"has_wiki":true,"has_pages":false,"forks_count":989,"mirror_url":null,"archived":false,"open_issues_count":235,"forks":989,"open_issues":235,"watchers":4962,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/bottlepy/bottle/pulls/1009"},"html":{"href":"https://github.com/bottlepy/bottle/pull/1009"},"issue":{"href":"https://api.github.com/repos/bottlepy/bottle/issues/1009"},"comments":{"href":"https://api.github.com/repos/bottlepy/bottle/issues/1009/comments"},"review_comments":{"href":"https://api.github.com/repos/bottlepy/bottle/pulls/1009/comments"},"review_comment":{"href":"https://api.github.com/repos/bottlepy/bottle/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/bottlepy/bottle/pulls/1009/commits"},"statuses":{"href":"https://api.github.com/repos/bottlepy/bottle/statuses/443491630426c79befcc19f3c3bb4e654a6a25e5"}},"author_association":"NONE","merged":true,"mergeable":null,"rebaseable":null,"mergeable_state":"unknown","merged_by":{"login":"defnull","id":62740,"avatar_url":"https://avatars1.githubusercontent.com/u/62740?v=4","gravatar_id":"","url":"https://api.github.com/users/defnull","html_url":"https://github.com/defnull","followers_url":"https://api.github.com/users/defnull/followers","following_url":"https://api.github.com/users/defnull/following{/other_user}","gists_url":"https://api.github.com/users/defnull/gists{/gist_id}","starred_url":"https://api.github.com/users/defnull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/defnull/subscriptions","organizations_url":"https://api.github.com/users/defnull/orgs","repos_url":"https://api.github.com/users/defnull/repos","events_url":"https://api.github.com/users/defnull/events{/privacy}","received_events_url":"https://api.github.com/users/defnull/received_events","type":"User","site_admin":false},"comments":1,"review_comments":0,"maintainer_can_modify":false,"commits":1,"additions":3,"deletions":3,"changed_files":1}}
{"actor":{"display_login":"defnull"}}