From e3d89f807c3ea9bbb71fdbb2dd74c5e5b16d4ed8 Mon Sep 17 00:00:00 2001 From: eduardevdokimov Date: Fri, 25 Nov 2022 11:43:53 +0300 Subject: [PATCH 1/7] LEARN-POEMS-T-36 Add mobile-sections endpoint --- README.md | 16 +++++- src/DTO/Responses/Mobile/GetMobile.php | 12 +++++ src/DTO/Responses/Mobile/GetMobileImage.php | 12 +++++ .../Mobile/GetMobileLastModifier.php | 12 +++++ src/DTO/Responses/Mobile/GetMobileLead.php | 50 +++++++++++++++++++ .../Mobile/GetMobilePronunciation.php | 10 ++++ .../Responses/Mobile/GetMobileProtection.php | 12 +++++ .../Responses/Mobile/GetMobileRemaining.php | 16 ++++++ .../Responses/Mobile/GetMobileSections.php | 20 ++++++++ src/DTO/Responses/Mobile/GetMobileSpoken.php | 10 ++++ src/MediaWiki.php | 11 ++++ src/Resources/WikiMedia/MobileResource.php | 25 ++++++++++ tests/Resources/MobileResourceTest.php | 37 ++++++++++++++ 13 files changed, 242 insertions(+), 1 deletion(-) create mode 100644 src/DTO/Responses/Mobile/GetMobile.php create mode 100644 src/DTO/Responses/Mobile/GetMobileImage.php create mode 100644 src/DTO/Responses/Mobile/GetMobileLastModifier.php create mode 100644 src/DTO/Responses/Mobile/GetMobileLead.php create mode 100644 src/DTO/Responses/Mobile/GetMobilePronunciation.php create mode 100644 src/DTO/Responses/Mobile/GetMobileProtection.php create mode 100644 src/DTO/Responses/Mobile/GetMobileRemaining.php create mode 100644 src/DTO/Responses/Mobile/GetMobileSections.php create mode 100644 src/DTO/Responses/Mobile/GetMobileSpoken.php create mode 100644 src/Resources/WikiMedia/MobileResource.php create mode 100644 tests/Resources/MobileResourceTest.php diff --git a/README.md b/README.md index 57f1da8..9252a15 100644 --- a/README.md +++ b/README.md @@ -75,7 +75,8 @@ COMMONS_HOST="https://commons.wikimedia.org/" * pageContent * getPageSummary * getPageTitle -* mobile - @ToDo +* mobile + * getSections * feed - @ToDo * transforms - @ToDo * math - @ToDo @@ -287,6 +288,19 @@ You can use this action for a typeahead search that automatically suggests relev $res = $wiki->pageContent()->getTitle($params); ``` +### Mobile + +#### getSections + +Retrieve the latest HTML for a page title optimised for viewing with native mobile applications. +Note that the output is split by sections. + +```php + $wiki = new MediaWiki(); + $params = ['title' => 'Jupiter']; + $res = $wiki->mobile()->getSections($params); +``` + ## Request parameters validation For validation the package use `spatie/data-transfer-object` and `ekut/spatie-dto-validators`. diff --git a/src/DTO/Responses/Mobile/GetMobile.php b/src/DTO/Responses/Mobile/GetMobile.php new file mode 100644 index 0000000..a659e02 --- /dev/null +++ b/src/DTO/Responses/Mobile/GetMobile.php @@ -0,0 +1,12 @@ +search; } + public function mobile(): MobileResource + { + if (is_null($this->mobile)) { + $this->mobile = new MobileResource($this->lang); + } + + return $this->mobile; + } + /** * @throws MediaWikiException */ diff --git a/src/Resources/WikiMedia/MobileResource.php b/src/Resources/WikiMedia/MobileResource.php new file mode 100644 index 0000000..9aa54a4 --- /dev/null +++ b/src/Resources/WikiMedia/MobileResource.php @@ -0,0 +1,25 @@ +validateParams(PageRequest::class, $params); + + $url = "page/mobile-sections/{$params['title']}"; + + return $this->adapter->handle('get', $url, GetMobile::class); + } +} diff --git a/tests/Resources/MobileResourceTest.php b/tests/Resources/MobileResourceTest.php new file mode 100644 index 0000000..c2723e8 --- /dev/null +++ b/tests/Resources/MobileResourceTest.php @@ -0,0 +1,37 @@ +wiki = new MediaWiki(); + + parent::setUp(); + } + + public function testGetSections(): void + { + $params = ['title' => 'Jupiter']; + + $response = $this->wiki->mobile()->getSections($params); + + $this->assertInstanceOf(GetMobile::class, $response); + } + + public function testGetSectionsNotFound(): void + { + $params = ['title' => 'hflk;aHF']; + $this->expectException(MediaWikiException::class); + $this->expectExceptionCode(404); + $this->expectExceptionMessage('Page or revision not found.'); + + $this->wiki->mobile()->getSections($params); + } +} From 6af49ac8cb631e7eab585d12392aa18cc4ac6acc Mon Sep 17 00:00:00 2001 From: eduardevdokimov Date: Sun, 27 Nov 2022 10:18:06 +0300 Subject: [PATCH 2/7] LEARN-POEMS-T-36 Add /page/mobile-sections/{title}/{revision} endpoint --- README.md | 12 +++++++++--- src/DTO/Requests/PageRequestWithRevision.php | 14 ++++++++++++++ src/Resources/WikiMedia/MobileResource.php | 14 ++++++++++++++ tests/Resources/MobileResourceTest.php | 18 ++++++++++++++++++ 4 files changed, 55 insertions(+), 3 deletions(-) create mode 100644 src/DTO/Requests/PageRequestWithRevision.php diff --git a/README.md b/README.md index 9252a15..0412d3a 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ COMMONS_HOST="https://commons.wikimedia.org/" * getPageTitle * mobile * getSections + * getSectionsByRevision * feed - @ToDo * transforms - @ToDo * math - @ToDo @@ -292,15 +293,20 @@ You can use this action for a typeahead search that automatically suggests relev #### getSections -Retrieve the latest HTML for a page title optimised for viewing with native mobile applications. -Note that the output is split by sections. - ```php $wiki = new MediaWiki(); $params = ['title' => 'Jupiter']; $res = $wiki->mobile()->getSections($params); ``` +#### getSectionsByRevision + +```php + $wiki = new MediaWiki(); + $params = ['title' => 'Jupiter', 'revision' => 1124023924]; + $res = $wiki->mobile()->getSectionsByRevision($params); +``` + ## Request parameters validation For validation the package use `spatie/data-transfer-object` and `ekut/spatie-dto-validators`. diff --git a/src/DTO/Requests/PageRequestWithRevision.php b/src/DTO/Requests/PageRequestWithRevision.php new file mode 100644 index 0000000..6f612b3 --- /dev/null +++ b/src/DTO/Requests/PageRequestWithRevision.php @@ -0,0 +1,14 @@ +adapter->handle('get', $url, GetMobile::class); } + + /** + * @throws MediaWikiException + * @throws JsonException + */ + public function getSectionsByRevision(array $params): mixed + { + $this->validateParams(PageRequestWithRevision::class, $params); + + $url = "page/mobile-sections/{$params['title']}/{$params['revision']}"; + + return $this->adapter->handle('get', $url, GetMobile::class); + } } diff --git a/tests/Resources/MobileResourceTest.php b/tests/Resources/MobileResourceTest.php index c2723e8..ab841bb 100644 --- a/tests/Resources/MobileResourceTest.php +++ b/tests/Resources/MobileResourceTest.php @@ -34,4 +34,22 @@ public function testGetSectionsNotFound(): void $this->wiki->mobile()->getSections($params); } + + public function testGetSectionsByRevision(): void + { + $params = ['title' => 'Jupiter', 'revision' => 1124023924]; + + $response = $this->wiki->mobile()->getSectionsByRevision($params); + + $this->assertInstanceOf(GetMobile::class, $response); + } + + public function testGetSectionsByRevisionNotFound(): void + { + $params = ['title' => 'hflk;aHF', 'revision' => 123]; + $this->expectException(MediaWikiException::class); + $this->expectExceptionCode(404); + + $this->wiki->mobile()->getSectionsByRevision($params); + } } From e1bc86bbeeeac7f19ba35dd901abefb3609d262d Mon Sep 17 00:00:00 2001 From: eduardevdokimov Date: Sun, 27 Nov 2022 10:32:29 +0300 Subject: [PATCH 3/7] LEARN-POEMS-T-36 Add /page/mobile-sections-lead/{title} endpoint --- README.md | 9 +++++++++ src/Resources/WikiMedia/MobileResource.php | 14 ++++++++++++++ tests/Resources/MobileResourceTest.php | 20 ++++++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/README.md b/README.md index 0412d3a..e68216e 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ COMMONS_HOST="https://commons.wikimedia.org/" * mobile * getSections * getSectionsByRevision + * getSectionsLead * feed - @ToDo * transforms - @ToDo * math - @ToDo @@ -307,6 +308,14 @@ You can use this action for a typeahead search that automatically suggests relev $res = $wiki->mobile()->getSectionsByRevision($params); ``` +#### getSectionsLead + +```php + $wiki = new MediaWiki(); + $params = ['title' => 'Jupiter']; + $res = $wiki->mobile()->getSectionsLead($params); +``` + ## Request parameters validation For validation the package use `spatie/data-transfer-object` and `ekut/spatie-dto-validators`. diff --git a/src/Resources/WikiMedia/MobileResource.php b/src/Resources/WikiMedia/MobileResource.php index d44d228..e3c7161 100644 --- a/src/Resources/WikiMedia/MobileResource.php +++ b/src/Resources/WikiMedia/MobileResource.php @@ -6,6 +6,7 @@ use MediawikiSdkPhp\DTO\Requests\PageRequest; use MediawikiSdkPhp\DTO\Requests\PageRequestWithRevision; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobile; +use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileLead; use MediawikiSdkPhp\Exceptions\MediaWikiException; use MediawikiSdkPhp\Resources\AbstractWikiMediaResource; @@ -36,4 +37,17 @@ public function getSectionsByRevision(array $params): mixed return $this->adapter->handle('get', $url, GetMobile::class); } + + /** + * @throws MediaWikiException + * @throws JsonException + */ + public function getSectionsLead(array $params): mixed + { + $this->validateParams(PageRequest::class, $params); + + $url = "page/mobile-sections-lead/{$params['title']}"; + + return $this->adapter->handle('get', $url, GetMobileLead::class); + } } diff --git a/tests/Resources/MobileResourceTest.php b/tests/Resources/MobileResourceTest.php index ab841bb..b02b0c7 100644 --- a/tests/Resources/MobileResourceTest.php +++ b/tests/Resources/MobileResourceTest.php @@ -3,6 +3,7 @@ namespace Resources; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobile; +use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileLead; use MediawikiSdkPhp\Exceptions\MediaWikiException; use MediawikiSdkPhp\MediaWiki; use PHPUnit\Framework\TestCase; @@ -52,4 +53,23 @@ public function testGetSectionsByRevisionNotFound(): void $this->wiki->mobile()->getSectionsByRevision($params); } + + public function testGetSectionsLead(): void + { + $params = ['title' => 'Jupiter']; + + $response = $this->wiki->mobile()->getSectionsLead($params); + + $this->assertInstanceOf(GetMobileLead::class, $response); + } + + public function testGetSectionsLeadNotFound(): void + { + $params = ['title' => 'hflk;aHF']; + $this->expectException(MediaWikiException::class); + $this->expectExceptionCode(404); + $this->expectExceptionMessage('Page or revision not found.'); + + $this->wiki->mobile()->getSectionsLead($params); + } } From 25fc49db3cb5ee4a8db7d398336ab03ab89dcc86 Mon Sep 17 00:00:00 2001 From: eduardevdokimov Date: Sun, 27 Nov 2022 10:42:08 +0300 Subject: [PATCH 4/7] LEARN-POEMS-T-36 Add /page/mobile-sections-lead/{title}/{revision} endpoint --- README.md | 9 +++++++++ src/Resources/WikiMedia/MobileResource.php | 13 +++++++++++++ tests/Resources/MobileResourceTest.php | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/README.md b/README.md index e68216e..aee1cd3 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ COMMONS_HOST="https://commons.wikimedia.org/" * getSections * getSectionsByRevision * getSectionsLead + * getSectionsLeadByRevision * feed - @ToDo * transforms - @ToDo * math - @ToDo @@ -316,6 +317,14 @@ You can use this action for a typeahead search that automatically suggests relev $res = $wiki->mobile()->getSectionsLead($params); ``` +#### getSectionsLeadByRevision + +```php + $wiki = new MediaWiki(); + $params = ['title' => 'Jupiter', 'revision' => 1124023924]; + $res = $wiki->mobile()->getSectionsLeadByRevision($params); +``` + ## Request parameters validation For validation the package use `spatie/data-transfer-object` and `ekut/spatie-dto-validators`. diff --git a/src/Resources/WikiMedia/MobileResource.php b/src/Resources/WikiMedia/MobileResource.php index e3c7161..980305e 100644 --- a/src/Resources/WikiMedia/MobileResource.php +++ b/src/Resources/WikiMedia/MobileResource.php @@ -50,4 +50,17 @@ public function getSectionsLead(array $params): mixed return $this->adapter->handle('get', $url, GetMobileLead::class); } + + /** + * @throws MediaWikiException + * @throws JsonException + */ + public function getSectionsLeadByRevision(array $params): mixed + { + $this->validateParams(PageRequestWithRevision::class, $params); + + $url = "page/mobile-sections-lead/{$params['title']}/{$params['revision']}"; + + return $this->adapter->handle('get', $url, GetMobileLead::class); + } } diff --git a/tests/Resources/MobileResourceTest.php b/tests/Resources/MobileResourceTest.php index b02b0c7..0133b3f 100644 --- a/tests/Resources/MobileResourceTest.php +++ b/tests/Resources/MobileResourceTest.php @@ -72,4 +72,22 @@ public function testGetSectionsLeadNotFound(): void $this->wiki->mobile()->getSectionsLead($params); } + + public function testGetSectionsLeadByRevision(): void + { + $params = ['title' => 'Jupiter', 'revision' => 1124023924]; + + $response = $this->wiki->mobile()->getSectionsLeadByRevision($params); + + $this->assertInstanceOf(GetMobileLead::class, $response); + } + + public function testGetSectionsLeadByRevisionNotFound(): void + { + $params = ['title' => 'hflk;aHF', 'revision' => 123]; + $this->expectException(MediaWikiException::class); + $this->expectExceptionCode(404); + + $this->wiki->mobile()->getSectionsLeadByRevision($params); + } } From d5e5880e80f660c794e28061a1e9f22ca26c857a Mon Sep 17 00:00:00 2001 From: eduardevdokimov Date: Sun, 27 Nov 2022 11:15:09 +0300 Subject: [PATCH 5/7] LEARN-POEMS-T-36 Add /page/mobile-sections-remaining/{title} endpoint --- README.md | 9 +++++++++ src/DTO/Requests/PageRequestWithRevision.php | 5 +---- src/Resources/WikiMedia/MobileResource.php | 14 ++++++++++++++ tests/Resources/MobileResourceTest.php | 20 ++++++++++++++++++++ 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index aee1cd3..4e6fbb1 100644 --- a/README.md +++ b/README.md @@ -80,6 +80,7 @@ COMMONS_HOST="https://commons.wikimedia.org/" * getSectionsByRevision * getSectionsLead * getSectionsLeadByRevision + * getSectionsRemaining * feed - @ToDo * transforms - @ToDo * math - @ToDo @@ -325,6 +326,14 @@ You can use this action for a typeahead search that automatically suggests relev $res = $wiki->mobile()->getSectionsLeadByRevision($params); ``` +#### getSectionsRemaining + +```php + $wiki = new MediaWiki(); + $params = ['title' => 'Jupiter']; + $res = $wiki->mobile()->getSectionsRemaining($params); +``` + ## Request parameters validation For validation the package use `spatie/data-transfer-object` and `ekut/spatie-dto-validators`. diff --git a/src/DTO/Requests/PageRequestWithRevision.php b/src/DTO/Requests/PageRequestWithRevision.php index 6f612b3..9e7dd30 100644 --- a/src/DTO/Requests/PageRequestWithRevision.php +++ b/src/DTO/Requests/PageRequestWithRevision.php @@ -3,12 +3,9 @@ namespace MediawikiSdkPhp\DTO\Requests; use Spatie\DataTransferObject\Attributes\Strict; -use Spatie\DataTransferObject\DataTransferObject; #[Strict] -class PageRequestWithRevision extends DataTransferObject +class PageRequestWithRevision extends PageRequest { - public string $title; - public int $revision; } diff --git a/src/Resources/WikiMedia/MobileResource.php b/src/Resources/WikiMedia/MobileResource.php index 980305e..826abf1 100644 --- a/src/Resources/WikiMedia/MobileResource.php +++ b/src/Resources/WikiMedia/MobileResource.php @@ -7,6 +7,7 @@ use MediawikiSdkPhp\DTO\Requests\PageRequestWithRevision; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobile; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileLead; +use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileRemaining; use MediawikiSdkPhp\Exceptions\MediaWikiException; use MediawikiSdkPhp\Resources\AbstractWikiMediaResource; @@ -63,4 +64,17 @@ public function getSectionsLeadByRevision(array $params): mixed return $this->adapter->handle('get', $url, GetMobileLead::class); } + + /** + * @throws MediaWikiException + * @throws JsonException + */ + public function getSectionsRemaining(array $params): mixed + { + $this->validateParams(PageRequest::class, $params); + + $url = "page/mobile-sections-remaining/{$params['title']}"; + + return $this->adapter->handle('get', $url, GetMobileRemaining::class); + } } diff --git a/tests/Resources/MobileResourceTest.php b/tests/Resources/MobileResourceTest.php index 0133b3f..a924fe0 100644 --- a/tests/Resources/MobileResourceTest.php +++ b/tests/Resources/MobileResourceTest.php @@ -4,6 +4,7 @@ use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobile; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileLead; +use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileRemaining; use MediawikiSdkPhp\Exceptions\MediaWikiException; use MediawikiSdkPhp\MediaWiki; use PHPUnit\Framework\TestCase; @@ -90,4 +91,23 @@ public function testGetSectionsLeadByRevisionNotFound(): void $this->wiki->mobile()->getSectionsLeadByRevision($params); } + + public function testGetSectionsRemaining(): void + { + $params = ['title' => 'Jupiter']; + + $response = $this->wiki->mobile()->getSectionsRemaining($params); + + $this->assertInstanceOf(GetMobileRemaining::class, $response); + } + + public function testGetSectionsRemainingNotFound(): void + { + $params = ['title' => 'hflk;aHF']; + $this->expectException(MediaWikiException::class); + $this->expectExceptionCode(404); + $this->expectExceptionMessage('Page or revision not found.'); + + $this->wiki->mobile()->getSectionsRemaining($params); + } } From 70823170a00433cbd8afd54fe85c8e35d549e0ab Mon Sep 17 00:00:00 2001 From: eduardevdokimov Date: Sun, 27 Nov 2022 11:24:01 +0300 Subject: [PATCH 6/7] LEARN-POEMS-T-36 Add /page/mobile-sections-remaining/{title}/{revision} endpoint --- README.md | 9 +++++++++ src/Resources/WikiMedia/MobileResource.php | 13 +++++++++++++ tests/Resources/MobileResourceTest.php | 18 ++++++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/README.md b/README.md index 4e6fbb1..bf7c075 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ COMMONS_HOST="https://commons.wikimedia.org/" * getSectionsLead * getSectionsLeadByRevision * getSectionsRemaining + * getSectionsRemainingByRevision * feed - @ToDo * transforms - @ToDo * math - @ToDo @@ -334,6 +335,14 @@ You can use this action for a typeahead search that automatically suggests relev $res = $wiki->mobile()->getSectionsRemaining($params); ``` +#### getSectionsRemainingByRevision + +```php + $wiki = new MediaWiki(); + $params = ['title' => 'Jupiter', 'revision' => 1124023924]; + $res = $wiki->mobile()->getSectionsRemainingByRevision($params); +``` + ## Request parameters validation For validation the package use `spatie/data-transfer-object` and `ekut/spatie-dto-validators`. diff --git a/src/Resources/WikiMedia/MobileResource.php b/src/Resources/WikiMedia/MobileResource.php index 826abf1..d7689d6 100644 --- a/src/Resources/WikiMedia/MobileResource.php +++ b/src/Resources/WikiMedia/MobileResource.php @@ -77,4 +77,17 @@ public function getSectionsRemaining(array $params): mixed return $this->adapter->handle('get', $url, GetMobileRemaining::class); } + + /** + * @throws MediaWikiException + * @throws JsonException + */ + public function getSectionsRemainingByRevision(array $params): mixed + { + $this->validateParams(PageRequestWithRevision::class, $params); + + $url = "page/mobile-sections-remaining/{$params['title']}/{$params['revision']}"; + + return $this->adapter->handle('get', $url, GetMobileRemaining::class); + } } diff --git a/tests/Resources/MobileResourceTest.php b/tests/Resources/MobileResourceTest.php index a924fe0..c00c1a4 100644 --- a/tests/Resources/MobileResourceTest.php +++ b/tests/Resources/MobileResourceTest.php @@ -110,4 +110,22 @@ public function testGetSectionsRemainingNotFound(): void $this->wiki->mobile()->getSectionsRemaining($params); } + + public function testGetSectionsRemainingByRevision(): void + { + $params = ['title' => 'Jupiter', 'revision' => 1124023924]; + + $response = $this->wiki->mobile()->getSectionsRemainingByRevision($params); + + $this->assertInstanceOf(GetMobileRemaining::class, $response); + } + + public function testGetSectionsRemainingByRevisionNotFound(): void + { + $params = ['title' => 'hflk;aHF', 'revision' => 123]; + $this->expectException(MediaWikiException::class); + $this->expectExceptionCode(404); + + $this->wiki->mobile()->getSectionsRemainingByRevision($params); + } } From 5d26b225cd08b8d150bf3aac2e860e8cdc1ea541 Mon Sep 17 00:00:00 2001 From: eduardevdokimov Date: Sun, 27 Nov 2022 16:27:42 +0300 Subject: [PATCH 7/7] LEARN-POEMS-T-36 Add /data/i18n/mobile/{type} endpoint --- README.md | 9 ++ src/DTO/Requests/GetI18nRequest.php | 12 +++ ...vision.php => PageWithRevisionRequest.php} | 2 +- src/DTO/Responses/Mobile/GetI18n.php | 18 ++++ src/DTO/Responses/Mobile/GetI18nMessage.php | 84 +++++++++++++++++++ src/DTO/Responses/Mobile/GetMobileLead.php | 4 +- .../Responses/Mobile/GetMobileRemaining.php | 4 +- ...obileSections.php => GetMobileSection.php} | 2 +- src/Resources/WikiMedia/MobileResource.php | 23 ++++- tests/Resources/MobileResourceTest.php | 10 +++ 10 files changed, 158 insertions(+), 10 deletions(-) create mode 100644 src/DTO/Requests/GetI18nRequest.php rename src/DTO/Requests/{PageRequestWithRevision.php => PageWithRevisionRequest.php} (73%) create mode 100644 src/DTO/Responses/Mobile/GetI18n.php create mode 100644 src/DTO/Responses/Mobile/GetI18nMessage.php rename src/DTO/Responses/Mobile/{GetMobileSections.php => GetMobileSection.php} (84%) diff --git a/README.md b/README.md index bf7c075..51c8a3c 100644 --- a/README.md +++ b/README.md @@ -82,6 +82,7 @@ COMMONS_HOST="https://commons.wikimedia.org/" * getSectionsLeadByRevision * getSectionsRemaining * getSectionsRemainingByRevision + * getI18n * feed - @ToDo * transforms - @ToDo * math - @ToDo @@ -343,6 +344,14 @@ You can use this action for a typeahead search that automatically suggests relev $res = $wiki->mobile()->getSectionsRemainingByRevision($params); ``` +#### getI18n + +```php + $wiki = new MediaWiki(); + $params = ['type' => 'pcs']; + $res = $wiki->mobile()->getI18n($params); +``` + ## Request parameters validation For validation the package use `spatie/data-transfer-object` and `ekut/spatie-dto-validators`. diff --git a/src/DTO/Requests/GetI18nRequest.php b/src/DTO/Requests/GetI18nRequest.php new file mode 100644 index 0000000..c4f6965 --- /dev/null +++ b/src/DTO/Requests/GetI18nRequest.php @@ -0,0 +1,12 @@ +validateParams(PageRequestWithRevision::class, $params); + $this->validateParams(PageWithRevisionRequest::class, $params); $url = "page/mobile-sections/{$params['title']}/{$params['revision']}"; @@ -58,7 +60,7 @@ public function getSectionsLead(array $params): mixed */ public function getSectionsLeadByRevision(array $params): mixed { - $this->validateParams(PageRequestWithRevision::class, $params); + $this->validateParams(PageWithRevisionRequest::class, $params); $url = "page/mobile-sections-lead/{$params['title']}/{$params['revision']}"; @@ -84,10 +86,23 @@ public function getSectionsRemaining(array $params): mixed */ public function getSectionsRemainingByRevision(array $params): mixed { - $this->validateParams(PageRequestWithRevision::class, $params); + $this->validateParams(PageWithRevisionRequest::class, $params); $url = "page/mobile-sections-remaining/{$params['title']}/{$params['revision']}"; return $this->adapter->handle('get', $url, GetMobileRemaining::class); } + + /** + * @throws MediaWikiException + * @throws JsonException + */ + public function getI18n(array $params): mixed + { + $this->validateParams(GetI18nRequest::class, $params); + + $url = "data/i18n/{$params['type']}"; + + return $this->adapter->handle('get', $url, GetI18n::class); + } } diff --git a/tests/Resources/MobileResourceTest.php b/tests/Resources/MobileResourceTest.php index c00c1a4..46f2158 100644 --- a/tests/Resources/MobileResourceTest.php +++ b/tests/Resources/MobileResourceTest.php @@ -2,6 +2,7 @@ namespace Resources; +use MediawikiSdkPhp\DTO\Responses\Mobile\GetI18n; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobile; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileLead; use MediawikiSdkPhp\DTO\Responses\Mobile\GetMobileRemaining; @@ -128,4 +129,13 @@ public function testGetSectionsRemainingByRevisionNotFound(): void $this->wiki->mobile()->getSectionsRemainingByRevision($params); } + + public function testGetI18n(): void + { + $params = ['type' => 'pcs']; + + $response = $this->wiki->mobile()->getI18n($params); + + $this->assertInstanceOf(GetI18n::class, $response); + } }