Commit graph

550 commits

Author SHA1 Message Date
Alejandro Celaya
da65c05c4f Added double check when parsing build epoch from the GeoLite db file in case it is not an integer 2021-02-06 21:38:09 +01:00
Alejandro Celaya
d386e1405c Ensure request is not performed if both title resolution and URL validation are disabled 2021-02-05 18:22:54 +01:00
Alejandro Celaya
608742c2e2 Added helper service to avoid code duplication when resolving short URLs titles 2021-02-05 17:59:34 +01:00
Alejandro Celaya
71e91a541f Allowed to resolve title during short URL edition if it has to 2021-02-04 23:02:26 +01:00
Alejandro Celaya
2640c7b43c Updated to a shlink-importer version that supports titles 2021-02-04 15:24:27 +01:00
Alejandro Celaya
7824dddef7 Added tracking to tell if short URL titles were autogenerated or not 2021-02-03 19:22:47 +01:00
Alejandro Celaya
0ef1e347e7 Enhanced UrlShortenerTest 2021-02-03 13:28:51 +01:00
Alejandro Celaya
bfba05c863 Enhanced UrlValidatorTest 2021-02-03 11:53:08 +01:00
Alejandro Celaya
8b54098299 Added option to automatically resolve url titles 2021-02-03 11:07:47 +01:00
Alejandro Celaya
430c407106 Added support for an optional title field in short URLs 2021-02-02 21:20:09 +01:00
Alejandro Celaya
8fa0c95f5a Ensured base path is honored when stringifying short URLs with a custom domain 2021-02-01 23:18:52 +01:00
Alejandro Celaya
4b4a859722 Created ShortUrlStringifierTest 2021-02-01 23:18:52 +01:00
Alejandro Celaya
9cddedcdba Extracted logic to stringify ShortUrls to its own service 2021-02-01 23:18:52 +01:00
Alejandro Celaya
ef12e90ae7 Removed non-used deprecated method and added missing tests 2021-01-31 13:05:21 +01:00
Alejandro Celaya
cdfd14e63f Deprecated action and endpoint to edit short URL tags 2021-01-31 12:24:26 +01:00
Alejandro Celaya
977058d219 Updated short URL edition so that it supports editing tags 2021-01-31 12:12:21 +01:00
Alejandro Celaya
c58fa586e1 Removed use of deprecated methods in DB tests 2021-01-31 11:51:00 +01:00
Alejandro Celaya
1cd6fdeede Centralized logic to normalize tag names and removed references to deprecated setTags method in unit tests 2021-01-31 11:09:00 +01:00
Alejandro Celaya
82091c7951 Added logic to resolve tags during short URL creation through ShortUrlRelationResolver 2021-01-31 10:53:18 +01:00
Alejandro Celaya
7e90fd45a7 Renamed ShortUrlInputFilter and added named constructors to it 2021-01-31 07:47:58 +01:00
Alejandro Celaya
063ee9c195 Inlcuded tags as part of the ShortUrlMeta 2021-01-30 19:17:12 +01:00
Alejandro Celaya
07b12fac3c Refactored short URL creation so that the long URL is part of the ShortUrlMeta 2021-01-30 14:18:44 +01:00
Alejandro Celaya
55ddc4ae75 Replaced laminas-paginator with pagerfanta 2021-01-23 14:37:34 +01:00
Alejandro Celaya
2e8f5202d0 Moved event objects to a sub-namespace inside Core\EventDispatcher 2021-01-17 11:42:35 +01:00
Alejandro Celaya
9e9d213f20 Added roles info to api key generation and api key list 2021-01-11 16:32:59 +01:00
Alejandro Celaya
c49a0ca040 Added list of roles to print after an API is generated 2021-01-11 15:20:26 +01:00
Alejandro Celaya
1f2e16184c Extracted function to render arrays from inside ValidationException 2021-01-10 20:28:52 +01:00
Alejandro Celaya
c9ff2b3834 Updated services required to initialize API keys with roles 2021-01-10 20:05:14 +01:00
Alejandro Celaya
5283ee2c6b Moved common data provider for core unit tests to trait 2021-01-10 09:31:51 +01:00
Alejandro Celaya
14eeb91c58 Added db test for VisitRepository::countVisits 2021-01-09 17:54:04 +01:00
Alejandro Celaya
caa1ae0de8 Added all missing unit tests covering API key permissions 2021-01-09 12:38:06 +01:00
Alejandro Celaya
a8b68f07b5 Ensured delete/rename tags cannot be done with non-admin API keys 2021-01-06 17:31:49 +01:00
Alejandro Celaya
b5710f87e2 Created value object to wrap the renaming of a tag 2021-01-06 13:11:28 +01:00
Alejandro Celaya
4b67d41362 Applied API role specs to short URL creation 2021-01-04 20:15:42 +01:00
Alejandro Celaya
19834f6715 Applied API role specs to domains list 2021-01-04 15:55:59 +01:00
Alejandro Celaya
262a06f624 Renamed method to be more consistent to what it actually does 2021-01-04 15:16:51 +01:00
Alejandro Celaya
a01e0ba337 Changed logic to list domains to centralize conditions in service 2021-01-04 15:02:37 +01:00
Alejandro Celaya
29cdfaed39 Changed ShortUrlMeta so that it expects an ApiKey instance instead of the key as string 2021-01-04 13:32:44 +01:00
Alejandro Celaya
24f7fb9c4f Applied API role specs to tags list without stats 2021-01-04 12:44:29 +01:00
Alejandro Celaya
68c601a5a8 Applied API role specs to global visits 2021-01-04 11:27:55 +01:00
Alejandro Celaya
8aa6bdb934 Applied API role specs to tag visits 2021-01-04 11:14:28 +01:00
Alejandro Celaya
4a1e7b761a Applied API role specs to short URL visits 2021-01-03 17:48:32 +01:00
Alejandro Celaya
25ee9b5daf Applied API role specs to single short URL tags edition 2021-01-03 16:50:47 +01:00
Alejandro Celaya
fff10ebee4 Applied API role specs to single short URL edition 2021-01-03 16:41:44 +01:00
Alejandro Celaya
dc08286a72 Applied API role specs to single short URL resolution 2021-01-03 13:33:07 +01:00
Alejandro Celaya
940383646b Applied API role specs to short URLs list 2021-01-03 13:05:21 +01:00
Alejandro Celaya
ecf22ae4b6 Added happyr/doctrine-specification to support dunamically applying specs to queries 2021-01-02 17:14:42 +01:00
Alejandro Celaya
6bedca4ee6 Added more tests covering unicode in custom slugs 2020-12-02 18:45:57 +01:00
Alejandro Celaya
4f1ab977a1 #917 Added tests covering the different ways to provide sizes to the QR codes 2020-11-27 17:42:33 +01:00
Alejandro Celaya
39bda5113b #912 Fixed unit tests 2020-11-22 18:11:31 +01:00
Alejandro Celaya
49ea5cc78b #912 Removed dependency on league/plates 2020-11-22 18:03:27 +01:00
Alejandro Celaya
259c52a698 #867 Ensured status code config is honored when doing not-found redirects 2020-11-10 18:08:25 +01:00
Alejandro Celaya
fe4e171ecb Removed unused mock 2020-11-07 10:30:25 +01:00
Alejandro Celaya
7c9f572eb1 Deleted old domain resolvers and added tests for new short url relation resolvers 2020-11-07 09:49:09 +01:00
Alejandro Celaya
2732b05834 Added mechanisms to be able to provide the API key when creating a short URL 2020-11-07 09:34:10 +01:00
Alejandro Celaya
97f89bcede Simplified transactional URL shortening 2020-11-06 20:05:57 +01:00
Alejandro Celaya
1621f3a943 Updated dependencies 2020-11-02 11:53:14 +01:00
Alejandro Celaya
de7096010e Created DoctrineBatchHelperTest 2020-10-25 13:30:18 +01:00
Alejandro Celaya
03a9697298 Created ImportedLinksProcessorTest 2020-10-25 13:20:34 +01:00
Alejandro Celaya
786e4f642b Moved short code uniqueness checks to external helper class that is used in UrlShortener and ImportedLinksProcessor 2020-10-25 11:16:42 +01:00
Alejandro Celaya
b1a073b1ab Ensured uniqueness on imported short URLs short code 2020-10-25 10:26:11 +01:00
Daniel Londero
065d314608
Invoke PHPUnit's assertions statically 2020-10-04 00:35:14 +02:00
Alejandro Celaya
450eea64aa Added support for port option in SimplifiedConfigParser 2020-10-03 11:54:31 +02:00
Alejandro Celaya
24aab5cc0e Created unit tests for new Domain-related elements 2020-09-27 10:11:41 +02:00
Alejandro Celaya
d5eac3b1c3 Added validateUrl optional flag for create/edit short URLs 2020-09-23 19:19:17 +02:00
Alejandro Celaya
641f35ae05 Updated changelog 2020-09-23 07:46:25 +02:00
Alejandro Celaya
460ca032d2 Drastically improved performance when creating new short URLs with findIfExists by moving logic to DB query 2020-09-23 00:22:29 +02:00
Alejandro Celaya
4b7184ac85 Added tests for new QR code format 2020-09-21 22:54:05 +02:00
Alejandro Celaya
73c6c52b2a Updated to guzzle 7 2020-06-28 10:06:49 +02:00
Alejandro Celaya
78b838f6b6 Used league/uri to validate URLs including deeplinks, and fixed tests 2020-06-27 11:14:10 +02:00
Alejandro Celaya
5c163490c7 Allowed new redirect config options to be pased as env vars to the docker image 2020-06-20 11:21:37 +02:00
Alejandro Celaya
0bea843e7f Added test covering how redirects config works 2020-06-20 09:50:56 +02:00
Alejandro Celaya
371f246c41 Improved custom slug sluggification, allowing valid URL characters 2020-06-08 18:08:53 +02:00
Alejandro Celaya
1fa9896524 Fixed error when trying to match creteria on a Short URL with dates 2020-05-11 13:12:55 +02:00
Alejandro Celaya
9b9de8e290 Updated VisitsTrackerTest 2020-05-09 10:14:26 +02:00
Alejandro Celaya
e1e3c7f061 Created paginator adapter tests 2020-05-09 10:10:48 +02:00
Alejandro Celaya
8f06e4b20f Replaced references to obfuscate by anonymize 2020-05-08 15:43:09 +02:00
Alejandro Celaya
bfdd6e0c50 Ensured SimplifiedConfigParser properly handles obfuscate_remote_addr option 2020-05-08 13:21:49 +02:00
Alejandro Celaya
eac468514b Allow to determine if remote addresses should be obfuscated at configuration level 2020-05-08 13:10:58 +02:00
Alejandro Celaya
7da00fbc8c Updated Visit entity so that the address can be optionally obfuscated 2020-05-08 12:58:49 +02:00
Alejandro Celaya
2e269bcacd Updated TagServiceTest 2020-05-08 11:14:39 +02:00
Alejandro Celaya
626c92460b Enhanced list tags endpoint so that it can also return stats foir every tag 2020-05-08 10:15:33 +02:00
Alejandro Celaya
b5947d1642 Created more unit tests 2020-05-01 11:57:46 +02:00
Alejandro Celaya
4498386f56 Fixed merge conflicts 2020-04-30 20:26:00 +02:00
Alejandro Celaya
9190996e54 Added support for geolite_license_key config option 2020-04-29 19:26:34 +02:00
Alejandro Celaya
6ba6b951bf Changed mercure topics to be dash-cased 2020-04-16 22:25:12 +02:00
Alejandro Celaya
18b12ab1e6 Updated NotifyVisitToMercure to send both an update for all short URLs and one specific short URL 2020-04-14 20:57:25 +02:00
Alejandro Celaya
934fa937b5 Updated config parsers for docker image to accept new mercure env vars and configs 2020-04-12 20:41:23 +02:00
Alejandro Celaya
7f888c49b4 Created MercureUpdatesGeneratorTest 2020-04-12 18:01:13 +02:00
Alejandro Celaya
e97dfbfdda Created NotifyVisitToMercureTest 2020-04-12 17:50:40 +02:00
Alejandro Celaya
f915b97606 Created decorator for database connection closing and reopening for swoole tasks 2020-04-11 18:00:40 +02:00
Alejandro Celaya
551368c30d Ensured QR code action respects configured domain 2020-04-09 12:31:03 +02:00
Alejandro Celaya
28e0fb049b Added check to ensure DB connection is gracefully recovered on swoole task workers 2020-04-09 11:54:54 +02:00
Alejandro Celaya
1980d35691 Ensured redirect requests are not tracked when request is performed using method HEAD 2020-04-08 23:51:57 +02:00
Alejandro Celaya
c012b4740d Updated VisitLocator test so that it covers all public methods 2020-03-28 10:01:09 +01:00
Alejandro Celaya
55778eb810 Ensured old visit locations are deleted when relocating a visit that has already been located 2020-03-28 09:27:45 +01:00
Alejandro Celaya
fcce18b059 Changed VisitLocator signature so that it expects an object implementing an interface instead of two arbitrary callbacks 2020-03-28 08:05:15 +01:00
Alejandro Celaya
43a3d469e7 Improved how visits with some conditions are fetched from the database, so all internal logic is 100% transparent regardless the purpose 2020-03-27 22:01:26 +01:00
Alejandro Celaya
b8522b8c17 Created new method to locate empty visits 2020-03-26 22:37:46 +01:00
Alejandro Celaya
5432eb7b77 Added URL validation to ShortUrl edition, as long URL can now be edited 2020-03-22 17:22:52 +01:00
Alejandro Celaya
181ff16409 Registered PersistenceDomainResolver as a service to avoid instantiating a new one on every ShortUrl creation 2020-03-22 17:05:59 +01:00
Alejandro Celaya
682a0768b7 Moved check for URL validation config option to the UrlValidator itself 2020-03-22 16:58:28 +01:00
Alejandro Celaya
4e6836c605 Long URLs can now be edited on existing short URLs 2020-03-22 14:04:01 +01:00
Alejandro Celaya
fdd8efc12d Added test covering case in which the original address is provided when locating visits 2020-03-22 11:12:30 +01:00
Alejandro Celaya
d32112fe7e Updated shlink packages and installed shlink-config 2020-03-15 17:14:37 +01:00
Alejandro Celaya
f5c1e12db4 Added more tests covering invalid custom slugs 2020-03-06 20:01:41 +01:00
Alejandro Celaya
590fc3fc92 Added tests covering redirect simplified config parsing 2020-02-25 18:01:06 +01:00
Alejandro Celaya
51e130c7a0 Added env var that can be used to define default short codes length on docker image 2020-02-18 19:34:01 +01:00
Alejandro Celaya
9372d1739a Enforced short URLs length to be 4 at least 2020-02-18 18:57:24 +01:00
Alejandro Celaya
13555366e3 Short code lengths can now be customized 2020-02-18 18:54:40 +01:00
Alejandro Celaya
297985cf01 Ensured trying to fetch a short URL for any operation through the API results in 404 if it does not match with porovided domain 2020-02-02 12:58:26 +01:00
Alejandro Celaya
10f79ec01d Created new repository method which will look for short URLs without doing domain fallback 2020-02-02 12:44:35 +01:00
Alejandro Celaya
6858dc4785 Updated setting short URL tags so that it accepts providing the domain 2020-02-01 22:59:21 +01:00
Alejandro Celaya
5d1d9dcac3 Allowed domain to be provided when editing short URL meta 2020-02-01 22:54:21 +01:00
Alejandro Celaya
732bb06c62 Updated short URL deletion so that it accepts the domain 2020-02-01 18:06:50 +01:00
Alejandro Celaya
279bd12a2d Ensured domain can be passed when fetching visits for a short URL 2020-02-01 17:34:16 +01:00
Alejandro Celaya
1b2a0d674f Fixed correct short URL being tracked when domain exists 2020-02-01 13:03:48 +01:00
Alejandro Celaya
327d35fe57 Created DTO used to transfer props needed to uniquely identify a short URL 2020-02-01 11:47:01 +01:00
Alejandro Celaya
452bfea088 Created DTOs with implicit validation to wrap short URLs lists params 2020-01-28 10:49:55 +01:00
Alejandro Celaya
b9c7f8e8d4 Added unit tests for ShortUrlresolver 2020-01-26 19:53:18 +01:00
Alejandro Celaya
4ebd48b2b0 Created new service to resolve short URLs 2020-01-26 19:21:51 +01:00
Alejandro Celaya
45151cdde6 Standardized how the ShortUrlMeta object is created by exposing a single named constructor 2020-01-26 08:42:51 +01:00
Alejandro Celaya
c52794aed6 Replaced standard http_build_query by guzzle's build_query, which keeps params with no value 2020-01-12 10:28:44 +01:00
Alejandro Celaya
4fadd523f1 Updated config to read redis from config.redis 2020-01-05 16:45:14 +01:00
Alejandro Celaya
2151b97bec Project migrated from zend to laminas 2020-01-01 21:13:09 +01:00
Alejandro Celaya
50100c251e Updated to coding standard v2.1 2020-01-01 20:48:31 +01:00
Alejandro Celaya
d205405dcc Updated DeprecatedConfigParser to remove the secret key 2020-01-01 11:27:09 +01:00
Alejandro Celaya
0e04968bc2 Changed latitude and longitude to float 2019-12-31 23:37:49 +01:00
Alejandro Celaya
0cf1d8d375 Changed validate_url to have default value of false 2019-12-31 16:30:59 +01:00
Alejandro Celaya
434b56fa8c Removed several deprecated components 2019-12-31 15:38:37 +01:00
Alejandro Celaya
78b484e657 Deleted everything related with previews generation 2019-12-31 13:40:38 +01:00
Alejandro Celaya
bfeb915cd2 Replaced regular callbacks by arrow functions when possible 2019-12-29 23:16:55 +01:00
Alejandro Celaya
a830420d75 Added property types to all non-deprecated classes 2019-12-29 22:48:40 +01:00
Alejandro Celaya
b904c6d00d Added property types to some classes 2019-12-29 22:27:00 +01:00
Alejandro Celaya
664569a52b Added visits_webhooks option to SimplifiedConfigParser 2019-12-28 16:42:21 +01:00
Alejandro Celaya
b17bcb6c93 Updated LocateShortUrlVisit so that it dispatches a VisitLocated event 2019-12-28 13:07:11 +01:00
Alejandro Celaya
562b0a0868 Used PSR3 logger preprocessor format instead of sprintf when possible 2019-12-27 16:15:14 +01:00
Alejandro Celaya
d67321f187 Removed workarounds from UrlValidator that were required for guzzle 6.5.0 2019-12-21 16:09:29 +01:00
Alejandro Celaya
839ca31821 Ensured date range filtering is also passed to the count function on ShortUrlRepository 2019-12-16 21:46:27 +01:00
Alejandro Celaya
99fd5f937e Fixed existing tests and coding styles 2019-12-16 15:16:18 +01:00
Alejandro Celaya
843e943251 Updated to guzzle 6.5 and removed custom code 2019-12-07 21:01:14 +01:00
Alejandro Celaya
e5f262869c Improved tag conflict docs and tests 2019-12-06 23:40:54 +01:00
Alejandro Celaya
a070a68a57 Fixed merge conflicts 2019-12-06 23:34:50 +01:00
Alejandro Celaya
3e9b775114 Fixed failing test 2019-12-06 22:45:15 +01:00
Alejandro Celaya
05a64b8d9e Ensured dates parsing does not mask actual validation errors 2019-12-06 22:38:22 +01:00
Alejandro Celaya
b9b3295b52 Ensured a specific exception is thrown from TagService when trying to rename a tag to the name of another tag which already exists 2019-12-06 20:44:41 +01:00
Alejandro Celaya
1bf56b658b Improved domain exception tests to cover more possible mutants 2019-12-01 10:24:42 +01:00
Alejandro Celaya
3cf1657d54 Simplified invalidElements to be a plain list of keys when a ValidationException is cast into a problem details error 2019-11-29 18:55:27 +01:00
Alejandro Celaya
5266743a0c Added as much additional data as possible to exceptions 2019-11-27 20:18:36 +01:00
Alejandro Celaya
a28ef1f176 Converted EntityDoesNotExistException into a problem details exception renamed as TagNotFoundException 2019-11-25 19:15:46 +01:00
Alejandro Celaya
0c5eec7e95 Replaced the use of EntityDoesNotExistException by ShorturlNotFoundException where applicable 2019-11-25 18:54:25 +01:00
Alejandro Celaya
32b3c72bdf Converted ValidationException into a problem details exception 2019-11-24 23:45:40 +01:00
Alejandro Celaya
c1eee2246b Converted NonUniqueSlugException into a problem details exception 2019-11-24 23:32:37 +01:00
Alejandro Celaya
0d7d53ab5b Converted InvalidUrlException into a problem details exception 2019-11-24 23:24:53 +01:00
Alejandro Celaya
2f1de4a162 Renamed InvalidShortCodeException to ShortCodeNotFoundException 2019-11-24 23:15:55 +01:00
Alejandro Celaya
09321eaa93 Updated InvalidShortCodeException to implement ProblemDetails 2019-11-23 13:41:07 +01:00
Alejandro Celaya
850259290a Covered new use case on NotFoundRedirectHandlerTest 2019-11-23 10:28:58 +01:00
Alejandro Celaya
1bafe54a75 Split NotFoundHandler into two different middlewares 2019-11-23 10:25:12 +01:00
Alejandro Celaya
89e373f775 Moved NotFoundHandler to ErrorHandler namespace 2019-11-23 10:11:34 +01:00
Alejandro Celaya
74854b3dac Added zend problem details to the project 2019-11-22 19:49:14 +01:00
Alejandro Celaya
6ddb60d047 Improved ValidationException to avoid polluting the message with invalid data but keeping it on the string representation 2019-11-21 20:07:57 +01:00
Alejandro Celaya
af0ed6135e Updated to latest doctrine versions, solving deprecations 2019-11-20 20:03:06 +01:00
Alejandro Celaya
45ac2c3c51 Replaced third party domains used in tests by custom shlink domains 2019-11-16 13:37:53 +01:00
Alejandro Celaya
6b8fc3228e Handled IDN domains also on internal redirections when validating a URL 2019-11-16 12:38:45 +01:00
Alejandro Celaya
19c1b29f59 Added tests for UrlValidator 2019-11-16 10:19:25 +01:00
Alejandro Celaya
705dc2ec39 Added forward of query string from short URLs to long one 2019-11-13 21:04:44 +01:00
Alejandro Celaya
d4005da35c Added workers nums handling to simplified config parser 2019-11-10 12:04:14 +01:00
Alejandro Celaya
9abaa243e0 Some extra minor improvements 2019-11-02 19:08:07 +01:00
Alejandro Celaya
906dfe60f8 Simplified code to render not-foubnd templates by infering the template to be used inside NotFoundHandler 2019-11-02 18:49:24 +01:00
Alejandro Celaya
01f60614ef Removed hardcoded route names for core routes and used action class names instead 2019-11-02 18:36:15 +01:00
Alejandro Celaya
eeb5306883 Moved all logic to redirect to specific URLs when a 404 is found to the NotFoundHandler 2019-11-02 18:33:26 +01:00
Alejandro Celaya
24c3a3e84c Defined new options for new redirect configuration 2019-11-02 17:23:21 +01:00
Alejandro Celaya
8b9663aea0 Created DeprecatedConfigParserTest 2019-11-02 17:04:49 +01:00
Alejandro Celaya
b59f4e2805 Defined new configs for not found redirects 2019-11-02 11:30:09 +01:00
Alejandro Celaya
f784ee5b28 Fixed unit tests 2019-10-22 19:52:28 +02:00
Alejandro Celaya
5bd7b53e0a Added more tests for new logics 2019-10-11 11:28:53 +02:00
Alejandro Celaya
9538f474de Added logic to check if a short code is in use and regenerate it otherwise 2019-10-11 11:09:33 +02:00
Alejandro Celaya
2f09ff456c Updated logic to generate random short codes, increasing entropy 2019-10-11 09:14:25 +02:00
Alejandro Celaya
e0d20bf8ff Updated to coding styles v2 2019-10-05 17:26:10 +02:00
Alejandro Celaya
636df2a736 Read request's authority when tracking a visit and passed it down 2019-10-04 21:36:54 +02:00
Alejandro Celaya
49c3c9bec1 Ensured domain is taken into account when looking for a short URL 2019-10-04 17:21:22 +02:00
Alejandro Celaya
fd1fe90731 Created tests for new domain resolvers 2019-10-01 22:00:46 +02:00
Alejandro Celaya
495643f4f1 Ensured domain is taken into account when checking if a slug is in use 2019-10-01 21:42:35 +02:00
Alejandro Celaya
8d74e0c3ff Fixed undefined-index errors in BasePathPrefixerTest 2019-09-13 20:46:49 +02:00
Alejandro Celaya
6e38457655 Created BasePathPrefixerTest 2019-09-13 20:17:30 +02:00
Alejandro Celaya
d7a3aeb0a2 Created a config prost-processor which adds the base path on every applicable configuration 2019-09-13 20:03:53 +02:00
Alejandro Celaya
7b0ccc9f69 Removed references to anything related with translations 2019-09-12 08:09:17 +02:00
Alejandro Celaya
56d0383170 Increased referer length to 1024 and ensured values are cropped before trying to insert in database 2019-08-24 10:25:43 +02:00
Alejandro Celaya
d767c415d1 Deleted local Common module and used external one 2019-08-12 18:34:52 +02:00
Alejandro Celaya
47ea4218d0 Created PreviewGenerator module 2019-08-11 19:38:46 +02:00
Alejandro Celaya
848d574f68 Moved too concrete class from Common to Core 2019-08-11 13:33:42 +02:00
Alejandro Celaya
53243d1764 Moved WrongIpException to IpGeolocation module 2019-08-10 23:26:39 +02:00
Alejandro Celaya
3520ab6b18 Moved Ip resolvers to the Resolver subnamespace 2019-08-10 13:56:06 +02:00
Alejandro Celaya
30314fd532 Moved all ip-geolocation related stuff to its own module 2019-08-10 13:43:52 +02:00
Alejandro Celaya
564b65c8ca Created ValidationExceptionTest 2019-08-08 16:20:37 +02:00
Alejandro Celaya
6b8ca3e611 Updated SimplifiedConfigParser so that it properly converts the redis_servers keys and aliases the store as a side effect 2019-08-07 18:45:28 +02:00
Alejandro Celaya
0f8dd1effb Added post processing mapping to define the lock store to be used 2019-08-07 16:16:53 +02:00
Alejandro Celaya
aff1df32f2 Updated to coding-standard library v1.2.2 2019-08-01 19:49:54 +02:00
Alejandro Celaya
a1c7e7d5da Updated tests 2019-07-20 12:11:07 +02:00
Alejandro Celaya
4380b62715 Fixed event handler not being properly registered as a service 2019-07-13 15:47:19 +02:00
Alejandro Celaya
91698034e7 Added event dispatcher to track when a short URL is visited 2019-07-13 12:04:21 +02:00
Alejandro Celaya
46a27a9d0a Added meta property to ShortUrlDataTransformer 2019-07-08 18:23:38 +02:00
Alejandro Celaya
479760c0ee Created config post processor that parses a simplified config to what shlink expects 2019-04-18 10:37:38 +02:00
Alejandro Celaya
734fdf83c1 Added test covering the case in which fetching existing short URLs, more than one result is found 2019-03-30 07:45:57 +01:00
Alejandro Celaya
2906d42f97 Updated how existing short URLs are checked, so that not only the first one matching the slug or url is checked 2019-03-30 07:36:57 +01:00
Alejandro Celaya
4b556cd79f Updated to shlinkio coding standard 1.1.0 2019-02-26 22:56:43 +01:00
Alejandro Celaya
312fc0984b Fixed mutation score by provideing more tests 2019-02-26 22:41:04 +01:00
Alejandro Celaya
30bf1c2641 Added tests for new cases with non-locatable addresses 2019-02-26 22:31:07 +01:00
Alejandro Celaya
2d1d7357a3 Given more semantic cases in which a visit cannot be located 2019-02-26 21:39:45 +01:00
Alejandro Celaya
d2fad0128f Fixed bug missing unprocessed visits while iterating and updating, while drastically improving the performance 2019-02-23 09:58:02 +01:00
Alejandro Celaya
292937b962 Updated VisitRepository::findUnlocatedVisits methods so that it paginates the amount of elements loaded in memory 2019-02-22 19:31:03 +01:00
Alejandro Celaya
38cc83a4ee Removed uneeded inline type hints 2019-02-17 20:32:18 +01:00
Alejandro Celaya
687a1cc9c7 Reduced amount of dead lines in tests 2019-02-17 20:28:34 +01:00
Alejandro Celaya
1bcd03b150 Renamed method 2019-02-17 13:21:07 +01:00
Alejandro Celaya
e2abe23895 Defined stricter model to represent one geo location 2019-02-17 13:01:21 +01:00
Alejandro Celaya
b8cb38ae5c Updated testing tools 2019-02-16 10:53:45 +01:00
Alejandro Celaya
2d18ef5cee Updated installer so that it no longer asks for a charset and instead just generates one 2019-02-03 13:02:12 +01:00
Alejandro Celaya
c4fd8d5120 Implemented feature to optionally return an existing short url when all provided params match an existing one 2019-02-03 09:40:32 +01:00
Alejandro Celaya
772494f46f Moved process of sluggifying custom slug to a filter 2019-02-03 08:17:27 +01:00
Alejandro Celaya
d61f5faf59 Refactored UrlShortener public method to receibe DTOs instead of primitive params 2019-02-02 11:05:28 +01:00
Alejandro Celaya
32070b1fa7 Do not use ServerRequestFactory::fromGlobals in tests 2018-12-25 23:19:36 +01:00
Alejandro Celaya
d7e89ebdae Ensured custom slugs are case sensitive 2018-12-01 21:38:29 +01:00
Alejandro Celaya
d0e0aea0f1 Updated visits to support pagination 2018-11-28 20:39:08 +01:00
Alejandro Celaya
45254606d4 Added DTO used to pass filtering params to VisitsTracker 2018-11-27 21:09:27 +01:00
Alejandro Celaya
5abd9d1a40 Made test properties to be private instead of protected 2018-11-20 19:37:22 +01:00
Alejandro Celaya
0ae5a53d86 Enforced property types comments in one line 2018-11-20 19:30:27 +01:00
Alejandro Celaya
f48f98f4d7 Updated changelog for v1.14.1 2018-11-17 19:27:00 +01:00
Alejandro Celaya
79b2a0839f Increased MSI to 65% 2018-11-17 19:23:49 +01:00
Alejandro Celaya
0aae0d888c Moved visits iteration logic from command to service to allow lazy loading of entries in resultset 2018-11-17 09:42:15 +01:00
Alejandro Celaya
c1906606c6 Updated VisitService to have a method which locates visits and allows entity manager to be cleared 2018-11-17 07:47:42 +01:00
Alejandro Celaya
fd6d180eba Created chainIpLocationResolver 2018-11-11 21:28:42 +01:00
Alejandro Celaya
313927827d Updated RedirectAction so that it makes use of the not found short url options 2018-11-03 12:10:02 +01:00
Alejandro Celaya
3eddacdff8 Created options to enable redirection to external page when short code is not found 2018-11-03 11:37:43 +01:00
Alejandro Celaya
f64920e510 Replaced some array_map by Functional\map 2018-11-02 12:05:01 +01:00
Alejandro Celaya
951d08f914 Improved public API in Visit entity, reducing anemic model 2018-10-28 16:20:54 +01:00
Alejandro Celaya
8e1e8ba7de Improved public API in ShortUrl entity, reducing anemic model 2018-10-28 16:00:54 +01:00
Alejandro Celaya
e046eddda9 Improved public API in VisitLocation entity, reducing anemic model 2018-10-28 15:13:45 +01:00
Alejandro Celaya
084b1169d7 Improved public API in Tag entity, avoiding anemic model 2018-10-28 14:38:43 +01:00
Alejandro Celaya
025135b8c6 Added all missing use statements from global functions and constants 2018-10-28 08:34:02 +01:00
Alejandro Celaya
77d810b735 Replaced all FQ global function and constants by explicit imports 2018-10-28 08:24:06 +01:00
Alejandro Celaya
44f0011445 Moved logic to create a visitor from a request to the visitor itself 2018-10-18 20:24:25 +02:00
Alejandro Celaya
545094cddf Used middleware from library to actually find visitor IP addresses 2018-10-18 20:19:29 +02:00
Alejandro Celaya
1e4de7fec4 Forced explicit string casting when hydrating a VisitLocation from an array 2018-10-16 18:25:03 +02:00
Alejandro Celaya
0183c8a4b7 Migrated from standard datetime objects to chronos objects 2018-09-29 12:52:32 +02:00
Alejandro Celaya
9651b3d692 Created command to delete short URLs 2018-09-15 17:57:12 +02:00
Alejandro Celaya
159529937d Created specific service to delete short URLs 2018-09-15 11:54:58 +02:00
Alejandro Celaya
07165f344f Normalized entities adding missing type hints and removing superfluous comments 2018-09-15 10:03:42 +02:00
Alejandro Celaya
a0c3b9412f Updated system to obfuscate IP addresses before persisting them 2018-09-13 22:36:28 +02:00
Alejandro Celaya
f3c92f4110 Updated short URL creation responses to include more information 2018-09-12 20:32:58 +02:00
Alejandro Celaya
c2dd5b8c47 Ensured same long URL can be used multiple times for different short URLs 2018-09-11 19:44:33 +02:00
Alejandro Celaya
563021bdc1 Updated resolve short url action to return all data for that short url 2018-08-11 10:40:44 +02:00
Alejandro Celaya
1437ff48ce Ensured all core actions log errors 2018-05-07 10:58:49 +02:00
Alejandro Celaya
210b08b61f Created PixelActionTest 2018-03-26 20:17:38 +02:00
Alejandro Celaya
a27b01b895 Fixed tests 2018-03-26 19:02:41 +02:00
Alejandro Celaya
16dd1838aa Updated to expressive 3 2018-03-26 18:49:28 +02:00
Alejandro Celaya
1e79969c3b Made visits not to be tracked if query param has been provided 2018-01-14 09:24:33 +01:00
Alejandro Celaya
7ba9eb8e2c Fixed coding styles 2018-01-07 20:08:07 +01:00
Alejandro Celaya
e8a0c5484c Added test for ShortUrlMeta 2018-01-07 20:07:12 +01:00
Alejandro Celaya
0521227127 Tested new method to update short URLs metadata 2018-01-07 20:00:21 +01:00
Alejandro Celaya
ede4525332 Refactored exceptions to properly use package exceptions 2017-12-30 21:35:26 +01:00
Alejandro Celaya
781ca39938 Fixed merge conflicts 2017-10-23 13:28:09 +02:00
Alejandro Celaya
af7c11665c Added max_visits field to short_urls 2017-10-22 09:00:32 +02:00
Alejandro Celaya
1f7a94794d Added option to provide custom slug when creating a short url 2017-10-21 17:19:02 +02:00
Alejandro Celaya
a3bbd06fe3 Updated UrlShortener so that it does not match a short code which is out of the validity dat erange 2017-10-21 11:58:20 +02:00
Mikolaj Gogula
297c88c334 Change variable name for validation enabled. 2017-10-17 11:44:30 +02:00
Mikolaj Gogula
fef5390a62 Codestyle fixes. 2017-10-17 11:35:32 +02:00
Mikolaj Gogula
08d18b1dc1 Codestyle fixes. 2017-10-17 11:33:11 +02:00
Mikolaj Gogula
18d9815e88 Added option for enable/disable URL Validation by response status code. 2017-10-17 11:03:12 +02:00
Alejandro Celaya
ea76092681 Ensured a generic template is used to render generic 404 errors, and a more specific one to render 'invalid short url' errors 2017-10-13 12:22:19 +02:00
Alejandro Celaya
c12e13dfd7 Created NotFoundDelegateTest 2017-10-13 12:02:00 +02:00
Alejandro Celaya
70264be8e7 Fixed coding styles 2017-10-12 11:29:11 +02:00
Alejandro Celaya
6208f6f0d5 Improved Exception management to be more specific 2017-10-12 11:28:45 +02:00
Alejandro Celaya
c422a14c5c Improved coding styles 2017-10-12 10:13:20 +02:00
Alejandro Celaya
286c24f8c0 Improved TagServiceTest 2017-07-15 12:09:25 +02:00
Alejandro Celaya
3e268e2012 Improved TagServiceTest 2017-07-15 09:05:02 +02:00
Alejandro Celaya
5c7962966d Created ListTagsActionTest 2017-07-07 13:28:58 +02:00
Alejandro Celaya
c37660f763 Created TagService 2017-07-07 12:49:41 +02:00
Alejandro Celaya
22c76df8e6 Migrated BodyParserMiddleware to psr-15 middleware 2017-03-25 09:22:00 +01:00
Alejandro Celaya
6c87436a96 Migrated QrCodeCacheMiddleware to psr-15 middleware 2017-03-24 23:34:17 +01:00
Alejandro Celaya
734dac9456 Migrated RedirectAction to psr-15 middleware 2017-03-24 23:24:11 +01:00
Alejandro Celaya
85ca366893 Migrated QrCodeAction to psr-15 middleware 2017-03-24 23:19:42 +01:00
Alejandro Celaya
46db736af8 Migrated PreviewAction to psr-15 middleware 2017-03-24 22:07:28 +01:00
Alejandro Celaya
7530048fbd Removed exception catch that used to return a 500, and now returns a 404 due to a behavior change 2017-03-24 21:59:45 +01:00
Alejandro Celaya
0e2a289f9f Updated to phpunit 6 2017-03-24 20:34:18 +01:00
Alejandro Celaya
4185015bef Improved tests 2016-08-21 18:15:25 +02:00
Alejandro Celaya
4615bbaaf7 CreatedPreviewActionTest 2016-08-18 17:23:40 +02:00
Alejandro Celaya
5ca4bc928d Created specific factory for AppOptions to prevent circular dependency with cache 2016-08-15 23:40:49 +02:00
Alejandro Celaya
12410e82d8 Created tests for QrCode middlewares 2016-08-09 14:18:20 +02:00
Alejandro Celaya
8eb279fd28 Updated UrlShortener to namespace the cache entries 2016-08-09 13:32:33 +02:00
Alejandro Celaya
7c5d8cf244 Fixed VisitsTracker to take into account the X-Forwarded-For header in case the server is behind a load balabncer or proxy 2016-08-09 09:13:39 +02:00
Alejandro Celaya
73a236b3d0 Updated VisitsTracker so that the track method expects a Request object to be provided 2016-08-09 08:52:06 +02:00
Alejandro Celaya
f49e9064cd Added cache adapter to the UrlShortener service to cache shortcode-url maps 2016-08-08 10:02:52 +02:00
Alejandro Celaya
a957f66ed0 Renamed services first level config key to dependencies 2016-07-31 16:30:05 +02:00
Alejandro Celaya
8c446f0f3b Created Core\ConfigProviderTest 2016-07-30 23:07:44 +02:00
Alejandro Celaya
9c6420fe26 Created VisitServiceTest 2016-07-30 23:01:07 +02:00
Alejandro Celaya
ce4877d4ac Improved VisitsTrackerTest 2016-07-30 22:55:28 +02:00
Alejandro Celaya
ebeaa3c64a Created RedirectActionTest 2016-07-30 20:02:48 +02:00
Alejandro Celaya
d39a949992 Fixed wrong exception name 2016-07-20 19:04:38 +02:00
Alejandro Celaya
fe8ef2030f Fixed elements broken on module separation 2016-07-19 18:05:06 +02:00
Alejandro Celaya
ab9c2f728a Created Core module 2016-07-19 18:01:39 +02:00