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  }