Skip to content

JECSand/fetch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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)
}

About

A Pre-made Golang Module For Async REST Calls

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages