payload: {"action":"created","issue":{"url":"https://api.github.com/repos/nodes-vapor/storage/issues/54","repository_url":"https://api.github.com/repos/nodes-vapor/storage","labels_url":"https://api.github.com/repos/nodes-vapor/storage/issues/54/labels{/name}","comments_url":"https://api.github.com/repos/nodes-vapor/storage/issues/54/comments","events_url":"https://api.github.com/repos/nodes-vapor/storage/issues/54/events","html_url":"https://github.com/nodes-vapor/storage/pull/54","id":395722985,"node_id":"MDExOlB1bGxSZXF1ZXN0MjQyMTA5NjIy","number":54,"title":"Add `eu-west-2`,`eu-west-3` missing regions alongside a custom declaration possibility","user":{"login":"iGranDav","id":75418,"node_id":"MDQ6VXNlcjc1NDE4","avatar_url":"https://avatars0.githubusercontent.com/u/75418?v=4","gravatar_id":"","url":"https://api.github.com/users/iGranDav","html_url":"https://github.com/iGranDav","followers_url":"https://api.github.com/users/iGranDav/followers","following_url":"https://api.github.com/users/iGranDav/following{/other_user}","gists_url":"https://api.github.com/users/iGranDav/gists{/gist_id}","starred_url":"https://api.github.com/users/iGranDav/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/iGranDav/subscriptions","organizations_url":"https://api.github.com/users/iGranDav/orgs","repos_url":"https://api.github.com/users/iGranDav/repos","events_url":"https://api.github.com/users/iGranDav/events{/privacy}","received_events_url":"https://api.github.com/users/iGranDav/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"BrettRToomey","id":1977704,"node_id":"MDQ6VXNlcjE5Nzc3MDQ=","avatar_url":"https://avatars3.githubusercontent.com/u/1977704?v=4","gravatar_id":"","url":"https://api.github.com/users/BrettRToomey","html_url":"https://github.com/BrettRToomey","followers_url":"https://api.github.com/users/BrettRToomey/followers","following_url":"https://api.github.com/users/BrettRToomey/following{/other_user}","gists_url":"https://api.github.com/users/BrettRToomey/gists{/gist_id}","starred_url":"https://api.github.com/users/BrettRToomey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BrettRToomey/subscriptions","organizations_url":"https://api.github.com/users/BrettRToomey/orgs","repos_url":"https://api.github.com/users/BrettRToomey/repos","events_url":"https://api.github.com/users/BrettRToomey/events{/privacy}","received_events_url":"https://api.github.com/users/BrettRToomey/received_events","type":"User","site_admin":false},"assignees":[{"login":"BrettRToomey","id":1977704,"node_id":"MDQ6VXNlcjE5Nzc3MDQ=","avatar_url":"https://avatars3.githubusercontent.com/u/1977704?v=4","gravatar_id":"","url":"https://api.github.com/users/BrettRToomey","html_url":"https://github.com/BrettRToomey","followers_url":"https://api.github.com/users/BrettRToomey/followers","following_url":"https://api.github.com/users/BrettRToomey/following{/other_user}","gists_url":"https://api.github.com/users/BrettRToomey/gists{/gist_id}","starred_url":"https://api.github.com/users/BrettRToomey/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/BrettRToomey/subscriptions","organizations_url":"https://api.github.com/users/BrettRToomey/orgs","repos_url":"https://api.github.com/users/BrettRToomey/repos","events_url":"https://api.github.com/users/BrettRToomey/events{/privacy}","received_events_url":"https://api.github.com/users/BrettRToomey/received_events","type":"User","site_admin":false}],"milestone":null,"comments":5,"created_at":"2019-01-03T21:01:37Z","updated_at":"2019-02-07T14:21:03Z","closed_at":null,"author_association":"NONE","pull_request":{"url":"https://api.github.com/repos/nodes-vapor/storage/pulls/54","html_url":"https://github.com/nodes-vapor/storage/pull/54","diff_url":"https://github.com/nodes-vapor/storage/pull/54.diff","patch_url":"https://github.com/nodes-vapor/storage/pull/54.patch"},"body":"Those Europe regions were missing, and I needed them 🙂"},"comment":{"url":"https://api.github.com/repos/nodes-vapor/storage/issues/comments/461437967","html_url":"https://github.com/nodes-vapor/storage/pull/54#issuecomment-461437967","issue_url":"https://api.github.com/repos/nodes-vapor/storage/issues/54","id":461437967,"node_id":"MDEyOklzc3VlQ29tbWVudDQ2MTQzNzk2Nw==","user":{"login":"siemensikkema","id":1049951,"node_id":"MDQ6VXNlcjEwNDk5NTE=","avatar_url":"https://avatars0.githubusercontent.com/u/1049951?v=4","gravatar_id":"","url":"https://api.github.com/users/siemensikkema","html_url":"https://github.com/siemensikkema","followers_url":"https://api.github.com/users/siemensikkema/followers","following_url":"https://api.github.com/users/siemensikkema/following{/other_user}","gists_url":"https://api.github.com/users/siemensikkema/gists{/gist_id}","starred_url":"https://api.github.com/users/siemensikkema/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/siemensikkema/subscriptions","organizations_url":"https://api.github.com/users/siemensikkema/orgs","repos_url":"https://api.github.com/users/siemensikkema/repos","events_url":"https://api.github.com/users/siemensikkema/events{/privacy}","received_events_url":"https://api.github.com/users/siemensikkema/received_events","type":"User","site_admin":false},"created_at":"2019-02-07T14:21:03Z","updated_at":"2019-02-07T14:21:03Z","author_association":"NONE","body":"@iGranDav Thanks for your PR! Your addition of a custom case reminded me of a possibly better way to deal with future changes. An enum is almost always problematic when it comes to packages. A more robust way is to use a struct that hides a string in combination with static (computed) variables, like so:\r\n\r\n```swift\r\npublic struct Region {\r\n    let code: String\r\n\r\n    public static var usEast1: Region {\r\n        return .init(code: \"us-east-1\")\r\n    }\r\n\r\n    public static var usEast2: Region {\r\n        return .init(code: \"us-east-2\")\r\n    }\r\n\r\n    public static var usWest1: Region {\r\n        return .init(code: \"us-west-1\")\r\n    }\r\n\r\n    public static var usWest2: Region {\r\n        return .init(code: \"us-west-2\")\r\n    }\r\n\r\n    public static var euWest1: Region {\r\n        return .init(code: \"eu-west-1\")\r\n    }\r\n\r\n    public static var euWest2: Region {\r\n        return .init(code: \"eu-west-2\")\r\n    }\r\n\r\n    public static var euWest3: Region {\r\n        return .init(code: \"eu-west-3\")\r\n    }\r\n\r\n    public static var euCentral1: Region {\r\n        return .init(code: \"eu-central-1\")\r\n    }\r\n\r\n    public static var apSouth1: Region {\r\n        return .init(code: \"ap-south-1\")\r\n    }\r\n\r\n    public static var apSoutheast1: Region {\r\n        return .init(code: \"ap-southeast-1\")\r\n    }\r\n\r\n    public static var apSoutheast2: Region {\r\n        return .init(code: \"ap-southeast-2\")\r\n    }\r\n\r\n    public static var apNortheast1: Region {\r\n        return .init(code: \"ap-northeast-1\")\r\n    }\r\n\r\n    public static var apNortheast2: Region {\r\n        return .init(code: \"ap-northeast-2\")\r\n    }\r\n\r\n    public static var saEast1: Region {\r\n        return .init(code: \"sa-east-1\")\r\n    }\r\n\r\n    public var host: String {\r\n        return \"s3-\\(code).amazonaws.com\"\r\n    }\r\n}\r\n```"}}
other: {"actor":{"display_login":"siemensikkema"}}