Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
100.00% |
26 / 26 |
|
100.00% |
3 / 3 |
CRAP | |
100.00% |
1 / 1 |
ArchivedRevisionHandler | |
100.00% |
26 / 26 |
|
100.00% |
3 / 3 |
5 | |
100.00% |
1 / 1 |
__construct | |
100.00% |
10 / 10 |
|
100.00% |
1 / 1 |
1 | |||
factory | |
100.00% |
10 / 10 |
|
100.00% |
1 / 1 |
1 | |||
getRevision | |
100.00% |
6 / 6 |
|
100.00% |
1 / 1 |
3 |
1 | <?php |
2 | |
3 | namespace MediaWiki\IPInfo\Rest\Handler; |
4 | |
5 | use JobQueueGroup; |
6 | use MediaWiki\IPInfo\InfoManager; |
7 | use MediaWiki\IPInfo\Rest\Presenter\DefaultPresenter; |
8 | use MediaWiki\Languages\LanguageFallback; |
9 | use MediaWiki\Permissions\PermissionManager; |
10 | use MediaWiki\Rest\LocalizedHttpException; |
11 | use MediaWiki\Revision\ArchivedRevisionLookup; |
12 | use MediaWiki\Revision\RevisionRecord; |
13 | use MediaWiki\User\Options\UserOptionsLookup; |
14 | use MediaWiki\User\UserFactory; |
15 | use Wikimedia\Message\MessageValue; |
16 | |
17 | class ArchivedRevisionHandler extends AbstractRevisionHandler { |
18 | |
19 | private ArchivedRevisionLookup $archivedRevisionLookup; |
20 | |
21 | public function __construct( |
22 | InfoManager $infoManager, |
23 | ArchivedRevisionLookup $archivedRevisionLookup, |
24 | PermissionManager $permissionManager, |
25 | UserOptionsLookup $userOptionsLookup, |
26 | UserFactory $userFactory, |
27 | DefaultPresenter $presenter, |
28 | JobQueueGroup $jobQueueGroup, |
29 | LanguageFallback $languageFallback |
30 | ) { |
31 | parent::__construct( |
32 | $infoManager, |
33 | $permissionManager, |
34 | $userOptionsLookup, |
35 | $userFactory, |
36 | $presenter, |
37 | $jobQueueGroup, |
38 | $languageFallback |
39 | ); |
40 | $this->archivedRevisionLookup = $archivedRevisionLookup; |
41 | } |
42 | |
43 | /** |
44 | * @param InfoManager $infoManager |
45 | * @param ArchivedRevisionLookup $archivedRevisionLookup |
46 | * @param PermissionManager $permissionManager |
47 | * @param UserOptionsLookup $userOptionsLookup |
48 | * @param UserFactory $userFactory |
49 | * @param JobQueueGroup $jobQueueGroup |
50 | * @param LanguageFallback $languageFallback |
51 | * @return self |
52 | */ |
53 | public static function factory( |
54 | InfoManager $infoManager, |
55 | ArchivedRevisionLookup $archivedRevisionLookup, |
56 | PermissionManager $permissionManager, |
57 | UserOptionsLookup $userOptionsLookup, |
58 | UserFactory $userFactory, |
59 | JobQueueGroup $jobQueueGroup, |
60 | LanguageFallback $languageFallback |
61 | ) { |
62 | return new self( |
63 | $infoManager, |
64 | $archivedRevisionLookup, |
65 | $permissionManager, |
66 | $userOptionsLookup, |
67 | $userFactory, |
68 | new DefaultPresenter( $permissionManager ), |
69 | $jobQueueGroup, |
70 | $languageFallback |
71 | ); |
72 | } |
73 | |
74 | /** @inheritDoc */ |
75 | protected function getRevision( int $id ): ?RevisionRecord { |
76 | if ( !$this->permissionManager->userHasRight( $this->getAuthority()->getUser(), 'deletedhistory' ) ) { |
77 | throw new LocalizedHttpException( |
78 | new MessageValue( 'ipinfo-rest-access-denied' ), |
79 | $this->getAuthority()->getUser()->isRegistered() ? 403 : 401 |
80 | ); |
81 | } |
82 | |
83 | return $this->archivedRevisionLookup->getArchivedRevisionRecord( null, $id ); |
84 | } |
85 | } |