github.com/yaegashi/msgraph.go@v0.1.4/beta/RequestSearch.go (about) 1 // Code generated by msgraph.go/gen DO NOT EDIT. 2 3 package msgraph 4 5 import ( 6 "context" 7 "fmt" 8 "io/ioutil" 9 "net/http" 10 11 "github.com/yaegashi/msgraph.go/jsonx" 12 ) 13 14 // SearchRequestBuilder is request builder for Search 15 type SearchRequestBuilder struct{ BaseRequestBuilder } 16 17 // Request returns SearchRequest 18 func (b *SearchRequestBuilder) Request() *SearchRequest { 19 return &SearchRequest{ 20 BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client}, 21 } 22 } 23 24 // SearchRequest is request for Search 25 type SearchRequest struct{ BaseRequest } 26 27 // Get performs GET request for Search 28 func (r *SearchRequest) Get(ctx context.Context) (resObj *Search, err error) { 29 var query string 30 if r.query != nil { 31 query = "?" + r.query.Encode() 32 } 33 err = r.JSONRequest(ctx, "GET", query, nil, &resObj) 34 return 35 } 36 37 // Update performs PATCH request for Search 38 func (r *SearchRequest) Update(ctx context.Context, reqObj *Search) error { 39 return r.JSONRequest(ctx, "PATCH", "", reqObj, nil) 40 } 41 42 // Delete performs DELETE request for Search 43 func (r *SearchRequest) Delete(ctx context.Context) error { 44 return r.JSONRequest(ctx, "DELETE", "", nil, nil) 45 } 46 47 // 48 type SearchQueryRequestBuilder struct{ BaseRequestBuilder } 49 50 // Query action undocumented 51 func (b *SearchRequestBuilder) Query(reqObj *SearchQueryRequestParameter) *SearchQueryRequestBuilder { 52 bb := &SearchQueryRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder} 53 bb.BaseRequestBuilder.baseURL += "/query" 54 bb.BaseRequestBuilder.requestObject = reqObj 55 return bb 56 } 57 58 // 59 type SearchQueryRequest struct{ BaseRequest } 60 61 // 62 func (b *SearchQueryRequestBuilder) Request() *SearchQueryRequest { 63 return &SearchQueryRequest{ 64 BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client, requestObject: b.requestObject}, 65 } 66 } 67 68 // 69 func (r *SearchQueryRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]SearchResponse, error) { 70 req, err := r.NewJSONRequest(method, path, obj) 71 if err != nil { 72 return nil, err 73 } 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 var values []SearchResponse 82 for { 83 if res.StatusCode != http.StatusOK { 84 b, _ := ioutil.ReadAll(res.Body) 85 res.Body.Close() 86 errRes := &ErrorResponse{Response: res} 87 err := jsonx.Unmarshal(b, errRes) 88 if err != nil { 89 return nil, fmt.Errorf("%s: %s", res.Status, string(b)) 90 } 91 return nil, errRes 92 } 93 var ( 94 paging Paging 95 value []SearchResponse 96 ) 97 err := jsonx.NewDecoder(res.Body).Decode(&paging) 98 res.Body.Close() 99 if err != nil { 100 return nil, err 101 } 102 err = jsonx.Unmarshal(paging.Value, &value) 103 if err != nil { 104 return nil, err 105 } 106 values = append(values, value...) 107 if n >= 0 { 108 n-- 109 } 110 if n == 0 || len(paging.NextLink) == 0 { 111 return values, nil 112 } 113 req, err = http.NewRequest("GET", paging.NextLink, nil) 114 if ctx != nil { 115 req = req.WithContext(ctx) 116 } 117 res, err = r.client.Do(req) 118 if err != nil { 119 return nil, err 120 } 121 } 122 } 123 124 // 125 func (r *SearchQueryRequest) PostN(ctx context.Context, n int) ([]SearchResponse, error) { 126 return r.Paging(ctx, "POST", "", r.requestObject, n) 127 } 128 129 // 130 func (r *SearchQueryRequest) Post(ctx context.Context) ([]SearchResponse, error) { 131 return r.Paging(ctx, "POST", "", r.requestObject, 0) 132 }