gost

package module
v0.0.1 Latest Latest
Warning

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

Go to latest
Published: Apr 9, 2022 License: MIT Imports: 12 Imported by: 0

README

gost

Go API to Test Internet Speed using speedtest.net or fast.com

API Usage

The code below tests download and upload speeds using speedtest.net and fast.com.

package main

import (
	"context"
	"fmt"

	"github.com/user358/gost"
)

func main() {
	stProvider, err := gost.NewSpeedTestProvider()
	if err != nil {
		panic(err)
	}

	stResult, err := gost.Measure(context.Background(), stProvider)
	if err != nil {
		panic(err)
	}

	fmt.Printf("speedtest.net download: %5.2f Mbit/s\n", stResult.Download)
	fmt.Printf("speedtest.net upload: %5.2f Mbit/s\n\n", stResult.Upload)

	fastProvider, err := gost.NewFastProvider(false, nil)
	if err != nil {
		panic(err)
	}

	fastResult, err := gost.Measure(context.Background(), fastProvider)
	if err != nil {
		panic(err)
	}

	fmt.Printf("fast.com download: %5.2f Mbit/s\n", fastResult.Download)
	fmt.Printf("fast.com upload: %5.2f Mbit/s\n\n", fastResult.Upload)
}

Test

go test -v

Benchmark

go test -bench=.

LICENSE

MIT

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNoEndpointUrls = errors.New("no endpoint urls")

ErrNoEndpointUrls is returned if the list of urls to speed test was not received.

Functions

This section is empty.

Types

type FastProvider

type FastProvider struct {
	// contains filtered or unexported fields
}

FastProvider is used to implement Provider.

func NewFastProvider

func NewFastProvider(savingMode bool, doer *http.Client) (*FastProvider, error)

NewFastProvider constructor for FastProvider. saveMode = true using less memory (≒10MB), though low accuracy (especially > 30Mbps). doer is using for making http requests, if it is nil http.DefaultDoer will be used.

func (*FastProvider) Download

func (r *FastProvider) Download(ctx context.Context) (float64, error)

Download implements Provider.

func (*FastProvider) Upload

func (r *FastProvider) Upload(ctx context.Context) (float64, error)

Upload implements Provider.

type Provider

type Provider interface {
	// Download should return the download speed in Mbit/s.
	Download(ctx context.Context) (float64, error)

	// Upload should return the upload speed in Mbit/s.
	Upload(ctx context.Context) (float64, error)
}

Provider is the interface that wraps the basic Download and Upload methods.

type Result

type Result struct {
	Download float64 // download speed in Mbit/s
	Upload   float64 // upload speed in Mbit/s
}

Result uses as result for Measure method.

func Measure

func Measure(ctx context.Context, provider Provider) (*Result, error)

Measure returns download and upload speed in Mbit/s.

type SpeedTestProvider

type SpeedTestProvider struct {
	// contains filtered or unexported fields
}

SpeedTestProvider is used to implement Provider.

func NewSpeedTestProvider

func NewSpeedTestProvider() (*SpeedTestProvider, error)

NewSpeedTestProvider constructor for SpeedTestProvider.

func (*SpeedTestProvider) Download

func (r *SpeedTestProvider) Download(ctx context.Context) (float64, error)

Download implements Provider.

func (*SpeedTestProvider) Upload

func (r *SpeedTestProvider) Upload(ctx context.Context) (float64, error)

Upload implements Provider.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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