diff options
author | Alexander Pevzner <pzz@apevzner.com> | 2020-01-13 21:50:24 +0300 |
---|---|---|
committer | Alexander Pevzner <pzz@apevzner.com> | 2020-01-13 21:50:24 +0300 |
commit | f0238a03fff5d0568264b5faa1332ae9eebf2dba (patch) | |
tree | 7c52c05ba1adcf6b32eaba3cc98fbc1413c997ef | |
parent | d253af206ef70d7085dda9106e6aa7a902b39c47 (diff) |
Working example added to documentation
-rw-r--r-- | doc.go | 50 |
1 files changed, 50 insertions, 0 deletions
@@ -22,5 +22,55 @@ by type Message, with the only difference, that Code field of that Message is the Operation code in request and Status code in response. So most of operations are common for request and response messages + +Example: + package main + + import ( + "bytes" + "net/http" + "os" + + "github.com/alexpevzner/goipp" + ) + + const uri = "http://192.168.1.102:631" + + // Build IPP OpGetPrinterAttributes request + func makeRequest() ([]byte, error) { + m := goipp.NewRequest(goipp.DefaultVersion, goipp.OpGetPrinterAttributes, 1) + m.Operation.Add(goipp.MakeAttribute("attributes-charset", + goipp.TagCharset, goipp.String("utf-8"))) + m.Operation.Add(goipp.MakeAttribute("attributes-natural-language", + goipp.TagLanguage, goipp.String("en-US"))) + m.Operation.Add(goipp.MakeAttribute("printer-uri", + goipp.TagURI, goipp.String(uri))) + m.Operation.Add(goipp.MakeAttribute("requested-attributes", + goipp.TagKeyword, goipp.String("all"))) + + return m.EncodeBytes() + } + + // Check that there is no error + func check(err error) { + if err != nil { + panic(err) + } + } + + func main() { + request, err := makeRequest() + check(err) + + resp, err := http.Post(uri, goipp.ContentType, bytes.NewBuffer(request)) + check(err) + + var respMsg goipp.Message + + err = respMsg.Decode(resp.Body) + check(err) + + respMsg.Print(os.Stdout, false) + } */ package goipp |