github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/fake/groups_server.go (about) 1 //go:build go1.18 2 // +build go1.18 3 4 // Copyright (c) Microsoft Corporation. All rights reserved. 5 // Licensed under the MIT License. See License.txt in the project root for license information. 6 // Code generated by Microsoft (R) AutoRest Code Generator. DO NOT EDIT. 7 // Changes may cause incorrect behavior and will be lost if the code is regenerated. 8 9 package fake 10 11 import ( 12 "context" 13 "errors" 14 "fmt" 15 azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" 16 "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" 17 "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" 18 "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" 19 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6" 20 "net/http" 21 "net/url" 22 "regexp" 23 "strconv" 24 ) 25 26 // GroupsServer is a fake server for instances of the armnetwork.GroupsClient type. 27 type GroupsServer struct { 28 // CreateOrUpdate is the fake for method GroupsClient.CreateOrUpdate 29 // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated 30 CreateOrUpdate func(ctx context.Context, resourceGroupName string, networkManagerName string, networkGroupName string, parameters armnetwork.Group, options *armnetwork.GroupsClientCreateOrUpdateOptions) (resp azfake.Responder[armnetwork.GroupsClientCreateOrUpdateResponse], errResp azfake.ErrorResponder) 31 32 // BeginDelete is the fake for method GroupsClient.BeginDelete 33 // HTTP status codes to indicate success: http.StatusOK, http.StatusAccepted, http.StatusNoContent 34 BeginDelete func(ctx context.Context, resourceGroupName string, networkManagerName string, networkGroupName string, options *armnetwork.GroupsClientBeginDeleteOptions) (resp azfake.PollerResponder[armnetwork.GroupsClientDeleteResponse], errResp azfake.ErrorResponder) 35 36 // Get is the fake for method GroupsClient.Get 37 // HTTP status codes to indicate success: http.StatusOK 38 Get func(ctx context.Context, resourceGroupName string, networkManagerName string, networkGroupName string, options *armnetwork.GroupsClientGetOptions) (resp azfake.Responder[armnetwork.GroupsClientGetResponse], errResp azfake.ErrorResponder) 39 40 // NewListPager is the fake for method GroupsClient.NewListPager 41 // HTTP status codes to indicate success: http.StatusOK 42 NewListPager func(resourceGroupName string, networkManagerName string, options *armnetwork.GroupsClientListOptions) (resp azfake.PagerResponder[armnetwork.GroupsClientListResponse]) 43 } 44 45 // NewGroupsServerTransport creates a new instance of GroupsServerTransport with the provided implementation. 46 // The returned GroupsServerTransport instance is connected to an instance of armnetwork.GroupsClient via the 47 // azcore.ClientOptions.Transporter field in the client's constructor parameters. 48 func NewGroupsServerTransport(srv *GroupsServer) *GroupsServerTransport { 49 return &GroupsServerTransport{ 50 srv: srv, 51 beginDelete: newTracker[azfake.PollerResponder[armnetwork.GroupsClientDeleteResponse]](), 52 newListPager: newTracker[azfake.PagerResponder[armnetwork.GroupsClientListResponse]](), 53 } 54 } 55 56 // GroupsServerTransport connects instances of armnetwork.GroupsClient to instances of GroupsServer. 57 // Don't use this type directly, use NewGroupsServerTransport instead. 58 type GroupsServerTransport struct { 59 srv *GroupsServer 60 beginDelete *tracker[azfake.PollerResponder[armnetwork.GroupsClientDeleteResponse]] 61 newListPager *tracker[azfake.PagerResponder[armnetwork.GroupsClientListResponse]] 62 } 63 64 // Do implements the policy.Transporter interface for GroupsServerTransport. 65 func (g *GroupsServerTransport) Do(req *http.Request) (*http.Response, error) { 66 rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) 67 method, ok := rawMethod.(string) 68 if !ok { 69 return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} 70 } 71 72 var resp *http.Response 73 var err error 74 75 switch method { 76 case "GroupsClient.CreateOrUpdate": 77 resp, err = g.dispatchCreateOrUpdate(req) 78 case "GroupsClient.BeginDelete": 79 resp, err = g.dispatchBeginDelete(req) 80 case "GroupsClient.Get": 81 resp, err = g.dispatchGet(req) 82 case "GroupsClient.NewListPager": 83 resp, err = g.dispatchNewListPager(req) 84 default: 85 err = fmt.Errorf("unhandled API %s", method) 86 } 87 88 if err != nil { 89 return nil, err 90 } 91 92 return resp, nil 93 } 94 95 func (g *GroupsServerTransport) dispatchCreateOrUpdate(req *http.Request) (*http.Response, error) { 96 if g.srv.CreateOrUpdate == nil { 97 return nil, &nonRetriableError{errors.New("fake for method CreateOrUpdate not implemented")} 98 } 99 const regexStr = `/subscriptions/(?P<subscriptionId>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P<resourceGroupName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Network/networkManagers/(?P<networkManagerName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/networkGroups/(?P<networkGroupName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` 100 regex := regexp.MustCompile(regexStr) 101 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 102 if matches == nil || len(matches) < 4 { 103 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 104 } 105 body, err := server.UnmarshalRequestAsJSON[armnetwork.Group](req) 106 if err != nil { 107 return nil, err 108 } 109 resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) 110 if err != nil { 111 return nil, err 112 } 113 networkManagerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkManagerName")]) 114 if err != nil { 115 return nil, err 116 } 117 networkGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkGroupName")]) 118 if err != nil { 119 return nil, err 120 } 121 ifMatchParam := getOptional(getHeaderValue(req.Header, "If-Match")) 122 var options *armnetwork.GroupsClientCreateOrUpdateOptions 123 if ifMatchParam != nil { 124 options = &armnetwork.GroupsClientCreateOrUpdateOptions{ 125 IfMatch: ifMatchParam, 126 } 127 } 128 respr, errRespr := g.srv.CreateOrUpdate(req.Context(), resourceGroupNameParam, networkManagerNameParam, networkGroupNameParam, body, options) 129 if respErr := server.GetError(errRespr, req); respErr != nil { 130 return nil, respErr 131 } 132 respContent := server.GetResponseContent(respr) 133 if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { 134 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} 135 } 136 resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Group, req) 137 if err != nil { 138 return nil, err 139 } 140 if val := server.GetResponse(respr).ETag; val != nil { 141 resp.Header.Set("ETag", *val) 142 } 143 return resp, nil 144 } 145 146 func (g *GroupsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { 147 if g.srv.BeginDelete == nil { 148 return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} 149 } 150 beginDelete := g.beginDelete.get(req) 151 if beginDelete == nil { 152 const regexStr = `/subscriptions/(?P<subscriptionId>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P<resourceGroupName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Network/networkManagers/(?P<networkManagerName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/networkGroups/(?P<networkGroupName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` 153 regex := regexp.MustCompile(regexStr) 154 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 155 if matches == nil || len(matches) < 4 { 156 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 157 } 158 qp := req.URL.Query() 159 resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) 160 if err != nil { 161 return nil, err 162 } 163 networkManagerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkManagerName")]) 164 if err != nil { 165 return nil, err 166 } 167 networkGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkGroupName")]) 168 if err != nil { 169 return nil, err 170 } 171 forceUnescaped, err := url.QueryUnescape(qp.Get("force")) 172 if err != nil { 173 return nil, err 174 } 175 forceParam, err := parseOptional(forceUnescaped, strconv.ParseBool) 176 if err != nil { 177 return nil, err 178 } 179 var options *armnetwork.GroupsClientBeginDeleteOptions 180 if forceParam != nil { 181 options = &armnetwork.GroupsClientBeginDeleteOptions{ 182 Force: forceParam, 183 } 184 } 185 respr, errRespr := g.srv.BeginDelete(req.Context(), resourceGroupNameParam, networkManagerNameParam, networkGroupNameParam, options) 186 if respErr := server.GetError(errRespr, req); respErr != nil { 187 return nil, respErr 188 } 189 beginDelete = &respr 190 g.beginDelete.add(req, beginDelete) 191 } 192 193 resp, err := server.PollerResponderNext(beginDelete, req) 194 if err != nil { 195 return nil, err 196 } 197 198 if !contains([]int{http.StatusOK, http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { 199 g.beginDelete.remove(req) 200 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} 201 } 202 if !server.PollerResponderMore(beginDelete) { 203 g.beginDelete.remove(req) 204 } 205 206 return resp, nil 207 } 208 209 func (g *GroupsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { 210 if g.srv.Get == nil { 211 return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} 212 } 213 const regexStr = `/subscriptions/(?P<subscriptionId>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P<resourceGroupName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Network/networkManagers/(?P<networkManagerName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/networkGroups/(?P<networkGroupName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` 214 regex := regexp.MustCompile(regexStr) 215 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 216 if matches == nil || len(matches) < 4 { 217 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 218 } 219 resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) 220 if err != nil { 221 return nil, err 222 } 223 networkManagerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkManagerName")]) 224 if err != nil { 225 return nil, err 226 } 227 networkGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkGroupName")]) 228 if err != nil { 229 return nil, err 230 } 231 respr, errRespr := g.srv.Get(req.Context(), resourceGroupNameParam, networkManagerNameParam, networkGroupNameParam, nil) 232 if respErr := server.GetError(errRespr, req); respErr != nil { 233 return nil, respErr 234 } 235 respContent := server.GetResponseContent(respr) 236 if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { 237 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} 238 } 239 resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).Group, req) 240 if err != nil { 241 return nil, err 242 } 243 return resp, nil 244 } 245 246 func (g *GroupsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { 247 if g.srv.NewListPager == nil { 248 return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} 249 } 250 newListPager := g.newListPager.get(req) 251 if newListPager == nil { 252 const regexStr = `/subscriptions/(?P<subscriptionId>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/resourceGroups/(?P<resourceGroupName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/providers/Microsoft\.Network/networkManagers/(?P<networkManagerName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/networkGroups` 253 regex := regexp.MustCompile(regexStr) 254 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 255 if matches == nil || len(matches) < 3 { 256 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 257 } 258 qp := req.URL.Query() 259 resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) 260 if err != nil { 261 return nil, err 262 } 263 networkManagerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkManagerName")]) 264 if err != nil { 265 return nil, err 266 } 267 topUnescaped, err := url.QueryUnescape(qp.Get("$top")) 268 if err != nil { 269 return nil, err 270 } 271 topParam, err := parseOptional(topUnescaped, func(v string) (int32, error) { 272 p, parseErr := strconv.ParseInt(v, 10, 32) 273 if parseErr != nil { 274 return 0, parseErr 275 } 276 return int32(p), nil 277 }) 278 if err != nil { 279 return nil, err 280 } 281 skipTokenUnescaped, err := url.QueryUnescape(qp.Get("$skipToken")) 282 if err != nil { 283 return nil, err 284 } 285 skipTokenParam := getOptional(skipTokenUnescaped) 286 var options *armnetwork.GroupsClientListOptions 287 if topParam != nil || skipTokenParam != nil { 288 options = &armnetwork.GroupsClientListOptions{ 289 Top: topParam, 290 SkipToken: skipTokenParam, 291 } 292 } 293 resp := g.srv.NewListPager(resourceGroupNameParam, networkManagerNameParam, options) 294 newListPager = &resp 295 g.newListPager.add(req, newListPager) 296 server.PagerResponderInjectNextLinks(newListPager, req, func(page *armnetwork.GroupsClientListResponse, createLink func() string) { 297 page.NextLink = to.Ptr(createLink()) 298 }) 299 } 300 resp, err := server.PagerResponderNext(newListPager, req) 301 if err != nil { 302 return nil, err 303 } 304 if !contains([]int{http.StatusOK}, resp.StatusCode) { 305 g.newListPager.remove(req) 306 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} 307 } 308 if !server.PagerResponderMore(newListPager) { 309 g.newListPager.remove(req) 310 } 311 return resp, nil 312 }