GithubHelp home page GithubHelp logo

go-duktape-fetch's Introduction

go-duktape-fetch wercker status

Fetch polyfill for go-duktape.

Usage

First of all install the package go get gopkg.in/olebedev/go-duktape-fetch.v2.

package main

import (
  "fmt"

  "gopkg.in/olebedev/go-duktape.v2"
  "gopkg.in/olebedev/go-duktape-fetch.v2"
)

func main() {
  // create an ecmascript context
  ctx := duktape.New()
  // push fetch into the global scope
  fetch.PushGlobal(ctx, nil)
  ch := make(chan string)
  ctx.PushGlobalGoFunction("cbk", func(c *duktape.Context) int {
    ch <- c.SafeToString(-1)
    return 0
  })
  // make a request
  ctx.PevalString(`
    fetch('http://ya.ru').then(function(resp) {
      return resp.text();
    }).then(function(body) {
      // release channel
      cbk(body.slice(0, 15));
    });
  `)
  // print head line of the response body
  fmt.Println(<-ch)
}

This program will prodice <!DOCTYPE html> into stdout.

Also you can define fetch with some other good possibilities. In particular you can specify local http instance with http.Handler interface as a the second parameter. It will be used for all local requests which url starts with /(single slash). See tests for more detail.

go-duktape-fetch's People

Contributors

olebedev avatar renfredxh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

go-duktape-fetch's Issues

error after go get

I got this error after go getting the package

$ go get gopkg.in/olebedev/go-duktape-fetch.v2

../../../gopkg.in/olebedev/go-duktape.v2/duktape.go:83: constant 18446744073709551615 overflows int

go version: go version go1.9 darwin/amd64

Doesn't work with authenticated sessions using cookies

server side fetch doesn't work well with session based authentication middlewares. The remote addr, as well some other request parameters, is not passed, hence most session based middlewares cannot validate the session.

The alternative for making authenticated server calls seems to be to use a jwt which seems redundant.

Any thoughts?

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.