Making GeoLocation an interface makes it easier to replace the underlying implementation
from the current Http backed method.
Change-Id: I2beb97772fd74ab08b2214c08d82dbc1ebfcdcd2
This should make the code a bit more structured and easier to navigate
through. It also removes some lines from extension.json as the autoload
classes list is replaced by an autoload namespaces property.
This also changes the minimum requirement of MediaWiki to 1.31 for this
extension to work.
Change-Id: I249ccc3035297c99202a5f83fcc8d3fda68b682c
Instead of always looking up a single IP address, even for multiple
requests, cache the result of the first lookup. IP addresses usually
doesn't move that fast, caching the result should therefore be
reasonably ok.
Change-Id: Ice78ec08ff886e77c542a75086610498eaa6c6b4
This cleans up the hook file a lot and movesthe logic to seperate services
provided by MediaWikiServices. This also removes some setters and passed-
around variables and stuff. Also fixes the unit tests by not querying
external services anymore.
Change-Id: I0c3c0b7f2f5bd68aaad624e8e2dcad9bdcf97770