github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6@v6.2.0/fake/operations_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 "errors" 13 "fmt" 14 azfake "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake" 15 "github.com/Azure/azure-sdk-for-go/sdk/azcore/fake/server" 16 "github.com/Azure/azure-sdk-for-go/sdk/azcore/runtime" 17 "github.com/Azure/azure-sdk-for-go/sdk/azcore/to" 18 "github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/network/armnetwork/v6" 19 "net/http" 20 ) 21 22 // OperationsServer is a fake server for instances of the armnetwork.OperationsClient type. 23 type OperationsServer struct { 24 // NewListPager is the fake for method OperationsClient.NewListPager 25 // HTTP status codes to indicate success: http.StatusOK 26 NewListPager func(options *armnetwork.OperationsClientListOptions) (resp azfake.PagerResponder[armnetwork.OperationsClientListResponse]) 27 } 28 29 // NewOperationsServerTransport creates a new instance of OperationsServerTransport with the provided implementation. 30 // The returned OperationsServerTransport instance is connected to an instance of armnetwork.OperationsClient via the 31 // azcore.ClientOptions.Transporter field in the client's constructor parameters. 32 func NewOperationsServerTransport(srv *OperationsServer) *OperationsServerTransport { 33 return &OperationsServerTransport{ 34 srv: srv, 35 newListPager: newTracker[azfake.PagerResponder[armnetwork.OperationsClientListResponse]](), 36 } 37 } 38 39 // OperationsServerTransport connects instances of armnetwork.OperationsClient to instances of OperationsServer. 40 // Don't use this type directly, use NewOperationsServerTransport instead. 41 type OperationsServerTransport struct { 42 srv *OperationsServer 43 newListPager *tracker[azfake.PagerResponder[armnetwork.OperationsClientListResponse]] 44 } 45 46 // Do implements the policy.Transporter interface for OperationsServerTransport. 47 func (o *OperationsServerTransport) Do(req *http.Request) (*http.Response, error) { 48 rawMethod := req.Context().Value(runtime.CtxAPINameKey{}) 49 method, ok := rawMethod.(string) 50 if !ok { 51 return nil, nonRetriableError{errors.New("unable to dispatch request, missing value for CtxAPINameKey")} 52 } 53 54 var resp *http.Response 55 var err error 56 57 switch method { 58 case "OperationsClient.NewListPager": 59 resp, err = o.dispatchNewListPager(req) 60 default: 61 err = fmt.Errorf("unhandled API %s", method) 62 } 63 64 if err != nil { 65 return nil, err 66 } 67 68 return resp, nil 69 } 70 71 func (o *OperationsServerTransport) dispatchNewListPager(req *http.Request) (*http.Response, error) { 72 if o.srv.NewListPager == nil { 73 return nil, &nonRetriableError{errors.New("fake for method NewListPager not implemented")} 74 } 75 newListPager := o.newListPager.get(req) 76 if newListPager == nil { 77 resp := o.srv.NewListPager(nil) 78 newListPager = &resp 79 o.newListPager.add(req, newListPager) 80 server.PagerResponderInjectNextLinks(newListPager, req, func(page *armnetwork.OperationsClientListResponse, createLink func() string) { 81 page.NextLink = to.Ptr(createLink()) 82 }) 83 } 84 resp, err := server.PagerResponderNext(newListPager, req) 85 if err != nil { 86 return nil, err 87 } 88 if !contains([]int{http.StatusOK}, resp.StatusCode) { 89 o.newListPager.remove(req) 90 return nil, &nonRetriableError{fmt.Errorf("unexpected status code %d. acceptable values are http.StatusOK", resp.StatusCode)} 91 } 92 if !server.PagerResponderMore(newListPager) { 93 o.newListPager.remove(req) 94 } 95 return resp, nil 96 }