// decodeAPIResponse decode response and return slice of bytes if debug enabled. // If debug disabled, just decode http.Response.Body stream to APIResponse struct // for efficient memory usage func (bot *BotAPI) decodeAPIResponse(responseBody io.Reader, resp *APIResponse) ([]byte, error) { if !bot.Debug { dec := json.NewDecoder(responseBody) err := dec.Decode(resp) return nil, err } // if debug, read response body data, err := ioutil.ReadAll(responseBody) if err != nil { return nil, err } err = json.Unmarshal(data, resp) if err != nil { return nil, err } return data, nil }
var apiResp APIResponse bytes, err := bot.decodeAPIResponse(resp.Body, &apiResp) if err != nil { return &apiResp, err }