Offload some stuff to Helpers class
This commit is contained in:
parent
6e8a763929
commit
1dee00ace0
|
@ -7,6 +7,7 @@
|
||||||
"Libarchive::Filter"
|
"Libarchive::Filter"
|
||||||
],
|
],
|
||||||
"provides": {
|
"provides": {
|
||||||
"Hyperlink-Redirect": "lib/Hyperlink-Redirect.rakumod"
|
"Hyperlink-Redirect": "lib/Hyperlink-Redirect.rakumod",
|
||||||
|
"Hyperlink-Redirect::Helpers": "lib/Hyperlink-Redirect/Helpers.rakumod"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,8 +2,6 @@ use Humming-Bird::Core;
|
||||||
use Humming-Bird::Middleware;
|
use Humming-Bird::Middleware;
|
||||||
use Humming-Bird::Advice;
|
use Humming-Bird::Advice;
|
||||||
use Template::Mustache;
|
use Template::Mustache;
|
||||||
use Base64;
|
|
||||||
use Libarchive::Filter :gzip;
|
|
||||||
|
|
||||||
# Normally would 'use' local libs here for Controller and Model and
|
# Normally would 'use' local libs here for Controller and Model and
|
||||||
# what not but keeping it simple for now...
|
# what not but keeping it simple for now...
|
||||||
|
@ -36,7 +34,7 @@ $router.post(-> $request, $response {
|
||||||
$base-url = $url-scheme ~ '://' ~ $url-host ~
|
$base-url = $url-scheme ~ '://' ~ $url-host ~
|
||||||
($meta-refresh ?? '/--meta-refresh/' !! '/');
|
($meta-refresh ?? '/--meta-refresh/' !! '/');
|
||||||
|
|
||||||
$hyperlink = $base-url ~ encode-base64(gzip($return-url), :str);
|
$hyperlink = $base-url ~ hyperlink $return-url;
|
||||||
|
|
||||||
%stash = title => 'New hyperlink created', :$hyperlink;
|
%stash = title => 'New hyperlink created', :$hyperlink;
|
||||||
|
|
||||||
|
@ -46,7 +44,7 @@ $router.post(-> $request, $response {
|
||||||
# Process the hyperlink
|
# Process the hyperlink
|
||||||
$router.get('/--meta-refresh/**', -> $request, $response {
|
$router.get('/--meta-refresh/**', -> $request, $response {
|
||||||
my Str $return-url = $request.path.subst: /^ '/--meta-refresh/'/, Empty;
|
my Str $return-url = $request.path.subst: /^ '/--meta-refresh/'/, Empty;
|
||||||
my Str $redirect-url = gunzip(decode-base64($return-url, :bin));
|
my Str $redirect-url = redirect $return-url;
|
||||||
my Str %stash = title => 'Hyperlinking...', :$redirect-url;
|
my Str %stash = title => 'Hyperlinking...', :$redirect-url;
|
||||||
|
|
||||||
$response.html($template.render: 'index', %stash);
|
$response.html($template.render: 'index', %stash);
|
||||||
|
@ -54,8 +52,7 @@ $router.get('/--meta-refresh/**', -> $request, $response {
|
||||||
|
|
||||||
$router.get('/**', -> $request, $response {
|
$router.get('/**', -> $request, $response {
|
||||||
my Str $return-url = $request.path.substr(1); # Omits the leading slash
|
my Str $return-url = $request.path.substr(1); # Omits the leading slash
|
||||||
|
my Str $redirect-url = redirect $return-url;
|
||||||
my Str $redirect-url = gunzip(decode-base64($return-url, :bin));
|
|
||||||
|
|
||||||
$response.redirect($redirect-url);
|
$response.redirect($redirect-url);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
use Base64;
|
||||||
|
use Libarchive::Filter :gzip;
|
||||||
|
|
||||||
my $starts-with-protocol = rx:i/ ^https? '://'/;
|
my $starts-with-protocol = rx:i/ ^https? '://'/;
|
||||||
|
|
||||||
sub fix-protocol($url) is export {
|
sub fix-protocol($url) is export {
|
||||||
|
@ -17,3 +20,11 @@ sub dbug($message) {
|
||||||
# ERROR: Stringification of a Buf is not done with 'Stringy'. The 'decode'
|
# ERROR: Stringification of a Buf is not done with 'Stringy'. The 'decode'
|
||||||
# method should be used to convert a Buf to a Str.
|
# method should be used to convert a Buf to a Str.
|
||||||
# TYPE: X::Buf::AsStr
|
# TYPE: X::Buf::AsStr
|
||||||
|
|
||||||
|
sub hyperlink(Str $return-url --> Str) is export {
|
||||||
|
encode-base64(gzip($return-url), :str)
|
||||||
|
}
|
||||||
|
|
||||||
|
sub redirect(Str $return-url --> Str) is export {
|
||||||
|
gunzip(decode-base64($return-url, :bin));
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue