GitHub ReleaseEvent at 2014-12-18 16:20:47
Repository: Geocoder
Actor: willdurand
Payload: {"action":"published","release":{"url":"https://api.github.com/repos/geocoder-php/Geocoder/releases/794905","assets_url":"https://api.github.com/repos/geocoder-php/Geocoder/releases/794905/assets","upload_url":"https://uploads.github.com/repos/geocoder-php/Geocoder/releases/794905/assets{?name}","html_url":"https://github.com/geocoder-php/Geocoder/releases/tag/3.0.0-alpha1","id":794905,"tag_name":"3.0.0-alpha1","target_commitish":"master","name":"3.0.0-alpha1 (2014-12-18)","draft":false,"author":{"login":"willdurand","id":217628,"avatar_url":"https://avatars.githubusercontent.com/u/217628?v=3","gravatar_id":"","url":"https://api.github.com/users/willdurand","html_url":"https://github.com/willdurand","followers_url":"https://api.github.com/users/willdurand/followers","following_url":"https://api.github.com/users/willdurand/following{/other_user}","gists_url":"https://api.github.com/users/willdurand/gists{/gist_id}","starred_url":"https://api.github.com/users/willdurand/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/willdurand/subscriptions","organizations_url":"https://api.github.com/users/willdurand/orgs","repos_url":"https://api.github.com/users/willdurand/repos","events_url":"https://api.github.com/users/willdurand/events{/privacy}","received_events_url":"https://api.github.com/users/willdurand/received_events","type":"User","site_admin":false},"prerelease":true,"created_at":"2014-12-18T16:20:06Z","published_at":"2014-12-18T16:20:47Z","assets":[],"tarball_url":"https://api.github.com/repos/geocoder-php/Geocoder/tarball/3.0.0-alpha1","zipball_url":"https://api.github.com/repos/geocoder-php/Geocoder/zipball/3.0.0-alpha1","body":"Hi!\r\n\r\nI am proud to announce that we are ready to ship the **next major** version of Geocoder: **3.0.0**. This is a **pre-release** which will help us ensure everything works smoothly. We are currently working hard on making Geocoder related projects compatible with this new version, hence the need for a pre-release version.\r\n\r\nBasically, we changed almost everything in this library **but** its simplicity and its robustness have been kept. Since 2012, Geocoder provides a powerful API to perform geocoding actions in PHP. However, things in PHP evolved a lot, and we decided to refactor the lib to be **more flexible**, and even **more powerful**.\r\n\r\nFor instance, **providers are now highly configurable** and Geocoder leverages a [third-party library](https://github.com/egeloen/ivory-http-adapter) implementing [PSR-7](https://github.com/php-fig/fig-standards/blob/master/proposed/http-message.md).\r\n\r\nGeocoder 3.0.0 contains **less code** than previously, 49 classes, 5 interfaces and less than 5300 lines of code for the code (tests are not included here). As a matter of fact, Geocoder 2.x has 56 classes and 6500 lines of code. Removing code was a challenge as we did not want to remove features from this library. We rather **re-organized** Geocoder to fit its initial goal: providing a simple yet powerful way to geocode street and IP addresses, with the ability to switch from one provider to another with ease. [Geocoder Extra](https://github.com/geocoder-php/geocoder-extra) contains alternative providers that are not **worldwide** and therefore less used. Again, we did not remove anything. \r\n\r\nNew features have been added, such as the [`TimedGeocoder` implementation](https://github.com/geocoder-php/Geocoder#timedgeocoder) and a [better model layer](https://github.com/geocoder-php/Geocoder/tree/master/src/Geocoder/Model). You will find all details in the [CHANGELOG below](#full-changelog).\r\n\r\nThe documentation, which has been rewritten, also contains a description of Geocoder's [versioning strategy](https://github.com/geocoder-php/Geocoder#versioning), and we are proud to have a [Contributor Code of Conduct](https://github.com/geocoder-php/Geocoder#contributor-code-of-conduct), because the lack of diversity in Open Source is not acceptable.\r\n\r\nHelp us making Geocoder 3.0.0 **really stable** by giving this very first pre-release a try!\r\n\r\nLast but not the least, **THANK YOU** to all contributors!!! :yellow_heart: :blue_heart: :heart: :green_heart: :ship: :star: :star2:  :blue_heart: :stars: :gift_heart: \r\n\r\nLet's celebrate now!\r\n\r\n![](https://spiritofchildrensliterature.files.wordpress.com/2014/06/group-excited.gif)\r\n\r\n### Full Changelog\r\n\r\n* Added: `using()` method now throws an exception if provider not found\r\n* Added: new Result classes (`Address`, `Bounds`, `Region`, `Country`, `County`, `Coordinates`)\r\n* Added: new named exceptions\r\n* Added: better exception messages\r\n* Added: new HTTP layer thanks to `egeloen/http-adapter` library\r\n* Added: `TimedGeocoder` implementation (works with StopWatch Symfony component)\r\n* Added: `AbstractHttpProvider` (extending `AbstractProvider`)\r\n* Added: provide a way to use IpInfoDB country precision\r\n* Added: cached responses for BingMaps provider (tests)\r\n* Added: cached reponse for GoogleMaps provider (tests)\r\n* Added: `ProviderAggregator` (replacing the former `Geocoder` class)\r\n* Added: ability to change providers locale at runtime\r\n* Documentation: almost entirely rewritten\r\n* Documentation: a note on versioning has been added\r\n* Documentation: a Contributor Code of Conduct has been added for the entire\r\n  Geocoder project\r\n* Fixed: phpdoc, wording\r\n* Fixed: providers are now highly configurable, even at runtime\r\n* Fixed: `FreeGeoIp` property because of an API change\r\n* Moved: IGN OpenLS provider to geocoder-extra (#339)\r\n* Moved: OIORest provider to geocoder-extra (#336)\r\n* Moved: GeoCoder.us provider to geocoder-extra (#338)\r\n* Moved: GeoCoder.ca provider to geocoder-extra (#337)\r\n* Moved: DataScienceToolkit provider to geocoder-extra (#340)\r\n* Moved: Baidu provider to geocoder-extra (#341)\r\n* Moved: IpGeoBase provider to geocoder-extra (#342)\r\n* Renamed: properties such as:\r\n    - city => locality\r\n    - cityDistrict => subLocality\r\n    - zipcode => postalCode\r\n* Refactored: dumpers (remove Interface suffix, define a new method signature)\r\n* Refactored: class names!\r\n* Refactored: all providers now implement the `Geocoder` interface\r\n* Refactored: exception messages are a bit more verbose\r\n* Removed: `Provider`, `Dumper`, `Interface`, and `Exception` suffixes\r\n* Removed: `autoload.php` file\r\n* Removed: `OpenStreetMapsProvider` class (#335)\r\n* Removed: HTTP adapters layer\r\n* Removed: the `Geocoder` class does not exist anymore and has been replaced by\r\n  the `ProviderAggregator` class"}}