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