diff --git a/httpupload.go b/httpupload.go index 67d418b..e0c779c 100644 --- a/httpupload.go +++ b/httpupload.go @@ -7,6 +7,7 @@ package main import ( "bytes" "encoding/xml" + "fmt" "log" "net/http" "os" @@ -14,7 +15,8 @@ import ( "regexp" "strconv" - "github.com/gabriel-vasile/mimetype" // MIT License + "github.com/beevik/etree" // BSD-2-clause + "github.com/gabriel-vasile/mimetype" // MIT License) "github.com/mattn/go-xmpp" // BSD-3-Clause ) @@ -108,18 +110,20 @@ func httpUpload(client *xmpp.Client, jserver string, filePath string) string { } } - var request IQHttpUploadSlotRequest - request.Xmlns = nsHttpUpload - request.FileName = fileNameEscaped - request.FileSize = fileSize - request.FileType = mimeType - r, err := xml.Marshal(request) + request := etree.NewDocument() + requestReq := request.CreateElement("request") + requestReq.CreateAttr("xmlns", nsHttpUpload) + requestReq.CreateAttr("filename", fileNameEscaped) + requestReq.CreateAttr("size", fmt.Sprint(fileSize)) + requestReq.CreateAttr("content-type", mimeType) + r, err := request.WriteToString() + println(r) if err != nil { log.Fatal(err) } // Request http upload slot - uploadSlot, err := sendIQ(client, uploadComponent, "get", string(r)) + uploadSlot, err := sendIQ(client, uploadComponent, "get", r) if err != nil { log.Fatal(err) } diff --git a/iqstructs.go b/iqstructs.go index 4e4bbf7..aa18c03 100644 --- a/iqstructs.go +++ b/iqstructs.go @@ -45,14 +45,6 @@ type IQDiscoInfoType struct { } `xml:"x"` } -type IQHttpUploadSlotRequest struct { - XMLName xml.Name `xml:"request"` - Xmlns string `xml:"xmlns,attr"` - FileName string `xml:"filename,attr"` - FileType string `xml:"mime-type,attr"` - FileSize int64 `xml:"size,attr"` -} - // Created with https://github.com/miku/zek type IQHttpUploadSlot struct { XMLName xml.Name `xml:"slot"`