Example #1
0
svn_error_t *svn_ra_neon__set_neon_body_provider(svn_ra_neon__request_t *req,
                                                 apr_file_t *body_file)
{
  apr_status_t status;
  apr_finfo_t finfo;
  body_provider_baton_t *b = apr_palloc(req->pool, sizeof(*b));

  status = apr_file_info_get(&finfo, APR_FINFO_SIZE, body_file);
  if (status)
    return svn_error_wrap_apr(status,
                              _("Can't calculate the request body size"));

  b->body_file = body_file;
  b->req = req;

#if defined(SVN_NEON_0_27)
  ne_set_request_body_provider(req->ne_req, (ne_off_t)finfo.size,
                               ra_neon_body_provider, b);
#elif defined(NE_LFS)
  ne_set_request_body_provider64(req->ne_req, finfo.size,
                                 ra_neon_body_provider, b);
#else
  /* Cut size to 32 bit */
  ne_set_request_body_provider(req->ne_req, (size_t) finfo.size,
                               ra_neon_body_provider, b);
#endif

  return SVN_NO_ERROR;
}
Example #2
0
static int large_put(void)
{
    ne_request *req = ne_request_create(i_session, "PUT", path);
    int count, ret;
   
#ifdef NE_LFS
    ne_set_request_body_provider64(req, TOTALSIZE, provider, &count);
#else
    ne_set_request_body_provider(req, TOTALSIZE, provider, &count);
#endif
    
    ret = ne_request_dispatch(req);

    ONNREQ("large PUT request", ret || ne_get_status(req)->klass != 2);

    ne_request_destroy(req);

    return OK;
}
Example #3
0
int s3_put_object(S3 *s3,const char *bucket,const char *key,const char *content_type,int content_length,const S3ReadCallback *rcb)
{
	ne_request *req;
	int err, retry;

	if(!s3) return -1;
	if(!bucket) return -1;
	if(!rcb) return -1;

	s3_begin_session(s3);

	req = s3_new_request(s3,"PUT",bucket,key,NULL,content_type);

	ne_print_request_header(req,"Content-Length","%d",content_length);

#ifdef NE_LFS
	ne_set_request_body_provider64(req,content_length,rcb->callback,rcb->userdata);
#else
	ne_set_request_body_provider(req,content_length,rcb->callback,rcb->userdata);
#endif

	//ne_set_request_body_buffer(req,"hello",5);
	// send to server
	do {
		err = ne_begin_request(req);
		if(err != NE_OK) err = -EIO;
		else {
			if(ne_get_status(req)->code != 200) {
				s3_handle_error_response(s3,req);
				err = -EACCES;
			}
			retry = ne_end_request(req);
		}
	} while(retry == NE_RETRY);

	ne_request_destroy(req);
	s3_end_session(s3);

	return err;
}