Update headers code

This commit is contained in:
Lea Anthony
2022-03-29 22:17:41 +11:00
parent 3b81986bdd
commit 6883337a18
@@ -7,6 +7,10 @@ import (
"golang.org/x/sys/windows"
)
const (
ERROR_ELEMENT_NOT_FOUND syscall.Errno = 0x80070490
)
type _ICoreWebView2HttpRequestHeadersVtbl struct {
_IUnknownVtbl
GetHeader ComProc
@@ -25,6 +29,58 @@ func (i *ICoreWebView2HttpRequestHeaders) Release() error {
return i.vtbl.CallRelease(unsafe.Pointer(i))
}
// GetHeader returns the value of the specified header. If the header is not found
// ERROR_ELEMENT_NOT_FOUND is returned as error.
func (i *ICoreWebView2HttpRequestHeaders) GetHeader(name string) (string, error) {
_name, err := windows.UTF16PtrFromString(name)
if err != nil {
return "", nil
}
var _value *uint16
res, _, err := i.vtbl.GetHeader.Call(
uintptr(unsafe.Pointer(i)),
uintptr(unsafe.Pointer(_name)),
uintptr(unsafe.Pointer(&_value)),
)
if err != windows.ERROR_SUCCESS {
return "", err
}
if windows.Handle(res) != windows.S_OK {
return "", syscall.Errno(res)
}
value := windows.UTF16PtrToString(_value)
windows.CoTaskMemFree(unsafe.Pointer(_value))
return value, nil
}
// SetHeader sets the specified header to the value.
func (i *ICoreWebView2HttpRequestHeaders) SetHeader(name, value string) error {
_name, err := windows.UTF16PtrFromString(name)
if err != nil {
return nil
}
_value, err := windows.UTF16PtrFromString(value)
if err != nil {
return nil
}
res, _, err := i.vtbl.SetHeader.Call(
uintptr(unsafe.Pointer(i)),
uintptr(unsafe.Pointer(_name)),
uintptr(unsafe.Pointer(_value)),
)
if err != windows.ERROR_SUCCESS {
return err
}
if windows.Handle(res) != windows.S_OK {
return syscall.Errno(res)
}
return nil
}
// GetIterator returns an iterator over the collection of request headers. Make sure to call
// Release on the returned Object after finished using it.
func (i *ICoreWebView2HttpRequestHeaders) GetIterator() (*ICoreWebView2HttpHeadersCollectionIterator, error) {