Merge pull request #293 from jonnybarnes/develop

MTM Mentions Improvements
This commit is contained in:
Jonny Barnes 2022-07-09 12:03:07 +01:00 • committed by GitHub
commit 9c059f822f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
129 changed files with 2091 additions and 2056 deletions

12
.github/dependabot.yml vendored Normal file
View file

@ -0,0 +1,12 @@
version: 2
updates:
- package-ecosystem: "composer"
directory: "/"
schedule:
interval: "daily"
- package-ecosystem: "npm"
directory: "/"
schedule:
interval: "daily"

68
.github/workflows/phpunit.yml vendored Normal file
View file

@ -0,0 +1,68 @@
name: PHP Unit
on:
pull_request:
jobs:
phpunit:
runs-on: ubuntu-latest
name: PHPUnit test suite
services:
postgres:
image: postgres:latest
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: jbukdev_testing
ports:
- 5432:5432
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Install Node and dependencies
uses: actions/setup-node@v3
with:
node-version: 18
cache: 'npm'
- run: npm ci
- name: Setup PHP with pecl extensions
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
extensions: phpredis,imagick
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.github', '.env');"
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Install Composer Dependencies
run: composer install --quiet --no-ansi --no-interaction --no-progress
- name: Generate Key
run: php artisan key:generate
- name: Setup Directory Permissions
run: chmod -R 777 storage bootstrap/cache
- name: Setup Database
run: php artisan migrate
- name: Execute PHPUnit Tests
run: vendor/bin/phpunit

38
.github/workflows/pint.yml vendored Normal file
View file

@ -0,0 +1,38 @@
name: Laravel Pint
on:
pull_request:
jobs:
pint:
runs-on: ubuntu-latest
name: Laravel Pint
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup PHP with pecl extensions
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
- name: Get Composer Cache Directory
id: composer-cache
run: |
echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache composer dependencies
uses: actions/cache@v3
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: |
${{ runner.os }}-composer-
- name: Install Composer Dependencies
run: composer install --quiet --no-ansi --no-interaction --no-progress
- name: Check Files with Laravel Pint
run: vendor/bin/pint --test

View file

@ -1,49 +0,0 @@
name: Run Tests
on:
pull_request:
jobs:
phpunit:
runs-on: ubuntu-20.04
name: PHPUnit test suite
services:
postgres:
image: postgres:13.4
env:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: jbukdev_testing
ports:
- 5432:5432
steps:
- uses: actions/checkout@v2
- name: Cache node modules
uses: actions/cache@v2
with:
path: ~/.npm
key: ${{ runner.os }}-${{ hashFiles('**/package.json') }}
- name: Install npm dependencies
run: npm install
- name: Setup PHP with pecl extension
uses: shivammathur/setup-php@v2
with:
php-version: '8.1'
tools: phpcs
- name: Copy .env
run: php -r "file_exists('.env') || copy('.env.github', '.env');"
- name: Install dependencies
run: composer install --quiet --no-ansi --no-interaction --no-progress
- name: Generate key
run: php artisan key:generate
- name: Setup directory permissions
run: chmod -R 777 storage bootstrap/cache
- name: Setup test database
run: php artisan migrate
- name: Execute tests (Unit and Feature tests) via PHPUnit
run: vendor/bin/phpunit
- name: Run phpcs
run: phpcs

View file

@ -0,0 +1,17 @@
<?php
declare(strict_types=1);
namespace App\CommonMark\Generators;
use League\CommonMark\Extension\Mention\Generator\MentionGeneratorInterface;
use League\CommonMark\Extension\Mention\Mention;
use League\CommonMark\Node\Inline\AbstractInline;
class ContactMentionGenerator implements MentionGeneratorInterface
{
public function generateMention(Mention $mention): ?AbstractInline
{
return $mention;
}
}

View file

@ -0,0 +1,24 @@
<?php
declare(strict_types=1);
namespace App\CommonMark\Renderers;
use App\Models\Contact;
use League\CommonMark\Node\Node;
use League\CommonMark\Renderer\ChildNodeRendererInterface;
use League\CommonMark\Renderer\NodeRendererInterface;
class ContactMentionRenderer implements NodeRendererInterface
{
public function render(Node $node, ChildNodeRendererInterface $childRenderer): string
{
$contact = Contact::where('nick', $node->getIdentifier())->first();
if ($contact === null) {
return '<a href="https://twitter.com/' . $node->getIdentifier() . '">@' . $node->getIdentifier() . '</a>';
}
return trim(view('templates.mini-hcard', ['contact' => $contact])->render());
}
}

View file

@ -43,8 +43,9 @@ class Handler extends ExceptionHandler
* *
* This is a great spot to send exceptions to Sentry, Bugsnag, etc. * This is a great spot to send exceptions to Sentry, Bugsnag, etc.
* *
* @param Throwable $throwable * @param Throwable $throwable
* @return void * @return void
*
* @throws Exception * @throws Exception
* @throws Throwable * @throws Throwable
*/ */
@ -87,9 +88,10 @@ class Handler extends ExceptionHandler
/** /**
* Render an exception into an HTTP response. * Render an exception into an HTTP response.
* *
* @param Request $request * @param Request $request
* @param Throwable $throwable * @param Throwable $throwable
* @return Response * @return Response
*
* @throws Throwable * @throws Throwable
*/ */
public function render($request, Throwable $throwable) public function render($request, Throwable $throwable)

View file

@ -15,8 +15,8 @@ class ArticlesController extends Controller
/** /**
* Show all articles (with pagination). * Show all articles (with pagination).
* *
* @param int|null $year * @param int|null $year
* @param int|null $month * @param int|null $month
* @return View * @return View
*/ */
public function index(int $year = null, int $month = null): View public function index(int $year = null, int $month = null): View
@ -32,9 +32,9 @@ class ArticlesController extends Controller
/** /**
* Show a single article. * Show a single article.
* *
* @param int $year * @param int $year
* @param int $month * @param int $month
* @param string $slug * @param string $slug
* @return RedirectResponse|View * @return RedirectResponse|View
*/ */
public function show(int $year, int $month, string $slug) public function show(int $year, int $month, string $slug)
@ -59,7 +59,7 @@ class ArticlesController extends Controller
* We only have the ID, work out post title, year and month * We only have the ID, work out post title, year and month
* and redirect to it. * and redirect to it.
* *
* @param string $idFromUrl * @param string $idFromUrl
* @return RedirectResponse * @return RedirectResponse
*/ */
public function onlyIdInUrl(string $idFromUrl): RedirectResponse public function onlyIdInUrl(string $idFromUrl): RedirectResponse

View file

@ -24,7 +24,7 @@ class BookmarksController extends Controller
/** /**
* Show a single bookmark. * Show a single bookmark.
* *
* @param Bookmark $bookmark * @param Bookmark $bookmark
* @return View * @return View
*/ */
public function show(Bookmark $bookmark): View public function show(Bookmark $bookmark): View

View file

@ -34,7 +34,7 @@ class ContactsController extends Controller
/** /**
* Show a single contact. * Show a single contact.
* *
* @param Contact $contact * @param Contact $contact
* @return View * @return View
*/ */
public function show(Contact $contact): View public function show(Contact $contact): View

View file

@ -4,7 +4,8 @@ declare(strict_types=1);
namespace App\Http\Controllers; namespace App\Http\Controllers;
use App\Models\{Article, Note}; use App\Models\Article;
use App\Models\Note;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Illuminate\Http\Response; use Illuminate\Http\Response;

View file

@ -24,7 +24,7 @@ class LikesController extends Controller
/** /**
* Show a single like. * Show a single like.
* *
* @param Like $like * @param Like $like
* @return View * @return View
*/ */
public function show(Like $like): View public function show(Like $like): View

View file

@ -6,7 +6,9 @@ namespace App\Http\Controllers;
use App\Http\Responses\MicropubResponses; use App\Http\Responses\MicropubResponses;
use App\Models\Place; use App\Models\Place;
use App\Services\Micropub\{HCardService, HEntryService, UpdateService}; use App\Services\Micropub\HCardService;
use App\Services\Micropub\HEntryService;
use App\Services\Micropub\UpdateService;
use App\Services\TokenService; use App\Services\TokenService;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
use Lcobucci\JWT\Encoding\CannotDecodeContent; use Lcobucci\JWT\Encoding\CannotDecodeContent;
@ -18,8 +20,11 @@ use Monolog\Logger;
class MicropubController extends Controller class MicropubController extends Controller
{ {
protected TokenService $tokenService; protected TokenService $tokenService;
protected HEntryService $hentryService; protected HEntryService $hentryService;
protected HCardService $hcardService; protected HCardService $hcardService;
protected UpdateService $updateService; protected UpdateService $updateService;
public function __construct( public function __construct(
@ -168,6 +173,7 @@ class MicropubController extends Controller
* Determine the client id from the access token sent with the request. * Determine the client id from the access token sent with the request.
* *
* @return string * @return string
*
* @throws RequiredConstraintsViolated * @throws RequiredConstraintsViolated
*/ */
private function getClientId(): string private function getClientId(): string
@ -180,7 +186,7 @@ class MicropubController extends Controller
/** /**
* Save the details of the micropub request to a log file. * Save the details of the micropub request to a log file.
* *
* @param array $request This is the info from request()->all() * @param array $request This is the info from request()->all()
*/ */
private function logMicropubRequest(array $request) private function logMicropubRequest(array $request)
{ {

View file

@ -97,6 +97,7 @@ class MicropubMediaController extends Controller
* Process a media item posted to the media endpoint. * Process a media item posted to the media endpoint.
* *
* @return JsonResponse * @return JsonResponse
*
* @throws BindingResolutionException * @throws BindingResolutionException
* @throws Exception * @throws Exception
*/ */
@ -184,7 +185,7 @@ class MicropubMediaController extends Controller
/** /**
* Get the file type from the mime-type of the uploaded file. * Get the file type from the mime-type of the uploaded file.
* *
* @param string $mimeType * @param string $mimeType
* @return string * @return string
*/ */
private function getFileTypeFromMimeType(string $mimeType): string private function getFileTypeFromMimeType(string $mimeType): string
@ -229,8 +230,9 @@ class MicropubMediaController extends Controller
/** /**
* Save an uploaded file to the local disk. * Save an uploaded file to the local disk.
* *
* @param UploadedFile $file * @param UploadedFile $file
* @return string * @return string
*
* @throws Exception * @throws Exception
*/ */
private function saveFile(UploadedFile $file): string private function saveFile(UploadedFile $file): string

View file

@ -40,7 +40,7 @@ class NotesController extends Controller
/** /**
* Show a single note. * Show a single note.
* *
* @param string $urlId The id of the note * @param string $urlId The id of the note
* @return View|JsonResponse|Response * @return View|JsonResponse|Response
*/ */
public function show(string $urlId) public function show(string $urlId)
@ -61,7 +61,7 @@ class NotesController extends Controller
/** /**
* Redirect /note/{decID} to /notes/{nb60id}. * Redirect /note/{decID} to /notes/{nb60id}.
* *
* @param int $decId The decimal id of the note * @param int $decId The decimal id of the note
* @return RedirectResponse * @return RedirectResponse
*/ */
public function redirect(int $decId): RedirectResponse public function redirect(int $decId): RedirectResponse
@ -72,7 +72,7 @@ class NotesController extends Controller
/** /**
* Show all notes tagged with {tag}. * Show all notes tagged with {tag}.
* *
* @param string $tag * @param string $tag
* @return View * @return View
*/ */
public function tagged(string $tag): View public function tagged(string $tag): View

View file

@ -24,7 +24,7 @@ class PlacesController extends Controller
/** /**
* Show a specific place. * Show a specific place.
* *
* @param Place $place * @param Place $place
* @return View * @return View
*/ */
public function show(Place $place): View public function show(Place $place): View

View file

@ -23,8 +23,8 @@ class TokenEndpointController extends Controller
/** /**
* Inject the dependencies. * Inject the dependencies.
* *
* @param Client $client * @param Client $client
* @param TokenService $tokenService * @param TokenService $tokenService
*/ */
public function __construct( public function __construct(
Client $client, Client $client,

View file

@ -10,8 +10,8 @@ class CSPHeader
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param Request $request * @param Request $request
* @param Closure $next * @param Closure $next
* @return mixed * @return mixed
*/ */
public function handle($request, Closure $next) public function handle($request, Closure $next)

View file

@ -23,7 +23,7 @@ class AddClientToDatabase implements ShouldQueue
/** /**
* Create a new job instance. * Create a new job instance.
* *
* @param string $client_id * @param string $client_id
*/ */
public function __construct(string $client_id) public function __construct(string $client_id)
{ {

View file

@ -29,7 +29,7 @@ class DownloadWebMention implements ShouldQueue
/** /**
* Create a new job instance. * Create a new job instance.
* *
* @param string $source * @param string $source
*/ */
public function __construct(string $source) public function __construct(string $source)
{ {
@ -39,7 +39,8 @@ class DownloadWebMention implements ShouldQueue
/** /**
* Execute the job. * Execute the job.
* *
* @param Client $guzzle * @param Client $guzzle
*
* @throws GuzzleException * @throws GuzzleException
* @throws FileNotFoundException * @throws FileNotFoundException
*/ */
@ -81,7 +82,7 @@ class DownloadWebMention implements ShouldQueue
/** /**
* Create a file path from a URL. This is used when caching the HTML response. * Create a file path from a URL. This is used when caching the HTML response.
* *
* @param string $url * @param string $url
* @return string The path name * @return string The path name
*/ */
private function createFilenameFromURL(string $url) private function createFilenameFromURL(string $url)

Some files were not shown because too many files have changed in this diff Show more