示例#1
0
/* Implements svn_ra_serf__request_body_delegate_t */
static svn_error_t*
create_merge_body(serf_bucket_t **bkt,
                  void *baton,
                  serf_bucket_alloc_t *alloc,
                  apr_pool_t *pool /* request pool */,
                  apr_pool_t *scratch_pool)
{
  merge_context_t *ctx = baton;
  serf_bucket_t *body_bkt;

  body_bkt = serf_bucket_aggregate_create(alloc);

  svn_ra_serf__add_xml_header_buckets(body_bkt, alloc);
  svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:merge",
                                    "xmlns:D", "DAV:",
                                    SVN_VA_NULL);
  svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:source", SVN_VA_NULL);
  svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:href", SVN_VA_NULL);

  svn_ra_serf__add_cdata_len_buckets(body_bkt, alloc,
                                     ctx->merge_resource_url,
                                     strlen(ctx->merge_resource_url));

  svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:href");
  svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:source");

  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
                                     "D:no-auto-merge", SVN_VA_NULL);
  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
                                     "D:no-checkout", SVN_VA_NULL);

  svn_ra_serf__add_open_tag_buckets(body_bkt, alloc, "D:prop", SVN_VA_NULL);
  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
                                     "D:checked-in", SVN_VA_NULL);
  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
                                     "D:" SVN_DAV__VERSION_NAME, SVN_VA_NULL);
  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
                                     "D:resourcetype", SVN_VA_NULL);
  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
                                     "D:" SVN_DAV__CREATIONDATE, SVN_VA_NULL);
  svn_ra_serf__add_empty_tag_buckets(body_bkt, alloc,
                                     "D:creator-displayname", SVN_VA_NULL);
  svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:prop");

  svn_ra_serf__merge_lock_token_list(ctx->lock_tokens, NULL, body_bkt,
                                     alloc, pool);

  svn_ra_serf__add_close_tag_buckets(body_bkt, alloc, "D:merge");

  *bkt = body_bkt;

  return SVN_NO_ERROR;
}
示例#2
0
文件: blame.c 项目: 2asoft/freebsd
/* Implements svn_ra_serf__request_body_delegate_t */
static svn_error_t *
create_file_revs_body(serf_bucket_t **body_bkt,
                      void *baton,
                      serf_bucket_alloc_t *alloc,
                      apr_pool_t *pool /* request pool */,
                      apr_pool_t *scratch_pool)
{
  serf_bucket_t *buckets;
  blame_context_t *blame_ctx = baton;

  buckets = serf_bucket_aggregate_create(alloc);

  svn_ra_serf__add_open_tag_buckets(buckets, alloc,
                                    "S:file-revs-report",
                                    "xmlns:S", SVN_XML_NAMESPACE,
                                    SVN_VA_NULL);

  svn_ra_serf__add_tag_buckets(buckets,
                               "S:start-revision", apr_ltoa(pool, blame_ctx->start),
                               alloc);

  svn_ra_serf__add_tag_buckets(buckets,
                               "S:end-revision", apr_ltoa(pool, blame_ctx->end),
                               alloc);

  if (blame_ctx->include_merged_revisions)
    {
      svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
                                         "S:include-merged-revisions", SVN_VA_NULL);
    }

  svn_ra_serf__add_tag_buckets(buckets,
                               "S:path", blame_ctx->path,
                               alloc);

  svn_ra_serf__add_close_tag_buckets(buckets, alloc,
                                     "S:file-revs-report");

  *body_bkt = buckets;
  return SVN_NO_ERROR;
}
示例#3
0
/* Implements svn_ra_serf__request_body_delegate_t */
static svn_error_t *
create_list_body(serf_bucket_t **body_bkt,
                 void *baton,
                 serf_bucket_alloc_t *alloc,
                 apr_pool_t *pool /* request pool */,
                 apr_pool_t *scratch_pool)
{
  serf_bucket_t *buckets;
  list_context_t *list_ctx = baton;
  int i;

  buckets = serf_bucket_aggregate_create(alloc);

  svn_ra_serf__add_open_tag_buckets(buckets, alloc,
                                    "S:list-report",
                                    "xmlns:S", SVN_XML_NAMESPACE,
                                    SVN_VA_NULL);

  svn_ra_serf__add_tag_buckets(buckets,
                               "S:path", list_ctx->path,
                               alloc);
  svn_ra_serf__add_tag_buckets(buckets,
                               "S:revision",
                               apr_ltoa(pool, list_ctx->revision),
                               alloc);
  svn_ra_serf__add_tag_buckets(buckets,
                               "S:depth", svn_depth_to_word(list_ctx->depth),
                               alloc);

  if (list_ctx->patterns)
    {
      for (i = 0; i < list_ctx->patterns->nelts; i++)
        {
          char *name = APR_ARRAY_IDX(list_ctx->patterns, i, char *);
          svn_ra_serf__add_tag_buckets(buckets,
                                       "S:pattern", name,
                                       alloc);
        }
      if (list_ctx->patterns->nelts == 0)
        {
          svn_ra_serf__add_empty_tag_buckets(buckets, alloc,
                                             "S:no-patterns", SVN_VA_NULL);
        }
    }

  for (i = 0; i < list_ctx->props->nelts; i++)
    {
      const svn_ra_serf__dav_props_t *prop
        = &APR_ARRAY_IDX(list_ctx->props, i, const svn_ra_serf__dav_props_t);
      const char *name
        = apr_pstrcat(pool, prop->xmlns, prop->name, SVN_VA_NULL);

      svn_ra_serf__add_tag_buckets(buckets, "S:prop", name, alloc);
    }

  svn_ra_serf__add_close_tag_buckets(buckets, alloc,
                                     "S:list-report");

  *body_bkt = buckets;
  return SVN_NO_ERROR;
}