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  }