Skip to content

thisago/unifetch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Unifetch

Multi backend HTTP fetching

About - Features - Why? - Usage - License

Warning Not all backends are implemented.

About

Unified fetching

Features

  • Supported backends
    • C-like
    • Javascript
      • Web (async XMLHttpRequest)
      • NodeJS (std http/https)
      • Userscript (GM API)
  • Sharable request caching over backends and others binaries
  • Request Curl representation

Why?

Compile the same code to any backend with extra features!

Development features

Also, Unifetch provides you helpful features for development purposes

Curl representation

If some request isn't worked as expected for some reason, you can enable this feature with -d:unifetchShowCurlRepr and analyze the curl request externally!

Persistent caching

You can enable a persistent request caching with -d:unifetchCache=/tmp/unifetchCache. All requests would be saved into specified directory and skip when the parameters is exactly the same and cache exists.

In JS-web backend the cache is stored in LocalStorage, every request saves a new entry

Usage

import pkg/unifetch

echo fetch "https://example.com"

or

import pkg/unifetch

let
  uni = newUniClient()
  resp = await uni.get("https://example.com")

echo resp.body

TODO

  • Javascript Backend
    • Userscript (GM API)
    • Implement proxy at NodeJS backend
  • Add tests
  • Production ready caching (without response parameters or encrypting it) with optional expiration
    • Optional runtime only cache
  • Disable SSL checking option for NodeJS

License

This library is licensed over MIT license!