client.go
func (r *exportReader) Read(p []byte) (n int, err error) {
	if r.currentShard >= r.shardCount {
		err = io.EOF
		return
	}
	if r.body == nil {
		uri, _ := r.shardURIs[r.currentShard]
		headers := map[string]string{
			"Accept": "text/csv",
		}
		path := fmt.Sprintf("/export?index=%s&field=%s&shard=%d",
			r.field.index.Name(), r.field.Name(), r.currentShard)
		resp, err := r.client.doRequest(uri, "GET", path, headers, nil)
		if err = anyError(resp, err); err != nil {
			return 0, errors.Wrap(err, "doing export request")
		}
		defer resp.Body.Close()
		r.body, err = ioutil.ReadAll(resp.Body)
		if err != nil {
			return 0, errors.Wrap(err, "reading response body")
		}
		r.bodyIndex = 0
	}
	n = copy(p, r.body[r.bodyIndex:])
	r.bodyIndex += n
	if n >= len(r.body) {
		r.body = nil
		r.currentShard++
	}
	return
}
func (r *exportReader) Read(p []byte) (n int, err error) {
	if r.currentShard >= r.shardCount {
		err = io.EOF
		return
	}
	if r.body == nil {
		uri, _ := r.shardURIs[r.currentShard]
		headers := map[string]string{
			"Accept": "text/csv",
		}
		path := fmt.Sprintf("/export?index=%s&field=%s&shard=%d",
			r.field.index.Name(), r.field.Name(), r.currentShard)
		resp, err := r.client.doRequest(uri, "GET", path, headers, nil)
		if err = anyError(resp, err); err != nil {
			return 0, errors.Wrap(err, "doing export request")
		}
		defer resp.Body.Close()
		r.body, err = ioutil.ReadAll(resp.Body)
		if err != nil {
			return 0, errors.Wrap(err, "reading response body")
		}
		r.bodyIndex = 0
	}
	n = copy(p, r.body[r.bodyIndex:])
	r.bodyIndex += n
	if n >= len(r.body) {
		r.body = nil
		r.currentShard++
	}
	return
}
func ( r * exportReader ) Read ( p [ ] byte ) ( n int , err error ) { if r . currentShard >= r . shardCount { err = io . EOF return } if r . body == nil { uri , _ := r . shardURIs [ r . currentShard ] headers := map [ string ] string { " " : " " , } path := fmt . Sprintf ( " " , r . field . index . Name ( ) , r . field . Name ( ) , r . currentShard ) resp , err := r . client . doRequest ( uri , " " , path , headers , nil ) if err = anyError ( resp , err ) ; err != nil { return 0 , errors . Wrap ( err , " " ) } defer resp . Body . Close ( ) r . body , err = ioutil . ReadAll ( resp . Body ) if err != nil { return 0 , errors . Wrap ( err , " " ) } r . bodyIndex = 0 } n = copy ( p , r . body [ r . bodyIndex : ] ) r . bodyIndex += n if n >= len ( r . body ) { r . body = nil r . currentShard ++ } return }
// Read updates the passed array with the exported CSV data and returns the number of bytes read
Read updates the passed array with the exported CSV data and returns the number of bytes read