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 }