fourbyte

package module
v0.0.0-...-08ffab2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 21, 2022 License: MIT Imports: 11 Imported by: 0

README

fourbyte Go Report Card GoDoc

4byte.directory API Client for Go.

Check out the endpoints or usage section for more information.

Documentation

https://pkg.go.dev/github.com/0xhyim/fourbyte

Install

go get -u github.com/0xhyim/fourbyte

Endpoints

Endpoint Function
/api/v1/signatures GetFunctionSignatures, GetFunctionSignatureById, CreateFunctionSignature
/api/v1/event-signatures GetEventSignatures, GetEventSignatureById, CreateEventSignature
/api/v1/import-solidity ImportFromSourceCode, ImportFromABI

Refer to 4byte.directory Official API Documentation for more information.

Usage

The fourbyte package provides access to all the endpoints listed above.

Basic Function Signature Lookup
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/0xhyim/fourbyte"
)

func main() {
	response, err := fourbyte.GetFunctionSignatures(context.Background(), fourbyte.WithHexSignature("0x1249c58b"))
	if err != nil {
		log.Fatal(err)
	}
	// "mint()"
	fmt.Println(response.Signatures[0].TextSignature)
}
Signature Lookup (following Next)
package main

import (
	"context"
	"fmt"
	"log"

	"github.com/0xhyim/fourbyte"
)

func main() {
	signatures := []fourbyte.Signature{}
	response, err := fourbyte.GetFunctionSignatures(context.Background(), fourbyte.WithTextSignature("WETH"))
	if err != nil {
		log.Fatal(err)
	}
	signatures = append(signatures, response.Signatures...)
	for response.Next != nil {
		response, err = response.Next.Follow(context.Background())
		if err != nil {
			log.Fatal(err)
		}
		signatures = append(signatures, response.Signatures...)
	}
	fmt.Println(signatures)
}

TODOS

  • Add tests to project
  • Add documentation/comments to code

License

MIT License

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func BaseUrl

func BaseUrl() *url.URL

func WithHexSignature

func WithHexSignature(hex string) filterOption

func WithPageNumber

func WithPageNumber(num int) filterOption

func WithTextSignature

func WithTextSignature(text string) filterOption

Types

type ImportResponse

type ImportResponse struct {
	Processed  int `json:"num_processed"`
	Imported   int `json:"num_imported"`
	Duplicated int `json:"num_duplicates"`
	Ignored    int `json:"num_ignored"`
}

func ImportFromABI

func ImportFromABI(ctx context.Context, contractAbi string) (resp *ImportResponse, err error)

func ImportFromSourceCode

func ImportFromSourceCode(ctx context.Context, sourceCode string) (resp *ImportResponse, err error)

type Signature

type Signature struct {
	Id            int    `json:"id,omitempty"`
	CreatedAt     string `json:"created_at,omitempty"`
	TextSignature string `json:"text_signature,omitempty"`
	ByteSignature string `json:"bytes_signature,omitempty"`
	HexSignature  string `json:"hex_signature,omitempty"`
}

func CreateEventSignature

func CreateEventSignature(ctx context.Context, textSignature string) (*Signature, error)

func CreateFunctionSignature

func CreateFunctionSignature(ctx context.Context, textSignature string) (*Signature, error)

func GetEventSignatureById

func GetEventSignatureById(ctx context.Context, id int) (*Signature, error)

func GetFunctionSignatureById

func GetFunctionSignatureById(ctx context.Context, id int) (*Signature, error)

type SignaturesResponse

type SignaturesResponse struct {
	Next       *link       `json:"next"`
	Previous   *link       `json:"previous"`
	Count      int         `json:"count"`
	Signatures []Signature `json:"results"`
}

func GetEventSignatures

func GetEventSignatures(ctx context.Context, opts ...filterOption) (*SignaturesResponse, error)

func GetFunctionSignatures

func GetFunctionSignatures(ctx context.Context, opts ...filterOption) (*SignaturesResponse, error)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL