forked from cadence/breezewiki
		
	Deduplicate the wiki name regex
This commit is contained in:
		
							parent
							
								
									ece762fc5b
								
							
						
					
					
						commit
						57e700cef5
					
				
					 3 changed files with 12 additions and 7 deletions
				
			
		|  | @ -8,7 +8,8 @@ | ||||||
|          (prefix-in sequencer: web-server/dispatchers/dispatch-sequencer) |          (prefix-in sequencer: web-server/dispatchers/dispatch-sequencer) | ||||||
|          (prefix-in lift: web-server/dispatchers/dispatch-lift) |          (prefix-in lift: web-server/dispatchers/dispatch-lift) | ||||||
|          (prefix-in filter: web-server/dispatchers/dispatch-filter) |          (prefix-in filter: web-server/dispatchers/dispatch-filter) | ||||||
|          "config.rkt") |          "config.rkt" | ||||||
|  |          "url-utils.rkt") | ||||||
| 
 | 
 | ||||||
| (provide | (provide | ||||||
|  ; syntax to make the hashmap from names |  ; syntax to make the hashmap from names | ||||||
|  | @ -43,9 +44,9 @@ | ||||||
|               (pathprocedure:make "/" (hash-ref ds 'page-home)) |               (pathprocedure:make "/" (hash-ref ds 'page-home)) | ||||||
|               (pathprocedure:make "/proxy" (hash-ref ds 'page-proxy)) |               (pathprocedure:make "/proxy" (hash-ref ds 'page-proxy)) | ||||||
|               (pathprocedure:make "/search" (hash-ref ds 'page-global-search)) |               (pathprocedure:make "/search" (hash-ref ds 'page-global-search)) | ||||||
|               (filter:make #px"^/[a-zA-Z0-9-]{3,50}/wiki/Category:.+$" (lift:make (hash-ref ds 'page-category))) |               (filter:make (pregexp (format "^/~a/wiki/Category:.+$" wikiname-regex)) (lift:make (hash-ref ds 'page-category))) | ||||||
|               (filter:make #px"^/[a-zA-Z0-9-]{3,50}/wiki/.+$" (lift:make (hash-ref ds 'page-wiki))) |               (filter:make (pregexp (format "^/~a/wiki/.+$" wikiname-regex)) (lift:make (hash-ref ds 'page-wiki))) | ||||||
|               (filter:make #px"^/[a-zA-Z0-9-]{3,50}/search$" (lift:make (hash-ref ds 'page-search))) |               (filter:make (pregexp (format "^/~a/search$" wikiname-regex)) (lift:make (hash-ref ds 'page-search))) | ||||||
|               (filter:make #px"^/[a-zA-Z0-9-]{3,50}(/(wiki(/)?)?)?$" (lift:make (hash-ref ds 'redirect-wiki-home))) |               (filter:make (pregexp (format "^/~a(/(wiki(/)?)?)?$" wikiname-regex)) (lift:make (hash-ref ds 'redirect-wiki-home))) | ||||||
|               (hash-ref ds 'static-dispatcher) |               (hash-ref ds 'static-dispatcher) | ||||||
|               (lift:make (hash-ref ds 'page-not-found))))))) |               (lift:make (hash-ref ds 'page-not-found))))))) | ||||||
|  |  | ||||||
|  | @ -143,7 +143,7 @@ | ||||||
|                        (λ (href) |                        (λ (href) | ||||||
|                          ((compose1 |                          ((compose1 | ||||||
|                            (λ (href) (regexp-replace #rx"^(/wiki/.*)" href (format "/~a\\1" wikiname))) |                            (λ (href) (regexp-replace #rx"^(/wiki/.*)" href (format "/~a\\1" wikiname))) | ||||||
|                            (λ (href) (regexp-replace #px"^https://([a-zA-Z0-9-]{3,50}).fandom.com(/wiki/.*)" href "/\\1\\2"))) |                            (λ (href) (regexp-replace (pregexp (format "^https://(~a)\\.fandom\\.com(/wiki/.*)" wikiname-regex)) href "/\\1\\2"))) | ||||||
|                           href))) |                           href))) | ||||||
|                 ; add noreferrer to a.image |                 ; add noreferrer to a.image | ||||||
|                 (curry u |                 (curry u | ||||||
|  |  | ||||||
|  | @ -4,6 +4,8 @@ | ||||||
| (require/typed "config.rkt" [config-true? (Symbol -> Boolean)]) | (require/typed "config.rkt" [config-true? (Symbol -> Boolean)]) | ||||||
| 
 | 
 | ||||||
| (provide | (provide | ||||||
|  |  ; regex to match wiki names | ||||||
|  |  wikiname-regex | ||||||
|  ; make a query string from an association list of strings |  ; make a query string from an association list of strings | ||||||
|  params->query |  params->query | ||||||
|  ; make a proxied version of a fandom url |  ; make a proxied version of a fandom url | ||||||
|  | @ -16,6 +18,8 @@ | ||||||
| (module+ test | (module+ test | ||||||
|   (require "typed-rackunit.rkt")) |   (require "typed-rackunit.rkt")) | ||||||
| 
 | 
 | ||||||
|  | (define wikiname-regex "[a-zA-Z0-9-]{3,50}") | ||||||
|  | 
 | ||||||
| ;; https://url.spec.whatwg.org/#urlencoded-serializing | ;; https://url.spec.whatwg.org/#urlencoded-serializing | ||||||
| 
 | 
 | ||||||
| (define urlencoded-set '(#\! #\' #\( #\) #\~ ; urlencoded set | (define urlencoded-set '(#\! #\' #\( #\) #\~ ; urlencoded set | ||||||
|  | @ -60,7 +64,7 @@ | ||||||
| 
 | 
 | ||||||
| (: is-fandom-url? (String -> Boolean)) | (: is-fandom-url? (String -> Boolean)) | ||||||
| (define (is-fandom-url? url) | (define (is-fandom-url? url) | ||||||
|   (regexp-match? #px"^https://static.wikia.nocookie.net/|^https://[a-zA-Z0-9-]{3,50}.fandom.com/" url)) |   (regexp-match? (pregexp (format "^https://static\\.wikia\\.nocookie\\.net/|^https://~a\\.fandom\\.com/" wikiname-regex)) url)) | ||||||
| (module+ test | (module+ test | ||||||
|   (check-true (is-fandom-url? "https://static.wikia.nocookie.net/wikiname/images/2/2f/SomeImage.jpg/revision/latest?cb=20110210094136")) |   (check-true (is-fandom-url? "https://static.wikia.nocookie.net/wikiname/images/2/2f/SomeImage.jpg/revision/latest?cb=20110210094136")) | ||||||
|   (check-true (is-fandom-url? "https://test.fandom.com/wiki/Some_Page")) |   (check-true (is-fandom-url? "https://test.fandom.com/wiki/Some_Page")) | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue