Skip to content

Latest commit

 

History

History
119 lines (93 loc) · 3.15 KB

README.md

File metadata and controls

119 lines (93 loc) · 3.15 KB

#Rextro Rextro is a simple api consumer in golang (go) , make api calls easily using this library. Easily read json response values like : response.success if response looks like : {"response" : {"success" : true, "error" : "none" , "code" : "200"}}

See examples below for better understanding and usage.

#Installation

go get -u -v github.com/varver/rextro

#How to Use ?

For example lets say you want to use this api : https://www.mashape.com/imagevision/nudity-recognition-nudity-filter-for-images

The curl request looks like this

curl -X POST --include 'https://nuditysearch.p.mashape.com/nuditySearch/image' \
  -H 'X-Mashape-Key: ad40Z3nH9NmdfgdfgfdgdfgfdgdfgfdgfdgfdgdfgfgAum8J6' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Accept: application/json' \
  -d 'objecturl=http://i.imgur.com/4hGni1I.jpg' \
  -d 'setting=3'

Json Response looks like this

{
  "version": "config_v8_2014-01-31",
  "message": "SUCCESS",
  "transactionid": "1234",
  "objecturl": "http://i.imgur.com/4hGni1I.jpg",
  "setting": 2,
  "score": 94,
  "classification": "NUDITY"
}

This is how the code will look like to make above call

package main

import (
	"fmt"
	"github.com/varver/rextro"
)

func Mashape(image string, api_key string) {
	req := rextro.NewTequest("https://nuditysearch.p.mashape.com/nuditySearch/image")

	//headers to be sent
	req.Headers["X-Mashape-Key"] = api_key
	req.Headers["Content-Type"] = "application/x-www-form-urlencoded"
	req.Headers["Accept"] = "application/json"

	// parameters to be sent
	req.Body["setting"] = "2"
	req.Body["objecturl"] = image

	// get response as json converted // you can also make 'GET' request instead of 'POST'
	container, err := req.FetchJson("POST")
	if err != nil {
		fmt.Println(err.Error())
		return
	}

	fmt.Println(container.String())

	/*
		// use this to get raw response as byte array
		// byteArray , err := req.Fetch("POST")

		// OR

		// use this to get response as a string
		// respString , err := req.FetchString("POST")

		// The Request is internally done using https://godoc.org/net/http#NewRequest
	*/

	//////////////////////////////////////////////////////////////////
	/// Lets fetch json values from Response looks like this ////////
	/////////////////////////////////////////////////////////////////
	/*
		{
		  "version": "config_v8_2014-01-31",
		  "message": "SUCCESS",
		  "transactionid": "1234",
		  "objecturl": "http://i.imgur.com/4hGni1I.jpg",
		  "setting": 2,
		  "score": 94,
		  "classification": "NUDITY"
		}
	*/

	message := container.Path("message").Data().(string)
	if message == "SUCCESS" {
		fmt.Println(container.Path("classification").Data().(string))
	} else {
		fmt.Print("Something went wrong")
	}

}

func main() {
	key := "YOUR_API_KEY"
	image_url := "http://i.imgur.com/4hGni1I.jpg"
	Mashape(image_url, key)
}

#Note The package internally uses : https://github.com/Jeffail/gabs to parse json , you can refer its godoc here : https://godoc.org/github.com/Jeffail/gabs to do more stuff on FetchJson output , as it returns the Container of gabs package.