github.com/yaegashi/msgraph.go@v0.1.4/gen/templates/request_action_collection.go.tmpl (about)

     1  {{- $ := . }}
     2  {{- $y := .Y }}
     3  {{- $ySymBindingType := $.SymFromType $y.BindingParameterType }}
     4  {{- $yTypeType := $.TypeFromType $y.ReturnType }}
     5  //
     6  type {{$ySymBindingType}}{{$y.Sym}}RequestBuilder struct { BaseRequestBuilder }
     7  
     8  {{- range $x := .X }}
     9  // {{$y.Sym}} action {{$y.Description}}
    10  func (b *{{$x}}RequestBuilder) {{$y.Sym}}(reqObj *{{$ySymBindingType}}{{$y.Sym}}RequestParameter) *{{$ySymBindingType}}{{$y.Sym}}RequestBuilder {
    11      bb := &{{$ySymBindingType}}{{$y.Sym}}RequestBuilder {BaseRequestBuilder: b.BaseRequestBuilder}
    12      bb.BaseRequestBuilder.baseURL += "/{{$y.Name}}"
    13      bb.BaseRequestBuilder.requestObject = reqObj
    14      return bb
    15  }
    16  {{- end }}
    17  
    18  //
    19  type {{$ySymBindingType}}{{$y.Sym}}Request struct { BaseRequest }
    20  
    21  //
    22  func (b *{{$ySymBindingType}}{{$y.Sym}}RequestBuilder) Request() *{{$ySymBindingType}}{{$y.Sym}}Request {
    23      return &{{$ySymBindingType}}{{$y.Sym}}Request{
    24          BaseRequest: BaseRequest{ baseURL: b.baseURL, client:  b.client, requestObject: b.requestObject },
    25      }
    26  }
    27  
    28  //
    29  func (r *{{$ySymBindingType}}{{$y.Sym}}Request) Paging(ctx context.Context, method, path string, obj interface{}, n int) ({{$yTypeType}}, error) {
    30  	req, err := r.NewJSONRequest(method, path, obj)
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  	if ctx != nil {
    35  		req = req.WithContext(ctx)
    36  	}
    37  	res, err := r.client.Do(req)
    38  	if err != nil {
    39  		return nil, err
    40  	}
    41  	var values {{$yTypeType}}
    42  	for {
    43  		if res.StatusCode != http.StatusOK {
    44  			b, _ := ioutil.ReadAll(res.Body)
    45  			res.Body.Close()
    46  			errRes := &ErrorResponse{Response: res}
    47  			err := jsonx.Unmarshal(b, errRes)
    48  			if err != nil {
    49  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
    50  			}
    51  			return nil, errRes
    52  		}
    53  		var (
    54  			paging Paging
    55  			value  {{$yTypeType}}
    56  		)
    57  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
    58  		res.Body.Close()
    59  		if err != nil {
    60  			return nil, err
    61  		}
    62  		err = jsonx.Unmarshal(paging.Value, &value)
    63  		if err != nil {
    64  			return nil, err
    65  		}
    66  		values = append(values, value...)
    67  		if n >= 0 {
    68  			n--
    69  		}
    70  		if n == 0 || len(paging.NextLink) == 0 {
    71  			return values, nil
    72  		}
    73  		req, err = http.NewRequest("GET", paging.NextLink, nil)
    74  		if ctx != nil {
    75  			req = req.WithContext(ctx)
    76  		}
    77  		res, err = r.client.Do(req)
    78  		if err != nil {
    79  			return nil, err
    80  		}
    81  	}
    82  }
    83  
    84  //
    85  func (r *{{$ySymBindingType}}{{$y.Sym}}Request) PostN(ctx context.Context, n int) ({{$yTypeType}}, error) {
    86  	return r.Paging(ctx, "POST", "", r.requestObject, n)
    87  }
    88  
    89  //
    90  func (r *{{$ySymBindingType}}{{$y.Sym}}Request) Post(ctx context.Context) ({{$yTypeType}}, error) {
    91  	return r.Paging(ctx, "POST", "", r.requestObject, 0)
    92  }