Add site redirects (#552)

* feat(redirects): add redirects to sites

* chore(style): fixed coding style issues

* style: fix php-stan docblocks

* style: pint cleanup

* tests: fixed redirect test suite

* feat: vhosts include additional configs

* fix: use exact location matching

* - add enums
- use queues
- use vhost rather than separate conf files
- vhost formatter
- cleanup

* generate docs

---------

Co-authored-by: Saeed Vaziry <mr.saeedvaziry@gmail.com>
This commit is contained in:
Jamie Wood
2025-03-31 16:30:57 +01:00
committed by GitHub
parent 7882d2022c
commit f483f7fdca
53 changed files with 6944 additions and 4495 deletions

View File

@ -1,14 +1,14 @@
## Autogenerated by Scribe. DO NOT MODIFY.
name: storage-providers
name: source-controls
description: ''
endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers'
uri: 'api/projects/{project_id}/source-controls'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
@ -41,7 +41,7 @@ endpoints:
responses:
-
status: 200
content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"sit","provider":"ftp","created_at":"2025-03-29T20:43:56.000000Z","updated_at":"2025-03-29T20:43:56.000000Z"},{"id":6,"project_id":null,"global":true,"name":"repudiandae","provider":"local","created_at":"2025-03-29T20:43:56.000000Z","updated_at":"2025-03-29T20:43:56.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
content: '{"data":[{"id":5,"project_id":null,"global":true,"name":"Emil Leannon","provider":"github","created_at":"2025-03-31T15:27:17.000000Z","updated_at":"2025-03-31T15:27:17.000000Z"},{"id":6,"project_id":null,"global":true,"name":"Eleazar Pacocha Sr.","provider":"github","created_at":"2025-03-31T15:27:17.000000Z","updated_at":"2025-03-31T15:27:17.000000Z"}],"links":{"first":"\/?page=1","last":"\/?page=1","prev":null,"next":null},"meta":{"current_page":1,"from":1,"last_page":1,"links":[{"url":null,"label":"&laquo; Previous","active":false},{"url":"\/?page=1","label":"1","active":true},{"url":null,"label":"Next &raquo;","active":false}],"path":"\/","per_page":25,"to":2,"total":2}}'
headers: []
description: ''
custom: []
@ -49,7 +49,7 @@ endpoints:
auth:
- headers
- Authorization
- 'Bearer EbkDP1Z3aVav8g6ef6dc5h4'
- 'Bearer a34dVDE5ak8ceZvfh1Pb66g'
controller: null
method: null
route: null
@ -57,9 +57,9 @@ endpoints:
-
httpMethods:
- POST
uri: 'api/projects/{project_id}/storage-providers'
uri: 'api/projects/{project_id}/source-controls'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
@ -89,11 +89,14 @@ endpoints:
bodyParameters:
provider:
name: provider
description: 'The provider (aws, linode, hetzner, digitalocean, vultr, ...)'
description: 'The provider'
required: true
example: est
example: github
type: string
enumValues: []
enumValues:
- gitlab
- github
- bitbucket
exampleWasSpecified: false
nullable: false
custom: []
@ -101,7 +104,7 @@ endpoints:
name: name
description: 'The name of the storage provider.'
required: true
example: id
example: aliquam
type: string
enumValues: []
exampleWasSpecified: false
@ -111,43 +114,54 @@ endpoints:
name: token
description: 'The token if provider requires api token'
required: true
example: repellendus
example: voluptatem
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
key:
name: key
description: 'The key if provider requires key'
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: ducimus
example: 'https://brown.org/placeat-optio-illum-eius-ipsa.html'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
secret:
name: secret
description: 'The secret if provider requires key'
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: possimus
example: a
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: "_/_,9'/6z;9"
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
cleanBodyParameters:
provider: est
name: id
token: repellendus
key: ducimus
secret: possimus
provider: github
name: aliquam
token: voluptatem
url: 'https://brown.org/placeat-optio-illum-eius-ipsa.html'
username: a
password: "_/_,9'/6z;9"
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"sequi","provider":"dropbox","created_at":"2025-03-29T20:43:56.000000Z","updated_at":"2025-03-29T20:43:56.000000Z"}'
content: '{"id":5,"project_id":null,"global":true,"name":"Ahmad Kulas","provider":"github","created_at":"2025-03-31T15:27:17.000000Z","updated_at":"2025-03-31T15:27:17.000000Z"}'
headers: []
description: ''
custom: []
@ -155,7 +169,7 @@ endpoints:
auth:
- headers
- Authorization
- 'Bearer 45kVPD6ec6hvga83bfa1dEZ'
- 'Bearer 65dacDVh4kevfZ8P1bEga36'
controller: null
method: null
route: null
@ -163,9 +177,9 @@ endpoints:
-
httpMethods:
- GET
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
@ -188,11 +202,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -200,7 +214,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -209,7 +223,7 @@ endpoints:
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"alias","provider":"ftp","created_at":"2025-03-29T20:43:56.000000Z","updated_at":"2025-03-29T20:43:56.000000Z"}'
content: '{"id":5,"project_id":null,"global":true,"name":"Mr. Marquis Kunde IV","provider":"github","created_at":"2025-03-31T15:27:17.000000Z","updated_at":"2025-03-31T15:27:17.000000Z"}'
headers: []
description: ''
custom: []
@ -217,7 +231,7 @@ endpoints:
auth:
- headers
- Authorization
- 'Bearer ahb6gDd8fv3P1ak6cEe4V5Z'
- 'Bearer a8hf6adecDkVbEZ6P1g54v3'
controller: null
method: null
route: null
@ -225,9 +239,9 @@ endpoints:
-
httpMethods:
- PUT
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
@ -250,11 +264,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -262,7 +276,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters:
@ -270,7 +284,47 @@ endpoints:
name: name
description: 'The name of the storage provider.'
required: true
example: ullam
example: laudantium
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
token:
name: token
description: 'The token if provider requires api token'
required: true
example: nulla
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
url:
name: url
description: 'The URL if the provider is Gitlab and it is self-hosted'
required: true
example: 'http://wiza.com/'
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
username:
name: username
description: 'The username if the provider is Bitbucket'
required: true
example: numquam
type: string
enumValues: []
exampleWasSpecified: false
nullable: false
custom: []
password:
name: password
description: 'The password if the provider is Bitbucket'
required: true
example: 'MlD,$m:8^A'
type: string
enumValues: []
exampleWasSpecified: false
@ -280,7 +334,7 @@ endpoints:
name: global
description: 'Accessible in all projects'
required: true
example: true
example: false
type: string
enumValues:
- true
@ -289,13 +343,17 @@ endpoints:
nullable: false
custom: []
cleanBodyParameters:
name: ullam
global: true
name: laudantium
token: nulla
url: 'http://wiza.com/'
username: numquam
password: 'MlD,$m:8^A'
global: false
fileParameters: []
responses:
-
status: 200
content: '{"id":5,"project_id":null,"global":true,"name":"at","provider":"ftp","created_at":"2025-03-29T20:43:56.000000Z","updated_at":"2025-03-29T20:43:56.000000Z"}'
content: '{"id":5,"project_id":null,"global":true,"name":"Mrs. Arvilla Mitchell","provider":"github","created_at":"2025-03-31T15:27:17.000000Z","updated_at":"2025-03-31T15:27:17.000000Z"}'
headers: []
description: ''
custom: []
@ -303,7 +361,7 @@ endpoints:
auth:
- headers
- Authorization
- 'Bearer a8Vgfvh5abkd616eDZ43cPE'
- 'Bearer Z36EdDbavkeVPch68a1g45f'
controller: null
method: null
route: null
@ -311,9 +369,9 @@ endpoints:
-
httpMethods:
- DELETE
uri: 'api/projects/{project_id}/storage-providers/{storageProvider_id}'
uri: 'api/projects/{project_id}/source-controls/{sourceControl_id}'
metadata:
groupName: storage-providers
groupName: source-controls
groupDescription: ''
subgroup: ''
subgroupDescription: ''
@ -336,11 +394,11 @@ endpoints:
exampleWasSpecified: false
nullable: false
custom: []
storageProvider_id:
name: storageProvider_id
description: 'The ID of the storageProvider.'
sourceControl_id:
name: sourceControl_id
description: 'The ID of the sourceControl.'
required: true
example: 3
example: 1
type: integer
enumValues: []
exampleWasSpecified: false
@ -348,7 +406,7 @@ endpoints:
custom: []
cleanUrlParameters:
project_id: 1
storageProvider_id: 3
sourceControl_id: 1
queryParameters: []
cleanQueryParameters: []
bodyParameters: []
@ -365,7 +423,7 @@ endpoints:
auth:
- headers
- Authorization
- 'Bearer kDheaPEvb61Va564dZc8f3g'
- 'Bearer gaadhb6Ev6Dk8fc4P1eV53Z'
controller: null
method: null
route: null