// Code generated by cue get go. DO NOT EDIT.

// Package http provides tasks related to the HTTP protocol.
//
// These are the supported tasks:
//
//     Get:    Do & {method: "GET"}
//     Post:   Do & {method: "POST"}
//     Put:    Do & {method: "PUT"}
//     Delete: Do & {method: "DELETE"}
//
//     Do: {
//     	kind: *"tool/http.Do" | "http" // http for backwards compatibility
//
//     	method: string
//     	url:    string // TODO: make url.URL type
//
//     	request: {
//     		body: *bytes | string
//     		header: [string]:  string | [...string]
//     		trailer: [string]: string | [...string]
//     	}
//     	response: {
//     		status:     string
//     		statusCode: int
//
//     		body: *bytes | string
//     		header: [string]:  string | [...string]
//     		trailer: [string]: string | [...string]
//     	}
//     }
//
//     //  TODO: support serving once we have the cue serve command.
//     // Serve: {
//     //  port: int
//     //
//     //  cert: string
//     //  key:  string
//     //
//     //  handle <Pattern>: Message & {
//     //   pattern: Pattern
//     //  }
//     // }
//
package http
