返回 DeepSeek-Reasonix
ICoreWebView2HttpRequestHeaders.go
根目录 / desktop / third_party / go-webview2 / pkg / edge / ICoreWebView2HttpRequestHeaders.go
1 //go:build windows
2
3 package edge
4
5 import (
6 "syscall"
7 "unsafe"
8
9 "golang.org/x/sys/windows"
10 )
11
12 const (
13 ERROR_ELEMENT_NOT_FOUND syscall.Errno = 0x80070490
14 )
15
16 type _ICoreWebView2HttpRequestHeadersVtbl struct {
17 _IUnknownVtbl
18 GetHeader ComProc
19 GetHeaders ComProc
20 Contains ComProc
21 SetHeader ComProc
22 RemoveHeader ComProc
23 GetIterator ComProc
24 }
25
26 type ICoreWebView2HttpRequestHeaders struct {
27 vtbl *_ICoreWebView2HttpRequestHeadersVtbl
28 }
29
30 func (i *ICoreWebView2HttpRequestHeaders) AddRef() error {
31 i.vtbl.AddRef.Call(uintptr(unsafe.Pointer(i)))
32
33 return nil
34 }
35
36 func (i *ICoreWebView2HttpRequestHeaders) Release() error {
37 i.vtbl.Release.Call(uintptr(unsafe.Pointer(i)))
38
39 return nil
40 }
41
42 // GetHeader returns the value of the specified header. If the header is not found
43 // ERROR_ELEMENT_NOT_FOUND is returned as error.
44 func (i *ICoreWebView2HttpRequestHeaders) GetHeader(name string) (string, error) {
45 _name, err := windows.UTF16PtrFromString(name)
46 if err != nil {
47 return "", err
48 }
49
50 var _value *uint16
51 hr, _, _ := i.vtbl.GetHeader.Call(
52 uintptr(unsafe.Pointer(i)),
53 uintptr(unsafe.Pointer(_name)),
54 uintptr(unsafe.Pointer(&_value)),
55 )
56 if windows.Handle(hr) != windows.S_OK {
57 return "", windows.Errno(hr)
58 }
59
60 value := windows.UTF16PtrToString(_value)
61 windows.CoTaskMemFree(unsafe.Pointer(_value))
62 return value, nil
63 }
64
65 // SetHeader sets the specified header to the value.
66 func (i *ICoreWebView2HttpRequestHeaders) SetHeader(name, value string) error {
67 _name, err := windows.UTF16PtrFromString(name)
68 if err != nil {
69 return err
70 }
71
72 _value, err := windows.UTF16PtrFromString(value)
73 if err != nil {
74 return err
75 }
76
77 hr, _, _ := i.vtbl.SetHeader.Call(
78 uintptr(unsafe.Pointer(i)),
79 uintptr(unsafe.Pointer(_name)),
80 uintptr(unsafe.Pointer(_value)),
81 )
82 if windows.Handle(hr) != windows.S_OK {
83 return windows.Errno(hr)
84 }
85
86 return nil
87 }
88
89 // GetIterator returns an iterator over the collection of request headers. Make sure to call
90 // Release on the returned Object after finished using it.
91 func (i *ICoreWebView2HttpRequestHeaders) GetIterator() (*ICoreWebView2HttpHeadersCollectionIterator, error) {
92 var headers *ICoreWebView2HttpHeadersCollectionIterator
93 hr, _, _ := i.vtbl.GetIterator.Call(
94 uintptr(unsafe.Pointer(i)),
95 uintptr(unsafe.Pointer(&headers)),
96 )
97 if windows.Handle(hr) != windows.S_OK {
98 return nil, windows.Errno(hr)
99 }
100
101 return headers, nil
102 }
103
103 lines GO