github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/fake/staticcidrs_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 "reflect" 23 "regexp" 24 "strconv" 25 ) 26 27 // StaticCidrsServer is a fake server for instances of the armnetwork.StaticCidrsClient type. 28 type StaticCidrsServer struct { 29 // Create is the fake for method StaticCidrsClient.Create 30 // HTTP status codes to indicate success: http.StatusOK, http.StatusCreated 31 Create func(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, staticCidrName string, options *armnetwork.StaticCidrsClientCreateOptions) (resp azfake.Responder[armnetwork.StaticCidrsClientCreateResponse], errResp azfake.ErrorResponder) 32 33 // BeginDelete is the fake for method StaticCidrsClient.BeginDelete 34 // HTTP status codes to indicate success: http.StatusAccepted, http.StatusNoContent 35 BeginDelete func(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, staticCidrName string, options *armnetwork.StaticCidrsClientBeginDeleteOptions) (resp azfake.PollerResponder[armnetwork.StaticCidrsClientDeleteResponse], errResp azfake.ErrorResponder) 36 37 // Get is the fake for method StaticCidrsClient.Get 38 // HTTP status codes to indicate success: http.StatusOK 39 Get func(ctx context.Context, resourceGroupName string, networkManagerName string, poolName string, staticCidrName string, options *armnetwork.StaticCidrsClientGetOptions) (resp azfake.Responder[armnetwork.StaticCidrsClientGetResponse], errResp azfake.ErrorResponder) 40 41 // NewListPager is the fake for method StaticCidrsClient.NewListPager 42 // HTTP status codes to indicate success: http.StatusOK 43 NewListPager func(resourceGroupName string, networkManagerName string, poolName string, options *armnetwork.StaticCidrsClientListOptions) (resp azfake.PagerResponder[armnetwork.StaticCidrsClientListResponse]) 44 } 45 46 // NewStaticCidrsServerTransport creates a new instance of StaticCidrsServerTransport with the provided implementation. 47 // The returned StaticCidrsServerTransport instance is connected to an instance of armnetwork.StaticCidrsClient via the 48 // azcore.ClientOptions.Transporter field in the client's constructor parameters. 49 func NewStaticCidrsServerTransport(srv *StaticCidrsServer) *StaticCidrsServerTransport { 50 return &StaticCidrsServerTransport{ 51 srv: srv, 52 beginDelete: newTracker[azfake.PollerResponder[armnetwork.StaticCidrsClientDeleteResponse]](), 53 newListPager: newTracker[azfake.PagerResponder[armnetwork.StaticCidrsClientListResponse]](), 54 } 55 } 56 57 // StaticCidrsServerTransport connects instances of armnetwork.StaticCidrsClient to instances of StaticCidrsServer. 58 // Don't use this type directly, use NewStaticCidrsServerTransport instead. 59 type StaticCidrsServerTransport struct { 60 srv *StaticCidrsServer 61 beginDelete *tracker[azfake.PollerResponder[armnetwork.StaticCidrsClientDeleteResponse]] 62 newListPager *tracker[azfake.PagerResponder[armnetwork.StaticCidrsClientListResponse]] 63 } 64 65 // Do implements the policy.Transporter interface for StaticCidrsServerTransport. 66 func (s *StaticCidrsServerTransport) Do(req *http.Request) (*http.Response, error) { 67 rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) 68 method, ok := rawMethod.(string) 69 if !ok { 70 return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} 71 } 72 73 var resp *http.Response 74 var err error 75 76 switch method { 77 case "StaticCidrsClient.Create": 78 resp, err = s.dispatchCreate(req) 79 case "StaticCidrsClient.BeginDelete": 80 resp, err = s.dispatchBeginDelete(req) 81 case "StaticCidrsClient.Get": 82 resp, err = s.dispatchGet(req) 83 case "StaticCidrsClient.NewListPager": 84 resp, err = s.dispatchNewListPager(req) 85 default: 86 err = fmt.Errorf("unhandled API %s", method) 87 } 88 89 if err != nil { 90 return nil, err 91 } 92 93 return resp, nil 94 } 95 96 func (s *StaticCidrsServerTransport) dispatchCreate(req *http.Request) (*http.Response, error) { 97 if s.srv.Create == nil { 98 return nil, &nonRetriableError{errors.New("fake for method Create not implemented")} 99 } 100 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~%@]+)/ipamPools/(?P<poolName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/staticCidrs/(?P<staticCidrName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` 101 regex := regexp.MustCompile(regexStr) 102 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 103 if matches == nil || len(matches) < 5 { 104 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 105 } 106 body, err := server.UnmarshalRequestAsJSON[armnetwork.StaticCidr](req) 107 if err != nil { 108 return nil, err 109 } 110 resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) 111 if err != nil { 112 return nil, err 113 } 114 networkManagerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkManagerName")]) 115 if err != nil { 116 return nil, err 117 } 118 poolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("poolName")]) 119 if err != nil { 120 return nil, err 121 } 122 staticCidrNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("staticCidrName")]) 123 if err != nil { 124 return nil, err 125 } 126 var options *armnetwork.StaticCidrsClientCreateOptions 127 if !reflect.ValueOf(body).IsZero() { 128 options = &armnetwork.StaticCidrsClientCreateOptions{ 129 Body: &body, 130 } 131 } 132 respr, errRespr := s.srv.Create(req.Context(), resourceGroupNameParam, networkManagerNameParam, poolNameParam, staticCidrNameParam, options) 133 if respErr := server.GetError(errRespr, req); respErr != nil { 134 return nil, respErr 135 } 136 respContent := server.GetResponseContent(respr) 137 if !contains([]int{http.StatusOK, http.StatusCreated}, respContent.HTTPStatus) { 138 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK, http.StatusCreated", respContent.HTTPStatus)} 139 } 140 resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).StaticCidr, req) 141 if err != nil { 142 return nil, err 143 } 144 return resp, nil 145 } 146 147 func (s *StaticCidrsServerTransport) dispatchBeginDelete(req *http.Request) (*http.Response, error) { 148 if s.srv.BeginDelete == nil { 149 return nil, &nonRetriableError{errors.New("fake for method BeginDelete not implemented")} 150 } 151 beginDelete := s.beginDelete.get(req) 152 if beginDelete == nil { 153 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~%@]+)/ipamPools/(?P<poolName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/staticCidrs/(?P<staticCidrName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` 154 regex := regexp.MustCompile(regexStr) 155 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 156 if matches == nil || len(matches) < 5 { 157 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 158 } 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 poolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("poolName")]) 168 if err != nil { 169 return nil, err 170 } 171 staticCidrNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("staticCidrName")]) 172 if err != nil { 173 return nil, err 174 } 175 respr, errRespr := s.srv.BeginDelete(req.Context(), resourceGroupNameParam, networkManagerNameParam, poolNameParam, staticCidrNameParam, nil) 176 if respErr := server.GetError(errRespr, req); respErr != nil { 177 return nil, respErr 178 } 179 beginDelete = &respr 180 s.beginDelete.add(req, beginDelete) 181 } 182 183 resp, err := server.PollerResponderNext(beginDelete, req) 184 if err != nil { 185 return nil, err 186 } 187 188 if !contains([]int{http.StatusAccepted, http.StatusNoContent}, resp.StatusCode) { 189 s.beginDelete.remove(req) 190 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusAccepted, http.StatusNoContent", resp.StatusCode)} 191 } 192 if !server.PollerResponderMore(beginDelete) { 193 s.beginDelete.remove(req) 194 } 195 196 return resp, nil 197 } 198 199 func (s *StaticCidrsServerTransport) dispatchGet(req *http.Request) (*http.Response, error) { 200 if s.srv.Get == nil { 201 return nil, &nonRetriableError{errors.New("fake for method Get not implemented")} 202 } 203 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~%@]+)/ipamPools/(?P<poolName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/staticCidrs/(?P<staticCidrName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)` 204 regex := regexp.MustCompile(regexStr) 205 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 206 if matches == nil || len(matches) < 5 { 207 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 208 } 209 resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) 210 if err != nil { 211 return nil, err 212 } 213 networkManagerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkManagerName")]) 214 if err != nil { 215 return nil, err 216 } 217 poolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("poolName")]) 218 if err != nil { 219 return nil, err 220 } 221 staticCidrNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("staticCidrName")]) 222 if err != nil { 223 return nil, err 224 } 225 respr, errRespr := s.srv.Get(req.Context(), resourceGroupNameParam, networkManagerNameParam, poolNameParam, staticCidrNameParam, nil) 226 if respErr := server.GetError(errRespr, req); respErr != nil { 227 return nil, respErr 228 } 229 respContent := server.GetResponseContent(respr) 230 if !contains([]int{http.StatusOK}, respContent.HTTPStatus) { 231 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", respContent.HTTPStatus)} 232 } 233 resp, err := server.MarshalResponseAsJSON(respContent, server.GetResponse(respr).StaticCidr, req) 234 if err != nil { 235 return nil, err 236 } 237 return resp, nil 238 } 239 240 func (s *StaticCidrsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { 241 if s.srv.NewListPager == nil { 242 return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} 243 } 244 newListPager := s.newListPager.get(req) 245 if newListPager == nil { 246 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~%@]+)/ipamPools/(?P<poolName>[!#&$-;=?-\[\]_a-zA-Z0-9~%@]+)/staticCidrs` 247 regex := regexp.MustCompile(regexStr) 248 matches := regex.FindStringSubmatch(req.URL.EscapedPath()) 249 if matches == nil || len(matches) < 4 { 250 return nil, fmt.Errorf("failed to parse path %s", req.URL.Path) 251 } 252 qp := req.URL.Query() 253 resourceGroupNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("resourceGroupName")]) 254 if err != nil { 255 return nil, err 256 } 257 networkManagerNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("networkManagerName")]) 258 if err != nil { 259 return nil, err 260 } 261 poolNameParam, err := url.PathUnescape(matches[regex.SubexpIndex("poolName")]) 262 if err != nil { 263 return nil, err 264 } 265 skipTokenUnescaped, err := url.QueryUnescape(qp.Get("skipToken")) 266 if err != nil { 267 return nil, err 268 } 269 skipTokenParam := getOptional(skipTokenUnescaped) 270 skipUnescaped, err := url.QueryUnescape(qp.Get("skip")) 271 if err != nil { 272 return nil, err 273 } 274 skipParam, err := parseOptional(skipUnescaped, func(v string) (int32, error) { 275 p, parseErr := strconv.ParseInt(v, 10, 32) 276 if parseErr != nil { 277 return 0, parseErr 278 } 279 return int32(p), nil 280 }) 281 if err != nil { 282 return nil, err 283 } 284 topUnescaped, err := url.QueryUnescape(qp.Get("top")) 285 if err != nil { 286 return nil, err 287 } 288 topParam, err := parseOptional(topUnescaped, func(v string) (int32, error) { 289 p, parseErr := strconv.ParseInt(v, 10, 32) 290 if parseErr != nil { 291 return 0, parseErr 292 } 293 return int32(p), nil 294 }) 295 if err != nil { 296 return nil, err 297 } 298 sortKeyUnescaped, err := url.QueryUnescape(qp.Get("sortKey")) 299 if err != nil { 300 return nil, err 301 } 302 sortKeyParam := getOptional(sortKeyUnescaped) 303 sortValueUnescaped, err := url.QueryUnescape(qp.Get("sortValue")) 304 if err != nil { 305 return nil, err 306 } 307 sortValueParam := getOptional(sortValueUnescaped) 308 var options *armnetwork.StaticCidrsClientListOptions 309 if skipTokenParam != nil || skipParam != nil || topParam != nil || sortKeyParam != nil || sortValueParam != nil { 310 options = &armnetwork.StaticCidrsClientListOptions{ 311 SkipToken: skipTokenParam, 312 Skip: skipParam, 313 Top: topParam, 314 SortKey: sortKeyParam, 315 SortValue: sortValueParam, 316 } 317 } 318 resp := s.srv.NewListPager(resourceGroupNameParam, networkManagerNameParam, poolNameParam, options) 319 newListPager = &resp 320 s.newListPager.add(req, newListPager) 321 server.PagerResponderInjectNextLinks(newListPager, req, func(page *armnetwork.StaticCidrsClientListResponse, createLink func() string) { 322 page.NextLink = to.Ptr(createLink()) 323 }) 324 } 325 resp, err := server.PagerResponderNext(newListPager, req) 326 if err != nil { 327 return nil, err 328 } 329 if !contains([]int{http.StatusOK}, resp.StatusCode) { 330 s.newListPager.remove(req) 331 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} 332 } 333 if !server.PagerResponderMore(newListPager) { 334 s.newListPager.remove(req) 335 } 336 return resp, nil 337 }