github.com/yaegashi/msgraph.go@v0.1.4/beta/ActionJournal.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  // JournalPostRequestParameter undocumented
    15  type JournalPostRequestParameter struct {
    16  }
    17  
    18  // Account is navigation property
    19  func (b *JournalRequestBuilder) Account() *AccountRequestBuilder {
    20  	bb := &AccountRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
    21  	bb.baseURL += "/account"
    22  	return bb
    23  }
    24  
    25  // JournalLines returns request builder for JournalLine collection
    26  func (b *JournalRequestBuilder) JournalLines() *JournalJournalLinesCollectionRequestBuilder {
    27  	bb := &JournalJournalLinesCollectionRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
    28  	bb.baseURL += "/journalLines"
    29  	return bb
    30  }
    31  
    32  // JournalJournalLinesCollectionRequestBuilder is request builder for JournalLine collection
    33  type JournalJournalLinesCollectionRequestBuilder struct{ BaseRequestBuilder }
    34  
    35  // Request returns request for JournalLine collection
    36  func (b *JournalJournalLinesCollectionRequestBuilder) Request() *JournalJournalLinesCollectionRequest {
    37  	return &JournalJournalLinesCollectionRequest{
    38  		BaseRequest: BaseRequest{baseURL: b.baseURL, client: b.client},
    39  	}
    40  }
    41  
    42  // ID returns request builder for JournalLine item
    43  func (b *JournalJournalLinesCollectionRequestBuilder) ID(id string) *JournalLineRequestBuilder {
    44  	bb := &JournalLineRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
    45  	bb.baseURL += "/" + id
    46  	return bb
    47  }
    48  
    49  // JournalJournalLinesCollectionRequest is request for JournalLine collection
    50  type JournalJournalLinesCollectionRequest struct{ BaseRequest }
    51  
    52  // Paging perfoms paging operation for JournalLine collection
    53  func (r *JournalJournalLinesCollectionRequest) Paging(ctx context.Context, method, path string, obj interface{}, n int) ([]JournalLine, error) {
    54  	req, err := r.NewJSONRequest(method, path, obj)
    55  	if err != nil {
    56  		return nil, err
    57  	}
    58  	if ctx != nil {
    59  		req = req.WithContext(ctx)
    60  	}
    61  	res, err := r.client.Do(req)
    62  	if err != nil {
    63  		return nil, err
    64  	}
    65  	var values []JournalLine
    66  	for {
    67  		if res.StatusCode != http.StatusOK {
    68  			b, _ := ioutil.ReadAll(res.Body)
    69  			res.Body.Close()
    70  			errRes := &ErrorResponse{Response: res}
    71  			err := jsonx.Unmarshal(b, errRes)
    72  			if err != nil {
    73  				return nil, fmt.Errorf("%s: %s", res.Status, string(b))
    74  			}
    75  			return nil, errRes
    76  		}
    77  		var (
    78  			paging Paging
    79  			value  []JournalLine
    80  		)
    81  		err := jsonx.NewDecoder(res.Body).Decode(&paging)
    82  		res.Body.Close()
    83  		if err != nil {
    84  			return nil, err
    85  		}
    86  		err = jsonx.Unmarshal(paging.Value, &value)
    87  		if err != nil {
    88  			return nil, err
    89  		}
    90  		values = append(values, value...)
    91  		if n >= 0 {
    92  			n--
    93  		}
    94  		if n == 0 || len(paging.NextLink) == 0 {
    95  			return values, nil
    96  		}
    97  		req, err = http.NewRequest("GET", paging.NextLink, nil)
    98  		if ctx != nil {
    99  			req = req.WithContext(ctx)
   100  		}
   101  		res, err = r.client.Do(req)
   102  		if err != nil {
   103  			return nil, err
   104  		}
   105  	}
   106  }
   107  
   108  // GetN performs GET request for JournalLine collection, max N pages
   109  func (r *JournalJournalLinesCollectionRequest) GetN(ctx context.Context, n int) ([]JournalLine, error) {
   110  	var query string
   111  	if r.query != nil {
   112  		query = "?" + r.query.Encode()
   113  	}
   114  	return r.Paging(ctx, "GET", query, nil, n)
   115  }
   116  
   117  // Get performs GET request for JournalLine collection
   118  func (r *JournalJournalLinesCollectionRequest) Get(ctx context.Context) ([]JournalLine, error) {
   119  	return r.GetN(ctx, 0)
   120  }
   121  
   122  // Add performs POST request for JournalLine collection
   123  func (r *JournalJournalLinesCollectionRequest) Add(ctx context.Context, reqObj *JournalLine) (resObj *JournalLine, err error) {
   124  	err = r.JSONRequest(ctx, "POST", "", reqObj, &resObj)
   125  	return
   126  }
   127  
   128  // Account is navigation property
   129  func (b *JournalLineRequestBuilder) Account() *AccountRequestBuilder {
   130  	bb := &AccountRequestBuilder{BaseRequestBuilder: b.BaseRequestBuilder}
   131  	bb.baseURL += "/account"
   132  	return bb
   133  }