Code samples
Package
The sample code package for M-Files Web Service can be downloaded from http://developer.m-files.com/APIs/REST-API/Reference/MFWS_Samples.zip. The package contains code samples and utilities in different languages. The package structure is described in table 1.
Directory | Description |
---|---|
MFWS Documentation.pdf |
This document. |
/CSharp/Sample |
C# samples used in this document. |
/CSharp/Utilities |
C# helpers. |
/Java/Utilities |
Java helpers. |
/JavaScript/Samples |
JavaScript samples used in this document. |
/JavaScript/Utilities |
JavaScript helpers. |
M-Files Web Service C# Client
The M-Files Web Service client contained in the C# utilities enables quick access to M-Files Web Service. The client takes care of most of the compatibility issues, authentication, serialization and error handling. Example 1 below demonstrates how to use the client to read and edit M-Files contents.
static void Run()
{
// Create the MFWSClient.
MfwsClient client = new MfwsClient("http://example.org/REST");
// Acquire an authentication token.
// This involves performing a POST request to /server/authenticationtokens
// resource. The return value is PrimitiveType<string> which contains the
// actual token in the Value property.
var result = client.Post<PrimitiveType<string>>(
"/server/authenticationtokens.aspx",
new Authentication { Username = "username", Password = "password" });
// Read the authentication token and store it in the client.
// This way it will be used in future requests.
client.Authentication = result.Value;
// The current authentication token is an application-level token as we
// didn't specify a vault GUID when we constructed it. We cannot use it
// to access the Vault. However we can use it to acquire the vault-level
// token through the /session/vaults collection.
// For maximum compatibility, all PUT/DELETE verbs are routed via _method,
// and endpoints end in ".aspx".
// ref: http://developer.m-files.com/APIs/REST-API/#iis-compatibility
// Request the current vaults.
var vaults = client.Get<Vault[]>("/session/vaults.aspx");
// Select the first available vault.
var vault = vaults[0];
// The vaults return vault-level authentication tokens. Get the one on
// the selected vault and insert it as the default token to the client.
client.Authentication = vault.Authentication;
// Now we have a client with vault-access. We can now access the vault
// contents.
// Retrieve an object version.
ObjectVersion ov = client.Get<ObjectVersion>( "/objects/0/136/latest.aspx" );
Console.WriteLine( ov.Title );
// Perform a check out.
ov = client.Post<ObjectVersion>(
"/objects/0/136/latest/checkedout.aspx?_method=PUT",
new PrimitiveType<MFCheckOutStatus> { Value = MFCheckOutStatus.CheckedOutToMe } );
Console.WriteLine( "Checked out: " + ov.ObjectCheckedOut );
// Set the name property.
ov = client.Post<ObjectVersion>(
"/objects/0/136/" + ov.ObjVer.Version + "/properties/0.aspx?_method=PUT",
new PropertyValue
{
// PropertyDef 0 is the built-in Title property.
PropertyDef = 0,
TypedValue = new TypedValue
{
DataType = MFDataType.Text,
Value = "New Name"
}
} );
// Print the new title.
Console.WriteLine( ov.Title );
// Finally check the object in.
ov = client.Post<ObjectVersion>(
"/objects/0/136/" + ov.ObjVer.Version + "/checkedout.aspx?_method=PUT",
new PrimitiveType<MFCheckOutStatus> { Value = MFCheckOutStatus.CheckedIn } );
Console.WriteLine( "Checked out: " + ov.ObjectCheckedOut );
}