rq

package module
v0.0.0-...-5793855 Latest Latest
Warning

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

Go to latest
Published: Nov 13, 2023 License: MIT Imports: 14 Imported by: 0

README

rq

About

Golang API for making http requests using .http files.

Installation

Go Library
go get github.com/bnprtr/rq
CLI
go install github.com/bnprtr/rq/cmd/rq

.http File Syntax

### <name of request>
< {% <pre-request
javascipt> %} 

<method> <url>
<header>:<value>
...

<request body>

< {% <post-request 
javascript> %}
Examples
### Get a Foo
< {% 
    request.url = request.url+"?foo=bar"; // add a query param
%}
POST http://localhost:8000/foo
Content-Type: application/json

{
    "foo": "bar"
}

< {% 
    assertTrue("response code is 200", response.status === 200);
%}
Executing from the Terminal UI
rq
Executing from the CLI
rq -e host=localhost;protocol=http;port=8080 file path/to/file.http
Running .http Files from Go Tests
package test

import (
	"testing"
	
	"github.com/bnprtr/rq/rqtest"
)

func TestFoo(t *testing.T) {
	opts := []rq.Option {
        rqtest.WithEnvironment(map[string]string{"host": "localhost:8000"}),
    }
	
    rqtest.TestDir(t, "testdata", opts...) // run all .http files in ./testdata 
    rqtest.TestFile(t, "testdata/foo.http", opts...) // run a single .http file
}

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func HttpClientFromContext

func HttpClientFromContext(ctx context.Context) *http.Client

func ParseEnv

func ParseEnv(data string) map[string]string

func ParseEnvFile

func ParseEnvFile(path string) (map[string]string, error)

func WithHttpClient

func WithHttpClient(ctx context.Context, client *http.Client) context.Context

func WriteFile

func WriteFile(data FileData) error

func WriteRequest

func WriteRequest(writer io.Writer, request Request) error

Types

type Assertion

type Assertion struct {
	Name   string `json:"name"`
	Result bool   `json:"result"`
}

type FileData

type FileData struct {
	Filename string    `json:"filename"`
	Requests []Request `json:"requests"`
}

func OpenDir

func OpenDir(path string) ([]FileData, error)

func OpenFile

func OpenFile(path string) (FileData, error)

type Request

type Request struct {
	ID                uuid.UUID         `json:"id"`
	Name              string            `json:"name"`
	Method            string            `json:"method"`
	URL               string            `json:"url"`
	Headers           map[string]string `json:"headers"`
	Body              string            `json:"body"`
	PreRequestScript  string            `json:"preRequestScript"`
	PostRequestScript string            `json:"postRequestScript"`
}

func Parse

func Parse(input []byte) ([]Request, error)

func (*Request) AddHeader

func (r *Request) AddHeader(key, value string)

func (*Request) Do

func (r *Request) Do(ctx context.Context) (*Response, error)

func (*Request) String

func (r *Request) String() string

func (*Request) ToHttpRequest

func (r *Request) ToHttpRequest(ctx context.Context) (*http.Request, error)

func (*Request) Write

func (r *Request) Write(w io.StringWriter) error

type RequestContext

type RequestContext struct {
	Context context.Context
	// contains filtered or unexported fields
}

func NewRequestContext

func NewRequestContext(ctx context.Context) *RequestContext

func (*RequestContext) ExecuteRequest

func (c *RequestContext) ExecuteRequest(request Request) (*Response, error)

ExecuteRequest will execute a request within the RequestContext.

func (*RequestContext) SetEnvironment

func (c *RequestContext) SetEnvironment(vars map[string]string)

type Response

type Response struct {
	RequestID  uuid.UUID         `json:"requestId"`
	Status     int               `json:"status"`
	Headers    map[string]string `json:"headers"`
	Body       string            `json:"body,omitempty"`
	Assertions []Assertion       `json:"assertions"`
}

func (*Response) String

func (r *Response) String() string

func (*Response) Write

func (r *Response) Write(w io.Writer) error

Directories

Path Synopsis
cmd
rq
internal

Jump to

Keyboard shortcuts

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