本文整理汇总了C#中Couchbase.Lite.Internal.RevisionInternal.GetBody方法的典型用法代码示例。如果您正苦于以下问题:C# RevisionInternal.GetBody方法的具体用法?C# RevisionInternal.GetBody怎么用?C# RevisionInternal.GetBody使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Couchbase.Lite.Internal.RevisionInternal
的用法示例。
在下文中一共展示了RevisionInternal.GetBody方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MultipartWriterForRev
internal MultipartWriter MultipartWriterForRev(RevisionInternal rev, string contentType)
{
var writer = new MultipartWriter(contentType, null);
writer.SetNextPartHeaders(new Dictionary<string, string> { { "Content-Type", "application/json" } });
writer.AddData(rev.GetBody().AsJson());
var attachments = rev.GetAttachments();
if (attachments == null) {
return writer;
}
foreach (var entry in attachments) {
var attachment = entry.Value.AsDictionary<string, object>();
if (attachment != null && attachment.GetCast<bool>("follows", false)) {
var disposition = String.Format("attachment; filename={0}", Quote(entry.Key));
writer.SetNextPartHeaders(new Dictionary<string, string> { { "Content-Disposition", disposition } });
Status status = new Status();
var attachObj = AttachmentForDict(attachment, entry.Key, status);
if (attachObj == null) {
return null;
}
var fileURL = attachObj.ContentUrl;
if (fileURL != null) {
writer.AddFileUrl(fileURL);
} else {
writer.AddStream(attachObj.ContentStream);
}
}
}
return writer;
}
示例2: LoadRevisionBody
public RevisionInternal LoadRevisionBody(RevisionInternal rev, EnumSet<Database.TDContentOptions
> contentOptions)
{
if (rev.GetBody() != null && contentOptions == EnumSet.NoneOf<Database.TDContentOptions
>() && rev.GetSequence() != 0)
{
return rev;
}
System.Diagnostics.Debug.Assert(((rev.GetDocId() != null) && (rev.GetRevId() != null
)));
Cursor cursor = null;
Status result = new Status(Status.NotFound);
try
{
// TODO: on ios this query is:
// TODO: "SELECT sequence, json FROM revs WHERE doc_id=? AND revid=? LIMIT 1"
string sql = "SELECT sequence, json FROM revs, docs WHERE revid=? AND docs.docid=? AND revs.doc_id=docs.doc_id LIMIT 1";
string[] args = new string[] { rev.GetRevId(), rev.GetDocId() };
cursor = database.RawQuery(sql, args);
if (cursor.MoveToNext())
{
result.SetCode(Status.Ok);
rev.SetSequence(cursor.GetLong(0));
ExpandStoredJSONIntoRevisionWithAttachments(cursor.GetBlob(1), rev, contentOptions
);
}
}
catch (SQLException e)
{
Log.E(Database.Tag, "Error loading revision body", e);
throw new CouchbaseLiteException(Status.InternalServerError);
}
finally
{
if (cursor != null)
{
cursor.Close();
}
}
if (result.GetCode() == Status.NotFound)
{
throw new CouchbaseLiteException(result);
}
return rev;
}
示例3: LoadRevisionBody
/// <exception cref="Couchbase.Lite.CouchbaseLiteException"></exception>
internal RevisionInternal LoadRevisionBody(RevisionInternal rev, DocumentContentOptions contentOptions)
{
if (rev.GetBody() != null && contentOptions == DocumentContentOptions.None && rev.GetSequence() != 0)
{
return rev;
}
if ((rev.GetDocId() == null) || (rev.GetRevId() == null))
{
Log.E(Database.Tag, "Error loading revision body");
throw new CouchbaseLiteException(StatusCode.PreconditionFailed);
}
Cursor cursor = null;
var result = new Status(StatusCode.NotFound);
try
{
// TODO: on ios this query is:
// TODO: "SELECT sequence, json FROM revs WHERE [email protected] AND [email protected] LIMIT 1"
var sql = "SELECT sequence, json FROM revs, docs WHERE revid=? AND docs.docid=? AND revs.doc_id=docs.doc_id LIMIT 1";
var args = new [] { rev.GetRevId(), rev.GetDocId() };
cursor = StorageEngine.RawQuery(sql, CommandBehavior.SequentialAccess, args);
if (cursor.MoveToNext())
{
result.SetCode(StatusCode.Ok);
rev.SetSequence(cursor.GetLong(0));
ExpandStoredJSONIntoRevisionWithAttachments(cursor.GetBlob(1), rev, contentOptions);
}
}
catch (SQLException e)
{
Log.E(Tag, "Error loading revision body", e);
throw new CouchbaseLiteException(StatusCode.InternalServerError);
}
finally
{
if (cursor != null)
{
cursor.Close();
}
}
if (result.GetCode() == StatusCode.NotFound)
{
throw new CouchbaseLiteException(result.GetCode());
}
return rev;
}
示例4: LoadRevisionBody
//Doesn't handle CouchbaseLiteException
internal RevisionInternal LoadRevisionBody(RevisionInternal rev)
{
if(!IsOpen) {
Log.To.Database.W(TAG, "{0} LoadRevisionBody called on closed database, returning null...", this);
return null;
}
if(rev.Sequence > 0) {
if(rev.GetBody() != null) {
return rev;
} else if(rev.Missing) {
throw Misc.CreateExceptionAndLog(Log.To.Database, StatusCode.NotFound, TAG,
"Attempting to load the body of a compacted revision ({0} {1})",
new SecureLogString(rev.DocID, LogMessageSensitivity.PotentiallyInsecure),
rev.RevID);
}
}
Debug.Assert(rev.DocID != null && rev.RevID != null);
Storage.LoadRevisionBody(rev);
return rev;
}