The Wayback Machine - https://web.archive.org/web/20201123083031/https://github.com/posthtml/posthtml-fetch
Skip to content
master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
Mar 31, 2020
lib
May 19, 2020
Mar 31, 2020
Mar 31, 2020
Mar 31, 2020
May 23, 2020

README.md

Fetch Remote Content

A plugin for fetching and working with remote content

Version License Build Downloads

About

This plugin allows you to fetch remote content and display it in your HTML.

Input:

<fetch url="https://jsonplaceholder.typicode.com/users/1">
  {{ response.name }}'s username is {{ response.username }}
</fetch>

Output:

Leanne Graham's username is Bret

Install

$ npm i posthtml posthtml-fetch

Usage

const posthtml = require('posthtml')
const pf = require('posthtml-fetch')

posthtml()
  .use(pf())
  .process('<fetch url="https://example.test">{{ response }}</fetch>')
  .then(result => console.log(result.html))

  // response body

The response body will be available under the response local variable.

Response types

The plugin supports json and text responses.

Only the response body is returned.

Expressions

The plugin uses posthtml-expressions, so you can use any of its tags to work with the response.

For example, you can iterate over items in a JSON response:

<fetch url="https://jsonplaceholder.typicode.com/users">
  <each loop="user in response">
    {{ user.name }}
  </each>
</fetch>

Options

You can configure the plugin with the following options.

tags

Default: ['fetch', 'remote']

Array of supported tag names.

Only tags from this array will be processed by the plugin.

Example:

const posthtml = require('posthtml')
const pf = require('posthtml-fetch')

posthtml()
  .use(pf({
    tags: ['get']
  }))
  .process('<get url="https://example.test">{{ response }}</get>')
  .then(result => console.log(result.html))

attribute

Default: 'url'

String representing attribute name containing the URL to fetch.

Example:

const posthtml = require('posthtml')
const pf = require('posthtml-fetch')

posthtml()
  .use(pf({
    attribute: 'from'
  }))
  .process('<fetch from="https://example.test">{{ response }}</fetch>')
  .then(result => {
    console.log(result.html)
    // => ...interpolated response from https://example.test
  })

got

The plugin uses got to fetch data. You can pass options directly to it, inside the got object.

Example:

const posthtml = require('posthtml')
const pf = require('posthtml-fetch')

posthtml()
  .use(pf({
    got: {
      // pass options to got...
    }
  }))
  .process('<fetch url="https://example.test">{{ response }}</fetch>')
  .then(result => {
    console.log(result.html)
    // => ...interpolated response from https://example.test
  })

preserveTag

Allows you to leave an item. Default value false.

Example:

const posthtml = require('posthtml')
const pf = require('posthtml-fetch')

posthtml()
  .use(pf({
    preserveTag: true
  }))
  .process('<fetch url="https://example.test">{{ response }}</fetch>')
  .then(result => {
    console.log(result.html)
    // => <fetch url="https://example.test">...interpolated response from https://example.test</fetch>
  })

Plugins

after/before

List of plugins that will be called after/before receiving and processing locals

Example:

const posthtml = require('posthtml')
const pf = require('posthtml-fetch')

posthtml()
  .use(pf({
    plugins: {
      after(tree) {
        // Your plugin implementation
      },
      before: [
        tree => {
          // Your plugin implementation
        },
        tree => {
          // Your plugin implementation
        }
      ]
    }
  }))
  .process('<fetch url="https://example.test">{{ response }}</fetch>')
  .then(result => {
    console.log(result.html)
    // => ...interpolated response from https://example.test
  })
You can’t perform that action at this time.