http11p

package module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Feb 12, 2023 License: BSD-3-Clause Imports: 3 Imported by: 0

README

http11-parser

Usage

$ go get github.com/um7a/http11-parser@v0.0.5
Http Request Parser
package main

import (
	"fmt"

	http11p "github.com/um7a/http11-parser"
)

func main() {
	reqData := []byte(
		"POST /path1/path2 HTTP/1.1\r\n" +
		"Content-Length: 7\r\n" +
		"User-Agent: some-client\r\n" +
		"\r\n" +
		"abcdefg",
	)

	var req http11p.Http11Request
	err := req.Marshal(reqData)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Printf("Method : %s\n", req.Method)
	fmt.Printf("RequestTarget : %s\n", req.RequestTarget)
	fmt.Printf("HttpVersion: %s\n", req.HttpVersion)
	fmt.Printf("Cache-Control: %s\n", req.GetHeader("Content-Length"))
	fmt.Printf("User-Agent: %s\n", req.GetHeader("User-Agent"))
	fmt.Printf("MessageBody: %s\n", req.MessageBody)
}
$ go run request_parser.go
Method : POST
RequestTarget : /path1/path2
HttpVersion: HTTP/1.1
Cache-Control: 7
User-Agent: some-client
MessageBody: abcdefg
Http Response Parser
package main

import (
	"fmt"

	http11p "github.com/um7a/http11-parser"
)

func main() {
	respData := []byte(
		"HTTP/1.1 200 OK\r\n" +
		"Content-Length: 7\r\n" +
		"\r\n" +
		"abcdefg",
	)

	var resp http11p.Http11Response
	err := resp.Marshal(respData)
	if err != nil {
		fmt.Println(err.Error())
		return
	}
	fmt.Printf("HttpVersion: %s\n", resp.HttpVersion)
	fmt.Printf("StatusCode: %s\n", resp.StatusCode)
	fmt.Printf("ReasonPhrase: %s\n", resp.ReasonPhrase)
	fmt.Printf("Content-Length: %s\n", resp.GetHeader("Content-Length"))
	fmt.Printf("MessageBody: %s\n", resp.MessageBody)
}
$ go run response_parser.go
HttpVersion: HTTP/1.1
StatusCode: 200
ReasonPhrase: OK
Content-Length: 7
MessageBody: abcdefg

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewAbsoluteFormFinder added in v0.0.4

func NewAbsoluteFormFinder() abnfp.Finder

func NewAbsolutePathFinder added in v0.0.4

func NewAbsolutePathFinder() abnfp.Finder

func NewAsteriskFormFinder added in v0.0.4

func NewAsteriskFormFinder() abnfp.Finder

func NewAuthorityFormFinder added in v0.0.4

func NewAuthorityFormFinder() abnfp.Finder

func NewBwsFinder added in v0.0.4

func NewBwsFinder() abnfp.Finder

func NewFieldContentFinder added in v0.0.4

func NewFieldContentFinder() abnfp.Finder

func NewFieldLineFinder added in v0.0.4

func NewFieldLineFinder() abnfp.Finder

func NewFieldNameFinder added in v0.0.4

func NewFieldNameFinder() abnfp.Finder

func NewFieldVCharFinder added in v0.0.4

func NewFieldVCharFinder() abnfp.Finder

func NewFieldValueFinder added in v0.0.4

func NewFieldValueFinder() abnfp.Finder

func NewHttpMessageFinder added in v0.0.4

func NewHttpMessageFinder() abnfp.Finder

func NewHttpNameFinder added in v0.0.4

func NewHttpNameFinder() abnfp.Finder

func NewHttpVersionFinder added in v0.0.4

func NewHttpVersionFinder() abnfp.Finder

func NewMessageBodyFinder added in v0.0.4

func NewMessageBodyFinder() abnfp.Finder

func NewMethodFinder added in v0.0.4

func NewMethodFinder() abnfp.Finder

func NewObsTextFinder added in v0.0.4

func NewObsTextFinder() abnfp.Finder

func NewOriginFormFinder added in v0.0.4

func NewOriginFormFinder() abnfp.Finder

func NewOwsFinder added in v0.0.4

func NewOwsFinder() abnfp.Finder

func NewQdTextFinder added in v0.0.4

func NewQdTextFinder() abnfp.Finder

NOTE x21 : ! x23-5B : #, $, %, & ' ( ) * + , - . / 0-9, : ; < = > ? @ A-Z [ x5D-7E : ] ^ _ ` a-z { | } ~

func NewQuotedPairFinder added in v0.0.4

func NewQuotedPairFinder() abnfp.Finder

func NewQuotedStringFinder added in v0.0.4

func NewQuotedStringFinder() abnfp.Finder

func NewReasonPhraseFinder added in v0.0.4

func NewReasonPhraseFinder() abnfp.Finder

func NewRequestLineFinder added in v0.0.4

func NewRequestLineFinder() abnfp.Finder

func NewRequestTargetFinder added in v0.0.4

func NewRequestTargetFinder() abnfp.Finder

func NewRwsFinder added in v0.0.4

func NewRwsFinder() abnfp.Finder

func NewStartLineFinder added in v0.0.4

func NewStartLineFinder() abnfp.Finder

func NewStatusCodeFinder added in v0.0.4

func NewStatusCodeFinder() abnfp.Finder

func NewStatusLineFinder added in v0.0.4

func NewStatusLineFinder() abnfp.Finder

func NewTCharFinder added in v0.0.4

func NewTCharFinder() abnfp.Finder

func NewTokenFinder added in v0.0.4

func NewTokenFinder() abnfp.Finder

func NewUriHostFinder added in v0.0.4

func NewUriHostFinder() abnfp.Finder

Types

type FieldLine

type FieldLine struct {
	FieldName  []byte
	FieldValue []byte
}

type Http11Request

type Http11Request struct {
	Method        []byte
	RequestTarget []byte
	HttpVersion   []byte
	FieldLines    []FieldLine
	MessageBody   []byte
}

func (Http11Request) GetHeader

func (req Http11Request) GetHeader(name string) []byte

func (*Http11Request) Marshal

func (req *Http11Request) Marshal(data []byte) (err error)

func (Http11Request) String

func (req Http11Request) String() string

func (Http11Request) Unmarshal

func (req Http11Request) Unmarshal() (data []byte)

type Http11Response

type Http11Response struct {
	HttpVersion  []byte
	StatusCode   []byte
	ReasonPhrase []byte
	FieldLines   []FieldLine
	MessageBody  []byte
}

func (Http11Response) GetHeader

func (resp Http11Response) GetHeader(name string) []byte

func (*Http11Response) Marshal

func (resp *Http11Response) Marshal(data []byte) (err error)

func (Http11Response) String

func (resp Http11Response) String() string

func (Http11Response) Unmarshal

func (resp Http11Response) Unmarshal() (data []byte)

Jump to

Keyboard shortcuts

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