1.6.5 • Published 1 year ago

direct-agent v1.6.5

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

direct-agent

HTTP requests for React or Vite React with an internal useEffect, with a time interval for repeating the request integrated. Also having the option to use it without useEffect or for single calls.

Install

npm:

npm install direct-agent

pnpm:

pnpm install direct-agent

Version 1.2.5

  • Fixed memory leaks
  • Ajusted tutorial for non useEffect with intervals
  • Adjusted tutorial for creating default route
  • Added internal interval for non useEffect
  • Added option to clear interval (if needed)

Supported frameworks

  • React (Vanilla | Full Support)
  • React (Vite | Full Support)
  • NodeJS (Omit Array to not use useEffect)

Usage

  • Credentials are always enabled if a Header is not set (More information in the Headers section).
  • Currently, it only supports GET and POST http requests.
import { useState } from 'react'
import pulse from 'direct-agent'

function Home() {

  const [result, setResult] = useState('Loading...')

  pulse.get('/route', data => {
    if (data.status == 200) setResult(data.body)
    if (data.status == 404) console.log('NOT FOUND')
  }, [])

  pulse.post('/route', { id: id }, data => {
    if (data.status == 200) setResult(data.body)
    if (data.status == 404) console.log('NOT FOUND')
  }, [])

  return <span>{result}</span>

}

Use route without env file

  • If 'http / https' is detected in the route, the default route in the env file will not be used.
  pulse.get('http://localhost/route', data => {
      if (data.status == 200) setResult(data.body)
      if (data.status == 404) console.log('NOT FOUND')
  }, [])

Add default route

  • To add a default route, you should create a .env file with the following content.

  • React REACT_APP_API_URL=http(s)://route

  • React with Vite VITE_API_URL=http(s)://route

Intervals with useEffect

  • The array ([]) must always be present if you want the behavior of a useEffect.
  • The parameter after the dependencies is the interval time until it triggers again.
  • The parameter after the interval is whether it should trigger on startup or not.
  • If useEffect is not used, the dependencies can act as the interval, and the interval can act as an immediate trigger.
  • If you're not going to clear the interval you can call only data function, but it will on component dismount.
  pulse.post('/route', { id: id }, (data, clear) => {
    if (data.status == 200) setResult(data.body)
    if (data.status == 404) console.log('NOT FOUND')
    if (data.status == 500) clear() // clear self interval - if not declared, it will be auto on dismount

  }, [], 5000, true)

Intervals without useEffect

  • Omitting the array ([]) means not using useEffect.
  • You need to manually clear with clear function it when it's done to not have a memory leak.
  • If you're not going to clear the interval (be careful), you can call only data function.
  pulse.post('/route', { id: id }, (data, clear) => {

    if (data.status == 200) {

      clear() // clear self interval
      console.log(data.body)

    } else if (data.status == 409) {

      clear() // clear self interval
      console.log('CONFLICT')

    }

  }, 5000, true)

Clearing intervals

  • If you are using useEffect behavior, you don't need to clear it if you don't need, it will be cleared on dismount.
  • If you are not using useEffect behavior, pay attention and be careful to always clear intervals that already did what sould do.
  pulse.post('/route', { id: id }, (data, clear) => {

    if (data.status == 200) {
      console.log("oh, it's already done")
      clear() // clear self interval
    }

  }, 5000, true)

Add one or multiple headers to the request

  • If the first parameter is an array, it will act as multiple headers.
  • If there are multiple headers, the second parameter will be the option to toggle withCredentials.
  • By default, when using headers, credentials are disabled, you need to set it to true manually.
  pulse.post('/route', { id: id }, data => {
    if (data.status == 200) setResultado(data.body)
    if (data.status == 404) console.log('NOT FOUND')
  }, []).set('Authorization', `Bearer ${token}`)

  pulse.post('/route', { id: id }, data => {
    if (data.status == 200) setResultado(data.body)
    if (data.status == 404) console.log('NOT FOUND')
  }, []).set('Authorization', `Bearer ${token}`, true)

  All usages:

 .set('Authorization', `Bearer ${token}`) - Credentials are disabled by default.
 .set({'Authorization': `Bearer ${token}`}) - Multiple headers and credentials are disabled.
 .set('Authorization', `Bearer ${token}`, true) - Credentials enabled manually.
 .set({'Authorization': `Bearer ${token}`}, true) - Multiple headers and credentials enabled manually.

All possible imports

import pulse from 'direct-agent'
import { get, post } from 'direct-agent'
1.6.3

1 year ago

1.6.2

1 year ago

1.5.3

1 year ago

1.5.2

1 year ago

1.6.0

1 year ago

1.6.5

1 year ago

1.4.5

1 year ago

1.3.6

1 year ago

1.3.5

1 year ago

1.4.3

1 year ago

1.5.0

1 year ago

1.3.0

1 year ago

1.4.8

1 year ago

1.2.5

1 year ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.6

1 year ago

1.1.5

1 year ago

1.1.4

1 year ago

1.1.3

1 year ago

1.1.2

1 year ago

1.1.0

1 year ago

1.0.9

1 year ago

1.0.8

1 year ago

1.0.7

1 year ago

1.0.5

1 year ago

1.0.2

1 year ago

1.0.1

1 year ago

1.0.0

1 year ago