Skip to content

Latest commit

 

History

History
83 lines (67 loc) · 2.77 KB

README.md

File metadata and controls

83 lines (67 loc) · 2.77 KB

fetch

A pre-made Golang module for making easy async REST calls.

Build Status Go Report Card

  • Author(s): John Connor Sanders
  • License: Apache Version 2.0
  • Version Release Date: 06/17/2021
  • Current Version: 0.0.3

License

  • Copyright 2021 John Connor Sanders

This source code of this package is released under the Apache Version 2.0 license. Please see the LICENSE for the full content of the license.

Installation

$ go get github.com/JECSand/fetch

Usage

package main

import (
	"bytes"
	"github.com/JECSand/fetch"
	"log"
)


func main() {
	
	// 1: Setup Variable Parameters for Requests.
	endPoint := "https://fakerapi.it/api/v1/books?_quantity=1" // string
	method := "GET" // string
	endPoint2 := "https://fakerapi.it/api/v1/companies?_quantity=5" // string
	method2 := "GET" // string
	//**In cases where the Body parameter is not nil, it can be setup as follows:
	// body := bytes.NewBuffer([]byte(`{"username":"test","password":"password123"}`))
	
	// 2: Initialize a new Fetch Structure with parameters.
	f, err := fetch.NewFetch(endPoint, method, fetch.JSONDefaultHeaders(), nil)
	if err != nil {
		log.Fatalf("Failed to initialize new Fetch Struct 1: %v", err)
	}
	log.Printf("Successfully initialized new Fetch Struct 1: %v", f)
	f2, err2 := fetch.NewFetch(endPoint2, method2, fetch.JSONDefaultHeaders(), nil)
	if err2 != nil {
		log.Fatalf("Failed to initialize new Fetch Struct 2: %v", err2)
	}
	log.Printf("Successfully initialized new Fetch Struct 2: %v", f2)
	
	// 3: Initialize a new multipart File Fetch 
	method = "POST"
	fContent := []byte("This is the POST file's contents!")
	f3, err := fetch.NewFileFetch("test.txt", endPoint, method, fetch.DefaultHeaders(), bytes.NewBuffer(fContent))
	if err != nil {
		log.Fatalf("Failed to initialize new Fetch Struct 3: %v", err)
	}
	log.Printf("Successfully initialized new Fetch Struct 3: %v", f3)
	
	// 4: Execute Fetch structs' Async Requests and store structs in a Slice of Fetch.
	f.Execute("") // **Optionally you can use "discard" instead of "" to throw the http response away.
	f2.Execute("") // **Ditto from above.
	f3.Execute("") // **Ditto from above.
	fProcesses := []*fetch.Fetch{f, f2, f3}
	
	// 5: Resolve Fetch structs' as needed.
	fProcesses[0].Resolve()
	fProcesses[1].Resolve()
	fProcesses[2].Resolve()
	
	// 6: Access *http.Response in Fetch structs.
	log.Printf("Successfully resolved Fetch Struct 1: %v", f.Res)
	log.Printf("Successfully resolved Fetch Struct 2: %v", f2.Res)
	log.Printf("Successfully resolved Fetch Struct 3: %v", f3.Res)
}