1.6.5 • Published 11 months ago

direct-agent v1.6.5

Weekly downloads
-
License
MIT
Repository
-
Last release
11 months 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

11 months ago

1.6.2

11 months ago

1.5.3

11 months ago

1.5.2

11 months ago

1.6.0

11 months ago

1.1.7-experimental

11 months ago

1.6.5

11 months ago

1.4.5

11 months ago

1.3.6

11 months ago

1.3.5

11 months ago

1.4.3

11 months ago

1.5.0

11 months ago

1.3.0

11 months ago

1.1.6-experimental

11 months ago

1.0.8-experimental

11 months ago

1.1.5-experimental

11 months ago

1.1.1-experimental

11 months ago

1.0.6-experimental

11 months ago

1.0.5-experimental

11 months ago

1.1.0-experimental

11 months ago

1.0.7-experimental

11 months ago

1.0.9-experimental

11 months ago

1.4.8

11 months ago

1.2.5

11 months ago

1.2.1

11 months ago

1.2.0

11 months ago

1.1.6

11 months ago

1.1.5

12 months ago

1.1.4

12 months ago

1.1.3

12 months ago

1.1.2

12 months ago

1.1.0

12 months ago

1.0.9

12 months ago

1.0.8

12 months ago

1.0.7

12 months ago

1.0.5

12 months ago

1.0.2

12 months ago

1.0.1

12 months ago

1.0.0

12 months ago