github.com/yaegashi/msgraph.go@v0.1.4/v1.0/ActionDrive.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  // DriveItemCheckinRequestParameter undocumented
    15  type DriveItemCheckinRequestParameter struct {
    16  	// CheckInAs undocumented
    17  	CheckInAs *string `json:"checkInAs,omitempty"`
    18  	// Comment undocumented
    19  	Comment *string `json:"comment,omitempty"`
    20  }
    21  
    22  // DriveItemCheckoutRequestParameter undocumented
    23  type DriveItemCheckoutRequestParameter struct {
    24  }
    25  
    26  // DriveItemCopyRequestParameter undocumented
    27  type DriveItemCopyRequestParameter struct {
    28  	// Name undocumented
    29  	Name *string `json:"name,omitempty"`
    30  	// ParentReference undocumented
    31  	ParentReference *ItemReference `json:"parentReference,omitempty"`
    32  }
    33  
    34  // DriveItemCreateLinkRequestParameter undocumented
    35  type DriveItemCreateLinkRequestParameter struct {
    36  	// Type undocumented
    37  	Type *string `json:"type,omitempty"`
    38  	// Scope undocumented
    39  	Scope *string `json:"scope,omitempty"`
    40  }
    41  
    42  // DriveItemCreateUploadSessionRequestParameter undocumented
    43  type DriveItemCreateUploadSessionRequestParameter struct {
    44  	// Item undocumented
    45  	Item *DriveItemUploadableProperties `json:"item,omitempty"`
    46  }
    47  
    48  // DriveItemInviteRequestParameter undocumented
    49  type DriveItemInviteRequestParameter struct {
    50  	// RequireSignIn undocumented
    51  	RequireSignIn *bool `json:"requireSignIn,omitempty"`
    52  	// Roles undocumented
    53  	Roles []string `json:"roles,omitempty"`
    54  	// SendInvitation undocumented
    55  	SendInvitation *bool `json:"sendInvitation,omitempty"`
    56  	// Message undocumented
    57  	Message *string `json:"message,omitempty"`
    58  	// Recipients undocumented
    59  	Recipients []DriveRecipient `json:"recipients,omitempty"`
    60  }
    61  
    62  // DriveItemPreviewRequestParameter undocumented
    63  type DriveItemPreviewRequestParameter struct {
    64  	// Page undocumented
    65  	Page *string `json:"page,omitempty"`
    66  	// Zoom undocumented
    67  	Zoom *float64 `json:"zoom,omitempty"`
    68  }
    69  
    70  // DriveItemVersionRestoreVersionRequestParameter undocumented
    71  type DriveItemVersionRestoreVersionRequestParameter struct {
    72  }
    73  
    74  // Items returns request builder for DriveItem collection
    75  func (b *DriveRequestBuilder) Items() *DriveItemsCollectionRequestBuilder {
    76  	bb := &DriveItemsCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
    77  	bb.baseURL += "/items"
    78  	return bb
    79  }
    80  
    81  // DriveItemsCollectionRequestBuilder is request builder for DriveItem collection
    82  type DriveItemsCollectionRequestBuilder struct{ BaseRequestBuilder }
    83  
    84  // Request returns request for DriveItem collection
    85  func (b *DriveItemsCollectionRequestBuilder) Request() *DriveItemsCollectionRequest {
    86  	return &DriveItemsCollectionRequest{
    87  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
    88  	}
    89  }
    90  
    91  // ID returns request builder for DriveItem item
    92  func (b *DriveItemsCollectionRequestBuilder) ID(id string) *DriveItemRequestBuilder {
    93  	bb := &DriveItemRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
    94  	bb.baseURL += "/" + id
    95  	return bb
    96  }
    97  
    98  // DriveItemsCollectionRequest is request for DriveItem collection
    99  type DriveItemsCollectionRequest struct{ BaseRequest }
   100  
   101  // Paging perfoms paging operation for DriveItem collection
   102  func (r *DriveItemsCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]DriveItem, error) {
   103  	req, err := r.NewJSONRequest(method, path, obj)
   104  	if err != nil {
   105  		return nil, err
   106  	}
   107  	if ctx != nil {
   108  		req = req.WithContext(ctx)
   109  	}
   110  	res, err := r.client.Do(req)
   111  	if err != nil {
   112  		return nil, err
   113  	}
   114  	var values []DriveItem
   115  	for {
   116  		if res.StatusCode != http.StatusOK {
   117  			b, _ := ioutil.ReadAll(res.Body)
   118  			res.Body.Close()
   119  			errRes := &ErrorResponse{Response: res}
   120  			err := jsonx.Unmarshal(b, errRes)
   121  			if err != nil {
   122  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
   123  			}
   124  			return nil, errRes
   125  		}
   126  		var (
   127  			paging Paging
   128  			value  []DriveItem
   129  		)
   130  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
   131  		res.Body.Close()
   132  		if err != nil {
   133  			return nil, err
   134  		}
   135  		err = jsonx.Unmarshal(paging.Value, &value)
   136  		if err != nil {
   137  			return nil, err
   138  		}
   139  		values = append(values, value...)
   140  		if n >= 0 {
   141  			n--
   142  		}
   143  		if n == 0 || len(paging.NextLink) == 0 {
   144  			return values, nil
   145  		}
   146  		req, err = http.NewRequest("GET", paging.NextLink, nil)
   147  		if ctx != nil {
   148  			req = req.WithContext(ctx)
   149  		}
   150  		res, err = r.client.Do(req)
   151  		if err != nil {
   152  			return nil, err
   153  		}
   154  	}
   155  }
   156  
   157  // GetN performs GET request for DriveItem collection, max N pages
   158  func (r *DriveItemsCollectionRequest) GetN(ctx context.Context, n int) ([]DriveItem, error) {
   159  	var query string
   160  	if r.query != nil {
   161  		query = "?" + r.query.Encode()
   162  	}
   163  	return r.Paging(ctx, "GET", query, nil, n)
   164  }
   165  
   166  // Get performs GET request for DriveItem collection
   167  func (r *DriveItemsCollectionRequest) Get(ctx context.Context) ([]DriveItem, error) {
   168  	return r.GetN(ctx, 0)
   169  }
   170  
   171  // Add performs POST request for DriveItem collection
   172  func (r *DriveItemsCollectionRequest) Add(ctx context.Context, reqObj *DriveItem) (resObj *DriveItem, err error) {
   173  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   174  	return
   175  }
   176  
   177  // List is navigation property
   178  func (b *DriveRequestBuilder) List() *ListRequestBuilder {
   179  	bb := &ListRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   180  	bb.baseURL += "/list"
   181  	return bb
   182  }
   183  
   184  // Root is navigation property
   185  func (b *DriveRequestBuilder) Root() *DriveItemRequestBuilder {
   186  	bb := &DriveItemRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   187  	bb.baseURL += "/root"
   188  	return bb
   189  }
   190  
   191  // Special returns request builder for DriveItem collection
   192  func (b *DriveRequestBuilder) Special() *DriveSpecialCollectionRequestBuilder {
   193  	bb := &DriveSpecialCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   194  	bb.baseURL += "/special"
   195  	return bb
   196  }
   197  
   198  // DriveSpecialCollectionRequestBuilder is request builder for DriveItem collection
   199  type DriveSpecialCollectionRequestBuilder struct{ BaseRequestBuilder }
   200  
   201  // Request returns request for DriveItem collection
   202  func (b *DriveSpecialCollectionRequestBuilder) Request() *DriveSpecialCollectionRequest {
   203  	return &DriveSpecialCollectionRequest{
   204  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
   205  	}
   206  }
   207  
   208  // ID returns request builder for DriveItem item
   209  func (b *DriveSpecialCollectionRequestBuilder) ID(id string) *DriveItemRequestBuilder {
   210  	bb := &DriveItemRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   211  	bb.baseURL += "/" + id
   212  	return bb
   213  }
   214  
   215  // DriveSpecialCollectionRequest is request for DriveItem collection
   216  type DriveSpecialCollectionRequest struct{ BaseRequest }
   217  
   218  // Paging perfoms paging operation for DriveItem collection
   219  func (r *DriveSpecialCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]DriveItem, error) {
   220  	req, err := r.NewJSONRequest(method, path, obj)
   221  	if err != nil {
   222  		return nil, err
   223  	}
   224  	if ctx != nil {
   225  		req = req.WithContext(ctx)
   226  	}
   227  	res, err := r.client.Do(req)
   228  	if err != nil {
   229  		return nil, err
   230  	}
   231  	var values []DriveItem
   232  	for {
   233  		if res.StatusCode != http.StatusOK {
   234  			b, _ := ioutil.ReadAll(res.Body)
   235  			res.Body.Close()
   236  			errRes := &ErrorResponse{Response: res}
   237  			err := jsonx.Unmarshal(b, errRes)
   238  			if err != nil {
   239  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
   240  			}
   241  			return nil, errRes
   242  		}
   243  		var (
   244  			paging Paging
   245  			value  []DriveItem
   246  		)
   247  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
   248  		res.Body.Close()
   249  		if err != nil {
   250  			return nil, err
   251  		}
   252  		err = jsonx.Unmarshal(paging.Value, &value)
   253  		if err != nil {
   254  			return nil, err
   255  		}
   256  		values = append(values, value...)
   257  		if n >= 0 {
   258  			n--
   259  		}
   260  		if n == 0 || len(paging.NextLink) == 0 {
   261  			return values, nil
   262  		}
   263  		req, err = http.NewRequest("GET", paging.NextLink, nil)
   264  		if ctx != nil {
   265  			req = req.WithContext(ctx)
   266  		}
   267  		res, err = r.client.Do(req)
   268  		if err != nil {
   269  			return nil, err
   270  		}
   271  	}
   272  }
   273  
   274  // GetN performs GET request for DriveItem collection, max N pages
   275  func (r *DriveSpecialCollectionRequest) GetN(ctx context.Context, n int) ([]DriveItem, error) {
   276  	var query string
   277  	if r.query != nil {
   278  		query = "?" + r.query.Encode()
   279  	}
   280  	return r.Paging(ctx, "GET", query, nil, n)
   281  }
   282  
   283  // Get performs GET request for DriveItem collection
   284  func (r *DriveSpecialCollectionRequest) Get(ctx context.Context) ([]DriveItem, error) {
   285  	return r.GetN(ctx, 0)
   286  }
   287  
   288  // Add performs POST request for DriveItem collection
   289  func (r *DriveSpecialCollectionRequest) Add(ctx context.Context, reqObj *DriveItem) (resObj *DriveItem, err error) {
   290  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   291  	return
   292  }
   293  
   294  // Analytics is navigation property
   295  func (b *DriveItemRequestBuilder) Analytics() *ItemAnalyticsRequestBuilder {
   296  	bb := &ItemAnalyticsRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   297  	bb.baseURL += "/analytics"
   298  	return bb
   299  }
   300  
   301  // Children returns request builder for DriveItem collection
   302  func (b *DriveItemRequestBuilder) Children() *DriveItemChildrenCollectionRequestBuilder {
   303  	bb := &DriveItemChildrenCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   304  	bb.baseURL += "/children"
   305  	return bb
   306  }
   307  
   308  // DriveItemChildrenCollectionRequestBuilder is request builder for DriveItem collection
   309  type DriveItemChildrenCollectionRequestBuilder struct{ BaseRequestBuilder }
   310  
   311  // Request returns request for DriveItem collection
   312  func (b *DriveItemChildrenCollectionRequestBuilder) Request() *DriveItemChildrenCollectionRequest {
   313  	return &DriveItemChildrenCollectionRequest{
   314  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
   315  	}
   316  }
   317  
   318  // ID returns request builder for DriveItem item
   319  func (b *DriveItemChildrenCollectionRequestBuilder) ID(id string) *DriveItemRequestBuilder {
   320  	bb := &DriveItemRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   321  	bb.baseURL += "/" + id
   322  	return bb
   323  }
   324  
   325  // DriveItemChildrenCollectionRequest is request for DriveItem collection
   326  type DriveItemChildrenCollectionRequest struct{ BaseRequest }
   327  
   328  // Paging perfoms paging operation for DriveItem collection
   329  func (r *DriveItemChildrenCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]DriveItem, error) {
   330  	req, err := r.NewJSONRequest(method, path, obj)
   331  	if err != nil {
   332  		return nil, err
   333  	}
   334  	if ctx != nil {
   335  		req = req.WithContext(ctx)
   336  	}
   337  	res, err := r.client.Do(req)
   338  	if err != nil {
   339  		return nil, err
   340  	}
   341  	var values []DriveItem
   342  	for {
   343  		if res.StatusCode != http.StatusOK {
   344  			b, _ := ioutil.ReadAll(res.Body)
   345  			res.Body.Close()
   346  			errRes := &ErrorResponse{Response: res}
   347  			err := jsonx.Unmarshal(b, errRes)
   348  			if err != nil {
   349  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
   350  			}
   351  			return nil, errRes
   352  		}
   353  		var (
   354  			paging Paging
   355  			value  []DriveItem
   356  		)
   357  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
   358  		res.Body.Close()
   359  		if err != nil {
   360  			return nil, err
   361  		}
   362  		err = jsonx.Unmarshal(paging.Value, &value)
   363  		if err != nil {
   364  			return nil, err
   365  		}
   366  		values = append(values, value...)
   367  		if n >= 0 {
   368  			n--
   369  		}
   370  		if n == 0 || len(paging.NextLink) == 0 {
   371  			return values, nil
   372  		}
   373  		req, err = http.NewRequest("GET", paging.NextLink, nil)
   374  		if ctx != nil {
   375  			req = req.WithContext(ctx)
   376  		}
   377  		res, err = r.client.Do(req)
   378  		if err != nil {
   379  			return nil, err
   380  		}
   381  	}
   382  }
   383  
   384  // GetN performs GET request for DriveItem collection, max N pages
   385  func (r *DriveItemChildrenCollectionRequest) GetN(ctx context.Context, n int) ([]DriveItem, error) {
   386  	var query string
   387  	if r.query != nil {
   388  		query = "?" + r.query.Encode()
   389  	}
   390  	return r.Paging(ctx, "GET", query, nil, n)
   391  }
   392  
   393  // Get performs GET request for DriveItem collection
   394  func (r *DriveItemChildrenCollectionRequest) Get(ctx context.Context) ([]DriveItem, error) {
   395  	return r.GetN(ctx, 0)
   396  }
   397  
   398  // Add performs POST request for DriveItem collection
   399  func (r *DriveItemChildrenCollectionRequest) Add(ctx context.Context, reqObj *DriveItem) (resObj *DriveItem, err error) {
   400  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   401  	return
   402  }
   403  
   404  // ListItem is navigation property
   405  func (b *DriveItemRequestBuilder) ListItem() *ListItemRequestBuilder {
   406  	bb := &ListItemRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   407  	bb.baseURL += "/listItem"
   408  	return bb
   409  }
   410  
   411  // Permissions returns request builder for Permission collection
   412  func (b *DriveItemRequestBuilder) Permissions() *DriveItemPermissionsCollectionRequestBuilder {
   413  	bb := &DriveItemPermissionsCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   414  	bb.baseURL += "/permissions"
   415  	return bb
   416  }
   417  
   418  // DriveItemPermissionsCollectionRequestBuilder is request builder for Permission collection
   419  type DriveItemPermissionsCollectionRequestBuilder struct{ BaseRequestBuilder }
   420  
   421  // Request returns request for Permission collection
   422  func (b *DriveItemPermissionsCollectionRequestBuilder) Request() *DriveItemPermissionsCollectionRequest {
   423  	return &DriveItemPermissionsCollectionRequest{
   424  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
   425  	}
   426  }
   427  
   428  // ID returns request builder for Permission item
   429  func (b *DriveItemPermissionsCollectionRequestBuilder) ID(id string) *PermissionRequestBuilder {
   430  	bb := &PermissionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   431  	bb.baseURL += "/" + id
   432  	return bb
   433  }
   434  
   435  // DriveItemPermissionsCollectionRequest is request for Permission collection
   436  type DriveItemPermissionsCollectionRequest struct{ BaseRequest }
   437  
   438  // Paging perfoms paging operation for Permission collection
   439  func (r *DriveItemPermissionsCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]Permission, error) {
   440  	req, err := r.NewJSONRequest(method, path, obj)
   441  	if err != nil {
   442  		return nil, err
   443  	}
   444  	if ctx != nil {
   445  		req = req.WithContext(ctx)
   446  	}
   447  	res, err := r.client.Do(req)
   448  	if err != nil {
   449  		return nil, err
   450  	}
   451  	var values []Permission
   452  	for {
   453  		if res.StatusCode != http.StatusOK {
   454  			b, _ := ioutil.ReadAll(res.Body)
   455  			res.Body.Close()
   456  			errRes := &ErrorResponse{Response: res}
   457  			err := jsonx.Unmarshal(b, errRes)
   458  			if err != nil {
   459  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
   460  			}
   461  			return nil, errRes
   462  		}
   463  		var (
   464  			paging Paging
   465  			value  []Permission
   466  		)
   467  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
   468  		res.Body.Close()
   469  		if err != nil {
   470  			return nil, err
   471  		}
   472  		err = jsonx.Unmarshal(paging.Value, &value)
   473  		if err != nil {
   474  			return nil, err
   475  		}
   476  		values = append(values, value...)
   477  		if n >= 0 {
   478  			n--
   479  		}
   480  		if n == 0 || len(paging.NextLink) == 0 {
   481  			return values, nil
   482  		}
   483  		req, err = http.NewRequest("GET", paging.NextLink, nil)
   484  		if ctx != nil {
   485  			req = req.WithContext(ctx)
   486  		}
   487  		res, err = r.client.Do(req)
   488  		if err != nil {
   489  			return nil, err
   490  		}
   491  	}
   492  }
   493  
   494  // GetN performs GET request for Permission collection, max N pages
   495  func (r *DriveItemPermissionsCollectionRequest) GetN(ctx context.Context, n int) ([]Permission, error) {
   496  	var query string
   497  	if r.query != nil {
   498  		query = "?" + r.query.Encode()
   499  	}
   500  	return r.Paging(ctx, "GET", query, nil, n)
   501  }
   502  
   503  // Get performs GET request for Permission collection
   504  func (r *DriveItemPermissionsCollectionRequest) Get(ctx context.Context) ([]Permission, error) {
   505  	return r.GetN(ctx, 0)
   506  }
   507  
   508  // Add performs POST request for Permission collection
   509  func (r *DriveItemPermissionsCollectionRequest) Add(ctx context.Context, reqObj *Permission) (resObj *Permission, err error) {
   510  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   511  	return
   512  }
   513  
   514  // Subscriptions returns request builder for Subscription collection
   515  func (b *DriveItemRequestBuilder) Subscriptions() *DriveItemSubscriptionsCollectionRequestBuilder {
   516  	bb := &DriveItemSubscriptionsCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   517  	bb.baseURL += "/subscriptions"
   518  	return bb
   519  }
   520  
   521  // DriveItemSubscriptionsCollectionRequestBuilder is request builder for Subscription collection
   522  type DriveItemSubscriptionsCollectionRequestBuilder struct{ BaseRequestBuilder }
   523  
   524  // Request returns request for Subscription collection
   525  func (b *DriveItemSubscriptionsCollectionRequestBuilder) Request() *DriveItemSubscriptionsCollectionRequest {
   526  	return &DriveItemSubscriptionsCollectionRequest{
   527  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
   528  	}
   529  }
   530  
   531  // ID returns request builder for Subscription item
   532  func (b *DriveItemSubscriptionsCollectionRequestBuilder) ID(id string) *SubscriptionRequestBuilder {
   533  	bb := &SubscriptionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   534  	bb.baseURL += "/" + id
   535  	return bb
   536  }
   537  
   538  // DriveItemSubscriptionsCollectionRequest is request for Subscription collection
   539  type DriveItemSubscriptionsCollectionRequest struct{ BaseRequest }
   540  
   541  // Paging perfoms paging operation for Subscription collection
   542  func (r *DriveItemSubscriptionsCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]Subscription, error) {
   543  	req, err := r.NewJSONRequest(method, path, obj)
   544  	if err != nil {
   545  		return nil, err
   546  	}
   547  	if ctx != nil {
   548  		req = req.WithContext(ctx)
   549  	}
   550  	res, err := r.client.Do(req)
   551  	if err != nil {
   552  		return nil, err
   553  	}
   554  	var values []Subscription
   555  	for {
   556  		if res.StatusCode != http.StatusOK {
   557  			b, _ := ioutil.ReadAll(res.Body)
   558  			res.Body.Close()
   559  			errRes := &ErrorResponse{Response: res}
   560  			err := jsonx.Unmarshal(b, errRes)
   561  			if err != nil {
   562  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
   563  			}
   564  			return nil, errRes
   565  		}
   566  		var (
   567  			paging Paging
   568  			value  []Subscription
   569  		)
   570  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
   571  		res.Body.Close()
   572  		if err != nil {
   573  			return nil, err
   574  		}
   575  		err = jsonx.Unmarshal(paging.Value, &value)
   576  		if err != nil {
   577  			return nil, err
   578  		}
   579  		values = append(values, value...)
   580  		if n >= 0 {
   581  			n--
   582  		}
   583  		if n == 0 || len(paging.NextLink) == 0 {
   584  			return values, nil
   585  		}
   586  		req, err = http.NewRequest("GET", paging.NextLink, nil)
   587  		if ctx != nil {
   588  			req = req.WithContext(ctx)
   589  		}
   590  		res, err = r.client.Do(req)
   591  		if err != nil {
   592  			return nil, err
   593  		}
   594  	}
   595  }
   596  
   597  // GetN performs GET request for Subscription collection, max N pages
   598  func (r *DriveItemSubscriptionsCollectionRequest) GetN(ctx context.Context, n int) ([]Subscription, error) {
   599  	var query string
   600  	if r.query != nil {
   601  		query = "?" + r.query.Encode()
   602  	}
   603  	return r.Paging(ctx, "GET", query, nil, n)
   604  }
   605  
   606  // Get performs GET request for Subscription collection
   607  func (r *DriveItemSubscriptionsCollectionRequest) Get(ctx context.Context) ([]Subscription, error) {
   608  	return r.GetN(ctx, 0)
   609  }
   610  
   611  // Add performs POST request for Subscription collection
   612  func (r *DriveItemSubscriptionsCollectionRequest) Add(ctx context.Context, reqObj *Subscription) (resObj *Subscription, err error) {
   613  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   614  	return
   615  }
   616  
   617  // Thumbnails returns request builder for ThumbnailSet collection
   618  func (b *DriveItemRequestBuilder) Thumbnails() *DriveItemThumbnailsCollectionRequestBuilder {
   619  	bb := &DriveItemThumbnailsCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   620  	bb.baseURL += "/thumbnails"
   621  	return bb
   622  }
   623  
   624  // DriveItemThumbnailsCollectionRequestBuilder is request builder for ThumbnailSet collection
   625  type DriveItemThumbnailsCollectionRequestBuilder struct{ BaseRequestBuilder }
   626  
   627  // Request returns request for ThumbnailSet collection
   628  func (b *DriveItemThumbnailsCollectionRequestBuilder) Request() *DriveItemThumbnailsCollectionRequest {
   629  	return &DriveItemThumbnailsCollectionRequest{
   630  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
   631  	}
   632  }
   633  
   634  // ID returns request builder for ThumbnailSet item
   635  func (b *DriveItemThumbnailsCollectionRequestBuilder) ID(id string) *ThumbnailSetRequestBuilder {
   636  	bb := &ThumbnailSetRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   637  	bb.baseURL += "/" + id
   638  	return bb
   639  }
   640  
   641  // DriveItemThumbnailsCollectionRequest is request for ThumbnailSet collection
   642  type DriveItemThumbnailsCollectionRequest struct{ BaseRequest }
   643  
   644  // Paging perfoms paging operation for ThumbnailSet collection
   645  func (r *DriveItemThumbnailsCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]ThumbnailSet, error) {
   646  	req, err := r.NewJSONRequest(method, path, obj)
   647  	if err != nil {
   648  		return nil, err
   649  	}
   650  	if ctx != nil {
   651  		req = req.WithContext(ctx)
   652  	}
   653  	res, err := r.client.Do(req)
   654  	if err != nil {
   655  		return nil, err
   656  	}
   657  	var values []ThumbnailSet
   658  	for {
   659  		if res.StatusCode != http.StatusOK {
   660  			b, _ := ioutil.ReadAll(res.Body)
   661  			res.Body.Close()
   662  			errRes := &ErrorResponse{Response: res}
   663  			err := jsonx.Unmarshal(b, errRes)
   664  			if err != nil {
   665  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
   666  			}
   667  			return nil, errRes
   668  		}
   669  		var (
   670  			paging Paging
   671  			value  []ThumbnailSet
   672  		)
   673  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
   674  		res.Body.Close()
   675  		if err != nil {
   676  			return nil, err
   677  		}
   678  		err = jsonx.Unmarshal(paging.Value, &value)
   679  		if err != nil {
   680  			return nil, err
   681  		}
   682  		values = append(values, value...)
   683  		if n >= 0 {
   684  			n--
   685  		}
   686  		if n == 0 || len(paging.NextLink) == 0 {
   687  			return values, nil
   688  		}
   689  		req, err = http.NewRequest("GET", paging.NextLink, nil)
   690  		if ctx != nil {
   691  			req = req.WithContext(ctx)
   692  		}
   693  		res, err = r.client.Do(req)
   694  		if err != nil {
   695  			return nil, err
   696  		}
   697  	}
   698  }
   699  
   700  // GetN performs GET request for ThumbnailSet collection, max N pages
   701  func (r *DriveItemThumbnailsCollectionRequest) GetN(ctx context.Context, n int) ([]ThumbnailSet, error) {
   702  	var query string
   703  	if r.query != nil {
   704  		query = "?" + r.query.Encode()
   705  	}
   706  	return r.Paging(ctx, "GET", query, nil, n)
   707  }
   708  
   709  // Get performs GET request for ThumbnailSet collection
   710  func (r *DriveItemThumbnailsCollectionRequest) Get(ctx context.Context) ([]ThumbnailSet, error) {
   711  	return r.GetN(ctx, 0)
   712  }
   713  
   714  // Add performs POST request for ThumbnailSet collection
   715  func (r *DriveItemThumbnailsCollectionRequest) Add(ctx context.Context, reqObj *ThumbnailSet) (resObj *ThumbnailSet, err error) {
   716  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   717  	return
   718  }
   719  
   720  // Versions returns request builder for DriveItemVersion collection
   721  func (b *DriveItemRequestBuilder) Versions() *DriveItemVersionsCollectionRequestBuilder {
   722  	bb := &DriveItemVersionsCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   723  	bb.baseURL += "/versions"
   724  	return bb
   725  }
   726  
   727  // DriveItemVersionsCollectionRequestBuilder is request builder for DriveItemVersion collection
   728  type DriveItemVersionsCollectionRequestBuilder struct{ BaseRequestBuilder }
   729  
   730  // Request returns request for DriveItemVersion collection
   731  func (b *DriveItemVersionsCollectionRequestBuilder) Request() *DriveItemVersionsCollectionRequest {
   732  	return &DriveItemVersionsCollectionRequest{
   733  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
   734  	}
   735  }
   736  
   737  // ID returns request builder for DriveItemVersion item
   738  func (b *DriveItemVersionsCollectionRequestBuilder) ID(id string) *DriveItemVersionRequestBuilder {
   739  	bb := &DriveItemVersionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   740  	bb.baseURL += "/" + id
   741  	return bb
   742  }
   743  
   744  // DriveItemVersionsCollectionRequest is request for DriveItemVersion collection
   745  type DriveItemVersionsCollectionRequest struct{ BaseRequest }
   746  
   747  // Paging perfoms paging operation for DriveItemVersion collection
   748  func (r *DriveItemVersionsCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]DriveItemVersion, error) {
   749  	req, err := r.NewJSONRequest(method, path, obj)
   750  	if err != nil {
   751  		return nil, err
   752  	}
   753  	if ctx != nil {
   754  		req = req.WithContext(ctx)
   755  	}
   756  	res, err := r.client.Do(req)
   757  	if err != nil {
   758  		return nil, err
   759  	}
   760  	var values []DriveItemVersion
   761  	for {
   762  		if res.StatusCode != http.StatusOK {
   763  			b, _ := ioutil.ReadAll(res.Body)
   764  			res.Body.Close()
   765  			errRes := &ErrorResponse{Response: res}
   766  			err := jsonx.Unmarshal(b, errRes)
   767  			if err != nil {
   768  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
   769  			}
   770  			return nil, errRes
   771  		}
   772  		var (
   773  			paging Paging
   774  			value  []DriveItemVersion
   775  		)
   776  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
   777  		res.Body.Close()
   778  		if err != nil {
   779  			return nil, err
   780  		}
   781  		err = jsonx.Unmarshal(paging.Value, &value)
   782  		if err != nil {
   783  			return nil, err
   784  		}
   785  		values = append(values, value...)
   786  		if n >= 0 {
   787  			n--
   788  		}
   789  		if n == 0 || len(paging.NextLink) == 0 {
   790  			return values, nil
   791  		}
   792  		req, err = http.NewRequest("GET", paging.NextLink, nil)
   793  		if ctx != nil {
   794  			req = req.WithContext(ctx)
   795  		}
   796  		res, err = r.client.Do(req)
   797  		if err != nil {
   798  			return nil, err
   799  		}
   800  	}
   801  }
   802  
   803  // GetN performs GET request for DriveItemVersion collection, max N pages
   804  func (r *DriveItemVersionsCollectionRequest) GetN(ctx context.Context, n int) ([]DriveItemVersion, error) {
   805  	var query string
   806  	if r.query != nil {
   807  		query = "?" + r.query.Encode()
   808  	}
   809  	return r.Paging(ctx, "GET", query, nil, n)
   810  }
   811  
   812  // Get performs GET request for DriveItemVersion collection
   813  func (r *DriveItemVersionsCollectionRequest) Get(ctx context.Context) ([]DriveItemVersion, error) {
   814  	return r.GetN(ctx, 0)
   815  }
   816  
   817  // Add performs POST request for DriveItemVersion collection
   818  func (r *DriveItemVersionsCollectionRequest) Add(ctx context.Context, reqObj *DriveItemVersion) (resObj *DriveItemVersion, err error) {
   819  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   820  	return
   821  }
   822  
   823  // Workbook is navigation property
   824  func (b *DriveItemRequestBuilder) Workbook() *WorkbookRequestBuilder {
   825  	bb := &WorkbookRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   826  	bb.baseURL += "/workbook"
   827  	return bb
   828  }