title: GO: Confluence API not getting all the attachments
body: <p>i am using golang for my application and in this application i tried getting attachments from  Confluence, following are detail</p>
  
  
  
  <pre><code>req:="https://domain.atlassian.net/wiki/rest/api/content?expand=body.view,version&amp;type=page&amp;start=0&amp;limit="
  res, err := w.sendRequest(req)
      if err != nil {
          return nil, err
      }
      if strings.EqualFold(contentID, "") == false {
          if len(res.Results) != 0 {
              for i, _ := range res.Results {
                  Log.Info("files processed is:", i)
                  extension := filepath.Ext(res.Results[i].Title)
                  isExtenstionExclude := isExcludedExtenstion(sbConfig, extension)
                  ispathExclude := isExcludedFolder(sbConfig, res.Results[i].Links.Webui)
                  if sbgoclient.ExtesionMap[extension] == 0 || isExtenstionExclude == true || ispathExclude == true {
                      binarycount++
                      Log.Info("Excluded by extension" + extension + " for file" + res.Results[i].Title)
                  } else {
                      md5HashInBytes := md5.Sum([]byte(res.Results[i].Title))
                      md5HashInString := hex.EncodeToString(md5HashInBytes[:])
                      file_path := parameter[0] + "/" + md5HashInString + strings.Replace(res.Results[i].Title, " ", "", -1)
                      file, err := os.Create(file_path)
  
                      if err != nil {
                          fmt.Println(err)
                          panic(err)
                      }
                      url_1 := sbConfig.ConfluenceUrl + res.Results[i].Links.Download
                      req, err := http.NewRequest("GET", url_1, nil)
                      resp, _ := w.client.Do(req) // add a filter to check redirect
  
                      if err != nil {
                          fmt.Println(err)
                          panic(err)
                      }
                      // Close body on function exit
                      defer resp.Body.Close()
                      fmt.Println(resp.Status)
  
                      size, err = io.Copy(file, resp.Body)
  
                      if err != nil {
                          panic(err)
                      }
  
                      defer file.Close()
                      fmt.Printf("%s with %v bytes downloaded", res.Results[i].Title, size)
                      meta := map[string]string{
                          "size": strconv.FormatInt(size, 10),
                      }
                  }
              }
          }
      } else {
  
          if len(res.Results) != 0 {
              for i, _ := range res.Results {
                  Log.Info("page indexing is", res.Results[i].Title, "and i value is:", i)
                  fmt.Println("hmtl content is", res.Results[i].Body.View.Value)
                  fmt.Println("page name is:", res.Results[i].Title)
                  md5HashInBytes := md5.Sum([]byte(res.Results[i].Title))
                  md5HashInString := hex.EncodeToString(md5HashInBytes[:])
                  file_path := parameter[0] + "/" + md5HashInString + strings.Replace(res.Results[i].Title, " ", "", -1) + ".html"
                  file, err := os.Create(file_path)
  
                  if err != nil {
                      fmt.Println(err)
                      panic(err)
                  }
                  defer file.Close()
                  html_content := "&lt;html&gt;&lt;body&gt;" + res.Results[i].Body.View.Value + "&lt;/body&gt;&lt;/html&gt;"
                  err = ioutil.WriteFile(file.Name(), []byte(html_content), 0777)
                  if err != nil {
                      fmt.Println("error writing into file", err)
                      panic(err)
                  }
                  file.Close()                    
          }
  </code></pre>
  
  <pre class="lang-golang prettyprint-override"><code>func (w *Wiki) sendRequest(req *http.Request) (*vijay_content, error) {
      var testjson vijay_content
      req.Header.Add("Accept", "application/json, */*")
      w.authMethod.auth(req)
  
      resp, err := w.client.Do(req)
      if err != nil {
          return nil, err
      }
      bodyBytes, _ := ioutil.ReadAll(resp.Body)
      body := string(bodyBytes)
  
      fmt.Printf("response is %s\n", body)
      err = json.Unmarshal(bodyBytes, &amp;testjson)
      if err != nil {
          fmt.Println("error here is", err)
          return nil, err
      }
  
      switch resp.StatusCode {
      case http.StatusOK, http.StatusCreated, http.StatusPartialContent:
  
          return &amp;testjson, nil
      case http.StatusNoContent, http.StatusResetContent:
          return nil, nil
      case http.StatusUnauthorized:
          return nil, fmt.Errorf("Authentication failed.")
      case http.StatusServiceUnavailable:
          return nil, fmt.Errorf("Service is not available (%s).", resp.Status)
      case http.StatusInternalServerError:
          return nil, fmt.Errorf("Internal server error: %s", resp.Status)
      }
  
      return nil, fmt.Errorf("Unknown response status %s", resp.Status)
  }
  </code></pre>
  
  <p>and here in this confluence domain actually i have more than 1000 documents but i am able to download only around 80 to 90, i don't know whats happening here please suggest any changes to be done
  and following is the struct used to get values from response json</p>
  
  <pre class="lang-golang prettyprint-override"><code>type Links struct {
      Download string `json:"download,omitempty"`
      Self     string `json:"self,omitempty"`
      Webui    string `json:"webui,omitempty"`
  }
  type View_struct struct {
      Value string `json:",innerxml"`
  }
  type Body_struct struct {
      View View_struct `json:"view,omitempty"`
  }
  type Vijay_Results struct {
      ID    string      `json:"id,omitempty"`
      Links Links       `json:"_links,omitempty"`
      Title string      `json:"title,omitempty"`
      Body  Body_struct `json:"body,omitempty"`
  }
  type vijay_content struct {
      Results []Vijay_Results `json:"results,omitempty"`
      Start   int             `json:"start,omitempty"`
      Limit   int             `json:"limit,omitempty"`
      Size    int             `json:"size,omitempty"`
  }
  </code></pre>