Coder Social home page Coder Social logo

getfile's Introduction

Fetch File

Fetch File is intended for conditional fetch of a file from a server onto the filesystem, making use of modern cache control techniques in a seamless and invisible fashion.

At the time of download, Fetch File stores pertinent cache control information into extended attributes. When called to fetch a file, Fetch File reads these attributes to determine whether the content is expired and needs updating or not.

API

As per request module. Additional options:

  • filename specifies the local filename to be read from & written into. Will use basename of url if not specified.
  • silent for when no actual content needs be returned to the program (just write the file).
  • mustRevalidate insures content is checked for freshness.
  • noMtime prevents use of modification time as a fallback for download-date.
  • writeFile prevents the file from being re-written.

Example

// download robots.txt if not updated
require('fetch-file')('https://yoyodyne.net/robots.txt')
// efficiently download robots.txt if not updated
require('fetch-file')({url: 'https://yoyodyne.net/robots.txt', silent: true})
// download robots.txt and blab about it
require('fetch-file')('https://yoyodyne.net/robots.txt', function(err, response, body){
	if(err) console.error('something went wrong gettings robots.txt')
	else if(!response) console.info('robots were here and weren't expired')
	else console.info('we fetched robots, size:', body.length)
})

Extended Attributes

  • expires is populated by either a cache-control: max-age or expires tag from the server, and designates a period that the content is good until.
  • download-date is sent as an If-Modified-Since header to the server.
  • etag is sent as an If-None-Match header to the server.

getfile's People

Contributors

rektide avatar

Watchers

 avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.