]> git.immae.eu Git - github/bastienwirtz/homer.git/blobdiff - docs/tips-and-tricks.md
Bump dns-packet from 1.3.1 to 1.3.4
[github/bastienwirtz/homer.git] / docs / tips-and-tricks.md
index 9f35987eae990b8f4c5f991529cdcca315dbe20d..94167fbad4b8e6aaed078ab12a44ab012f059b9e 100644 (file)
@@ -48,36 +48,36 @@ and then simply reference these pre-defined (anchored) tags in each item like so
 ```yaml
 - name: "VS Code"
   logo: "/assets/vscode.png"
-  subtitle: "Develope Code Anywhere, On Anything!"
-  <<: *App # Regerence to the predefined "App" Tag
+  subtitle: "Develop Code Anywhere, On Anything!"
+  <<: *App # Reference to the predefined "App" Tag
   url: "https://vscode.example.com/"
   target: "_blank" # optional html tag target attribute
 ````
 
-Then when Homer reads your config, it will substitute your anchors automatically, the the above example is equal to:
+Then when Homer reads your config, it will substitute your anchors automatically, the above example is equal to:
 
 ```yaml
 - name: "VS Code"
   logo: "/assets/vscode.png"
-  subtitle: "Develope Code Anywhere, On Anything!"
+  subtitle: "Develop Code Anywhere, On Anything!"
   tag: "App"
   tagstyle: "is-medium is-info"
   url: "https://vscode.example.com/"
   target: "_blank" # optional html tag target attribute
 ```
 
-The end result is that if you want to update the name or style of any particular tag, just update it once, in the tags section! 
+The end result is that if you want to update the name or style of any particular tag, just update it once, in the tags section!
 Great if you have a lot of services or a lot of tags!  
 
 ## Remotely edit your config with Code Server
 #### `by @JamiePhonic`
 
-Homer doesn't yet provide a way to edit your configuration from inside Homer itself, but that doesn't mean it cant be done!
+Homer doesn't yet provide a way to edit your configuration from inside Homer itself, but that doesn't mean it can't be done!
 
 You can setup and use [Code-Server](https://github.com/cdr/code-server) to edit your `config.yml` file from anywhere!
 
 If you're running Homer in docker, you can setup a Code-Server container and pass your homer config directory into it.
-Simply pass your homer config directory as and extra -v parameter to your code-server container:
+Simply pass your homer config directory as an extra -v parameter to your code-server container:
 ```
 -v '/your/local/homer/config-dir/':'/config/homer':'rw'
 ```
@@ -85,7 +85,7 @@ This will map your homer config directory (For example, /docker/appdata/homer/)
 
 As a bonus, Code-Server puts the "current folder" as a parameter in the URL bar, so you could add a `links:` entry in Homer that points to your code-server instance with the directory pre-filled for essentially 1 click editing!
 
-For example: 
+For example:
 ```yml
 links:
   - name: Edit config
@@ -113,6 +113,64 @@ docker create \
 
 
 ## Get the news headlines in Homer
+
+### Mapping Fields
+Most times, the url you're getting headlines from follows a different schema than the one expected by Homer.
+
+For example, if you would like to show jokes from ChuckNorris.io, you'll find that the url https://api.chucknorris.io/jokes/random is giving you info like this:
+
+```json
+{
+  "categories": [],
+  "created_at": "2020-01-05 13:42:22.089095",
+  "icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
+  "id": "MR2-BnMBR667xSpQBIleUg",
+  "updated_at": "2020-01-05 13:42:22.089095",
+  "url": "https://api.chucknorris.io/jokes/MR2-BnMBR667xSpQBIleUg",
+  "value": "Chuck Norris can quitely sneak up on himself"
+}
+```
+
+but... you need that info to be transformed to something like this:
+
+```json
+{
+  "title": "MR2-BnMBR667xSpQBIleUg",
+  "content": "Chuck Norris can quitely sneak up on himself"
+}
+```
+
+Now, you can do that using the `mapping` field in your `message` configuration. This example would be something like this:
+
+```yml
+message:
+  url: https://api.chucknorris.io/jokes/random
+  mapping:
+    title: 'id'
+    content: 'value'
+```
+
+As you would see, using the ID as a title doesn't seem nice, that's why when a field is empty it would keep the default values, like this:
+
+```yml
+message:
+  url: https://api.chucknorris.io/jokes/random
+  mapping:
+    content: 'value'
+  title: "Chuck Norris Facts!"
+```
+
+and even an error message in case the `url` didn't respond or threw an error:
+
+```yml
+message:
+  url: https://api.chucknorris.io/jokes/random
+  mapping:
+    content: 'value'
+  title: "Chuck Norris Facts!"
+  content: "Message could not be loaded"
+```
+
 #### `by @JamiePhonic`
 
 Homer allows you to set a "message" that will appear at the top of the page, however, you can also supply a `url:`.