Created by Arnaud Kervern / @arnaudke
Every document has a parent, except Root.
{
"properties": {
"dc:creator": "akervern", // field creator from dublincore schema
"dc:nature": "comics",
"dc:contributors": ["akervern"],
"dc:created": "tomorrow",
"dc:description": "A very nice description",
...
}
}
CRUD our documents
Like OSX Automator
client.operation('Document.GetChildren')
.input('doc:/')
.execute(function(error, children) {
if (error) {
// something went wrong
throw error;
}
// do something with children
});
import org.nuxeo.ecm.automation.client.model.documents;
import org.nuxeo.ecm.automation.client.Session;
public static void main(String[] args) throws Exception {
HttpAutomationClient client = new HttpAutomationClient(
"http://localhost:8080/nuxeo/site/automation");
Session session = client.getSession("Administrator", "Administrator");
Documents docs = (Documents) session.newRequest("Document.Query").set(
"query", "SELECT * FROM Document").execute();
System.out.println(docs);
client.shutdown();
}
$client = new PhpAutomationClient('http://localhost:8080/nuxeo/site/automation');
$session = $client->getSession('Administrator','Administrator');
$answer = $session->newRequest("Blob.Attach")->set('params', 'document', $path)
->loadBlob($blob, $blobtype)
->sendRequest();
ctx.getServerConfig().setLogin("jdoe");
ctx.getServerConfig().setPassword("secret");
ctx.getServerConfig().setServerBaseUrl("http://10.0.2.2:8080/nuxeo/");
if (ctx.getNetworkStatus().isNuxeoServerReachable()) {
Document doc = (Document) ctx.getSession().newRequest("Document.Fetch").set("value", docRef).execute();
}
Nuxeo clients: http://doc.nuxeo.com/x/oIf1
github.com/nuxeo/nuxeo-android/
API client
Simple layout exposition
Offline actions stack
Built with Droid4Me from Smart&Soft
github.com/nuxeo/nuxeo-web-mobile/
Mobile oriented website (jQuery Mobile)
Basic mobile front-end
Document files preview
Native app using Apache Cordova (iOS & Android)
returnType (^blockName)(parameterTypes) = ^returnType(parameters) {...};
- (void)someMethodThatTakesABlock:(returnType (^)(parameterTypes))blockName;
[someObject someMethodThatTakesABlock: ^returnType (parameters) {...}];
typedef returnType (^TypeName)(parameterTypes);
TypeName blockName = ^returnType(parameters) {...};
xcodebuild
$ cat Podfile
platform :ios, '7.0'
pod 'JSONKit', '~> 1.4'
pod 'Reachability', ‘>= 3.0'
$ pod install
github.com/nuxeo/cocoapods-specs
$ pod repo add Nuxeo https://github.com/nuxeo/cocoapods-specs
#import "NUXEntity.h"
@interface NUXDocument : NUXEntity
#pragma mark -
#pragma mark Somewhere else
[[NUXJSONMapper sharedMapper] registerEntityClass:[NUXDocument class]];
NUXDocument *myDoc =
[NUXJSONSerializer entityWithData:someData error:&error];
NUXRequest *request = [[NUXRequest alloc] initWithSession:session];
[request addURLSegment:@"path/default-domain/workspaces"];
[request addSchema:@"file"];
[session startRequestSynchronous:request withCompletionBlock:^{
NSDictionary *json = [request responseJSONWithError:nil];
XCTAssertEqualObjects(@"/default-domain/workspaces", [json valueForKey:@"path"]); }
failureBlock:^{
XCTFail(@"Request should not fail: %@", request.responseMessage);
}];
#import "NUXSession+requests.h"
NUXRequest *request = [session requestQuery:
@"select * from Document where ecm:mixinType = 'SuperSpace'"];
- (NUXAutomationRequest *)requestImportFile:(NSString *)file withParent:(NSString *)documentRef {
NUXAutomationRequest *request = [self requestOperation:@"FileManager.Import"];
[request addContextValue:documentRef forKey:@"currentDocument"];
[request setInputFile:file];
return request;
}