2017-03-27 14:33:35 -05:00

1.7 KiB

title linktitle description godocref date publishdate lastmod categories tags relatedfuncs ns signature workson hugoversion deprecated draft aliases
base64 base64 base64Encode and base64Decode let you easily decode content with a base64 encoding and vice versa through pipes. 2017-02-01 2017-02-01 2017-02-01
functions
false false

base64Encode and base64Decode let you easily decode content with a base64 encoding and vice versa through pipes. Let's take a look at an example:

{{% code file="base64-input.html" %}}

<p>Hello world = {{ "Hello world" | base64Encode }}</p>
<p>SGVsbG8gd29ybGQ = {{ "SGVsbG8gd29ybGQ=" | base64Decode }}</p>

{{% /code %}}

{{% output file="base-64-output.html" %}}

<p>Hello world = SGVsbG8gd29ybGQ=</p>
<p>SGVsbG8gd29ybGQ = Hello world</p>

{{% /output %}}

You can also pass other data types as arguments to the template function which tries to convert them. The following will convert 42 from an integer to a string because both base64Encode and base64Decode always return a string.

{{ 42 | base64Encode | base64Decode }}
=> "42" rather than 42

base64 with APIs

Using base64 to decode and encode becomes really powerful if we have to handle responses from APIs.

{{ $resp := getJSON "https://api.github.com/repos/spf13/hugo/readme"  }}
{{ $resp.content | base64Decode | markdownify }}

The response of the GitHub API contains the base64-encoded version of the README.md in the Hugo repository. Now we can decode it and parse the Markdown. The final output will look similar to the rendered version on GitHub.