public ChannelCollectionConverter(ICacheContext cacheContext, IDatas datas, IRestContext restContext, ILogger logger) { _cacheContext = cacheContext; _datas = datas; _restContext = restContext; _logger = logger; }
public async Task RunAsync(IRestContext context) { ICustomSettingsApi settingsApi = context.Factory.CreateUserCustomSettingsApi(); // Setting some preferences UserPreferences preferences = new UserPreferences { flag = true, array = new[] { "a", "b", "c" }, entity = new UserPreferences.Entity { rank = 4, role = "user" } }; if (await settingsApi.SetCustomSettingAsync("preferences", preferences)) { Console.WriteLine("Created custom settings: preferences"); } // Retrieving custom settings names IEnumerable <string> names = await settingsApi.GetCustomSettingsAsync(); string flatList = string.Join(", ", names); Console.WriteLine("Retrieved available setting names: [{0}]", flatList); // Retrieving preferences back UserPreferences instance = await settingsApi.GetCustomSettingAsync <UserPreferences>("preferences"); Console.WriteLine("Retrieved preferences back:"); Console.WriteLine("\tpreferences.flag={0}, preferences.entity.rank={1}", instance.flag, instance.entity.rank); }
public async Task RunAsync(IRestContext context) { IUserApi userApi = context.Factory.CreateUserApi(); bool success = await userApi.LogoutAsync(); Console.WriteLine("Logged out, success={0}", success); }
public async Task RunAsync(IRestContext context) { // List available services IEnumerable <Service> services = context.GetServicesAsync().Result; Console.WriteLine("Available services:"); foreach (Service service in services) { Console.WriteLine("{0}:\t{1}", service.api_name, service.name); } // List resources IEnumerable <Resource> resources = await context.GetResourcesAsync("user"); Console.WriteLine(); Console.WriteLine("/user resources:"); foreach (Resource resource in resources) { Console.WriteLine("\t/{0}", resource.name); } resources = await context.GetResourcesAsync("files"); Console.WriteLine(); Console.WriteLine("/files resources:"); foreach (Resource resource in resources) { Console.WriteLine("\t/{0}", resource.name); } }
public async Task RunAsync(IRestContext context) { ICustomSettingsApi settingsApi = context.Factory.CreateUserCustomSettingsApi(); // Setting some preferences UserPreferences preferences = new UserPreferences { flag = true, array = new[] { "a", "b", "c" }, entity = new UserPreferences.Entity { rank = 4, role = "user" } }; if (await settingsApi.SetCustomSettingAsync("preferences", preferences)) { Console.WriteLine("Created custom settings: preferences"); } // Retrieving custom settings names IEnumerable<string> names = await settingsApi.GetCustomSettingsAsync(); string flatList = string.Join(", ", names); Console.WriteLine("Retrieved available setting names: [{0}]", flatList); // Retrieving preferences back UserPreferences instance = await settingsApi.GetCustomSettingAsync<UserPreferences>("preferences"); Console.WriteLine("Retrieved preferences back:"); Console.WriteLine("\tpreferences.flag={0}, preferences.entity.rank={1}", instance.flag, instance.entity.rank); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); // Read SqlQuery query = new SqlQuery { fields = "*", related = "services,roles", }; IEnumerable <AppResponse> apps = await systemApi.GetAppsAsync(query); Console.WriteLine("Apps: {0}", apps.Select(x => x.api_name).ToStringList()); // Cloning AppResponse todoApp = apps.Single(x => x.api_name == "todoangular"); AppRequest todoAppRequest = todoApp.Convert <AppResponse, AppRequest>(); todoAppRequest.name = todoApp.name + "clone"; todoAppRequest.api_name = todoApp.api_name + "clone"; // Creating a clone apps = await systemApi.CreateAppsAsync(new SqlQuery(), todoAppRequest); AppResponse todoAppClone = apps.Single(x => x.api_name == "todoangularclone"); Console.WriteLine("Created a clone app={0}", todoAppClone.api_name); // Deleting the clone Debug.Assert(todoAppClone.id.HasValue); await systemApi.DeleteAppsAsync(true, todoAppClone.id.Value); Console.WriteLine("Created clone has been deleted"); }
public async Task RunAsync(IRestContext context) { // IUserApi provides all functions for user management IUserApi userApi = context.Factory.CreateUserApi(); // getSession() Session session = await userApi.GetSessionAsync(); Console.WriteLine("Session ID: {0}", session.session_id); // getProfile() ProfileResponse profile = await userApi.GetProfileAsync(); Console.WriteLine("Email from your profile: {0}", profile.email); // changePassword() const string newPassword = Program.Password + "new"; bool ok = await userApi.ChangePasswordAsync(Program.Password, newPassword); if (ok) { // Changing password back if (await userApi.ChangePasswordAsync(newPassword, Program.Password)) { Console.WriteLine("Password was changed and reverted"); } } }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable<DeviceResponse> devices = await systemApi.GetDevicesAsync(new SqlQuery()); await DeleteAnyDevices(devices, systemApi); IUserApi userApi = context.Factory.CreateUserApi(); DeviceRequest device = new DeviceRequest { uuid = "1", model = "model", platform = "windows", version = "1.0" }; bool ok = await userApi.SetDeviceAsync(device); Console.WriteLine("SetDeviceAsync(): success={0}", ok); SqlQuery query = new SqlQuery { filter = "platform=\"windows\"", fields = "*" }; devices = await systemApi.GetDevicesAsync(query); Console.WriteLine("GetDevicesAsync(): {0}", context.ContentSerializer.Serialize(devices.Single())); await DeleteAnyDevices(devices, systemApi); }
public async Task RunAsync(IRestContext context) { IFilesApi filesApi = context.Factory.CreateFilesApi("files"); // Display existing containers IEnumerable<string> names = await filesApi.GetContainerNamesAsync(); Console.WriteLine("GetContainerNamesAsync(): {0}", names.ToStringList()); // Creating a test container - tank await filesApi.CreateContainersAsync(false, TestContainer); // Creating a file FileResponse response = await filesApi.CreateFileAsync(TestContainer, "test.txt", "test", false); Console.WriteLine("Created file: {0}", response.path); // Reading the file string content = await filesApi.GetTextFileAsync(TestContainer, "test.txt"); Console.WriteLine("GetFile content: {0}", content); // Deleting the file response = await filesApi.DeleteFileAsync(TestContainer, "test.txt"); Console.WriteLine("Deleted file: {0}", response.path); // Deleting the container await filesApi.DeleteContainersAsync(TestContainer); Console.WriteLine("Container '{0}' deleted.", TestContainer); // Downloading a container Console.WriteLine("Downloading 'applications' container as zip archive..."); byte[] zip = await filesApi.DownloadContainerAsync("applications"); File.WriteAllBytes("applications-container.zip", zip); Console.WriteLine("Open applications-container.zip to see the contents."); }
public async Task RunAsync(IRestContext context) { // List available services IEnumerable<Service> services = context.GetServicesAsync().Result; Console.WriteLine("Available services:"); foreach (Service service in services) { Console.WriteLine("{0}:\t{1}", service.api_name, service.name); } // List resources IEnumerable<Resource> resources = await context.GetResourcesAsync("user"); Console.WriteLine(); Console.WriteLine("/user resources:"); foreach (Resource resource in resources) { Console.WriteLine("\t/{0}", resource.name); } resources = await context.GetResourcesAsync("files"); Console.WriteLine(); Console.WriteLine("/files resources:"); foreach (Resource resource in resources) { Console.WriteLine("\t/{0}", resource.name); } }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); SqlQuery query = new SqlQuery { fields = "*", related = "apps,users,services" }; IEnumerable<RoleResponse> roles = await systemApi.GetRolesAsync(query); Console.WriteLine("GetRolesAsync(): {0}", roles.Select(x => x.name).ToStringList()); RoleResponse role = roles.SingleOrDefault(x => x.name == NewRole); if (role != null) { await DeleteRole(role, systemApi); } RoleRequest newRole = new RoleRequest { name = NewRole, description = "new role", is_active = true }; roles = await systemApi.CreateRolesAsync(new SqlQuery(), newRole); role = roles.Single(x => x.name == NewRole); Console.WriteLine("CreateRolesAsync(): {0}", context.ContentSerializer.Serialize(role)); newRole.id = role.id; newRole.description = "new description"; role = (await systemApi.UpdateRolesAsync(new SqlQuery(), newRole)).Single(x => x.name == NewRole); Console.WriteLine("UpdateUsersAsync(): new description={0}", role.description); await DeleteRole(role, systemApi); }
public async Task RunAsync(IRestContext context) { ISystemAppApi appApi = context.Factory.CreateSystemAppApi(); // Read SqlQuery query = new SqlQuery { Fields = "*", Related = String.Join(",", RelatedResources.App.StorageService, RelatedResources.App.Roles) }; IEnumerable<AppResponse> apps = (await appApi.GetAppsAsync(query)).ToList(); Console.WriteLine("Apps:"); foreach (AppResponse app in apps) { Console.WriteLine("\tName: {0}, ApiKey: {1}", app.Name, app.ApiKey); } // Cloning AppResponse adminApp = apps.Single(x => x.Name == "admin"); AppRequest adminAppRequest = adminApp.Convert<AppResponse, AppRequest>(); adminAppRequest.Id = null; adminAppRequest.Name = adminApp.Name + "clone"; // Creating a clone apps = await appApi.CreateAppsAsync(new SqlQuery(), adminAppRequest); AppResponse adminAppClone = apps.Single(x => x.Name == "adminclone"); Console.WriteLine("Created a clone app Name:{0}, ApiKey:{1}", adminAppClone.Name, adminAppClone.ApiKey); // Deleting the clone Debug.Assert(adminAppClone.Id.HasValue); await appApi.DeleteAppsAsync(new SqlQuery(), adminAppClone.Id.Value); Console.WriteLine("Created clone has been deleted"); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); // Read SqlQuery query = new SqlQuery { fields = "*", related = "services,roles", }; IEnumerable<AppResponse> apps = await systemApi.GetAppsAsync(query); Console.WriteLine("Apps: {0}", apps.Select(x => x.api_name).ToStringList()); // Cloning AppResponse todoApp = apps.Single(x => x.api_name == "todoangular"); AppRequest todoAppRequest = todoApp.Convert<AppResponse, AppRequest>(); todoAppRequest.name = todoApp.name + "clone"; todoAppRequest.api_name = todoApp.api_name + "clone"; // Creating a clone apps = await systemApi.CreateAppsAsync(new SqlQuery(), todoAppRequest); AppResponse todoAppClone = apps.Single(x => x.api_name == "todoangularclone"); Console.WriteLine("Created a clone app={0}", todoAppClone.api_name); // Deleting the clone Debug.Assert(todoAppClone.id.HasValue); await systemApi.DeleteAppsAsync(true, todoAppClone.id.Value); Console.WriteLine("Created clone has been deleted"); }
public async Task RunAsync(IRestContext context) { IFilesApi filesApi = context.Factory.CreateFilesApi("files"); // Display resources IEnumerable<string> names = await filesApi.GetResourceNamesAsync(); Console.WriteLine("GetResourcesAsync():"); foreach (string name in names) { Console.WriteLine("\t{0}", name); } // Creating a folder await filesApi.CreateFolderAsync("test", true); Console.WriteLine("Folder 'test' created."); // Creating a file FileResponse response = await filesApi.CreateFileAsync("test/test.txt", "test", true); Console.WriteLine("Created file: {0}", response.Path); // Reading the file string content = await filesApi.GetTextFileAsync("test/test.txt"); Console.WriteLine("GetFile content: {0}", content); // Deleting the file response = await filesApi.DeleteFileAsync("test/test.txt"); Console.WriteLine("Deleted file: {0}", response.Path); // Deleting the folder await filesApi.DeleteFolderAsync("test", true); Console.WriteLine("Folder 'test' deleted."); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable <ScriptResponse> scripts = await systemApi.GetScriptsAsync(true); Console.WriteLine("GetScriptsAsync(): {0}", scripts.Select(x => x.script_id).ToStringList()); if (scripts.Any(x => x.script_id == ScriptId)) { await DeleteDummyScript(systemApi); } const string scriptText = @"return Number(event.n1) + Number(event.n2);"; ScriptResponse response = await systemApi.WriteScriptAsync(ScriptId, scriptText); Console.WriteLine("WriteScriptAsync(): id={0}", response.script_id); Dictionary <string, object> p = new Dictionary <string, object> { { "n1", 3 }, { "n2", 5 } }; string output = await systemApi.RunScriptAsync(ScriptId, p); Console.WriteLine("RunScriptAsync(): {0}", context.ContentSerializer.Serialize(output)); await DeleteDummyScript(systemApi); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable <DeviceResponse> devices = await systemApi.GetDevicesAsync(new SqlQuery()); await DeleteAnyDevices(devices, systemApi); IUserApi userApi = context.Factory.CreateUserApi(); DeviceRequest device = new DeviceRequest { uuid = "1", model = "model", platform = "windows", version = "1.0" }; bool ok = await userApi.SetDeviceAsync(device); Console.WriteLine("SetDeviceAsync(): success={0}", ok); SqlQuery query = new SqlQuery { filter = "platform=\"windows\"", fields = "*" }; devices = await systemApi.GetDevicesAsync(query); Console.WriteLine("GetDevicesAsync(): {0}", context.ContentSerializer.Serialize(devices.Single())); await DeleteAnyDevices(devices, systemApi); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable<UserResponse> users = await systemApi.GetUsersAsync(new SqlQuery()); Console.WriteLine("GetUsersAsync(): {0}", users.Select(x => x.display_name).ToStringList()); UserResponse user = users.SingleOrDefault(x => x.email == NewEmail); if (user != null) { await DeleteUser(user, systemApi); } UserRequest newUser = new UserRequest { first_name = "Andrei", last_name = "Smirnov", display_name = "pinebit", email = NewEmail, password = "******", is_active = true }; users = await systemApi.CreateUsersAsync(new SqlQuery(), newUser); user = users.Single(x => x.email == NewEmail); Console.WriteLine("CreateUsersAsync(): {0}", context.ContentSerializer.Serialize(user)); newUser.id = user.id; newUser.display_name = "Andrei Smirnov"; user = (await systemApi.UpdateUsersAsync(new SqlQuery(), newUser)).Single(x => x.email == NewEmail); Console.WriteLine("UpdateUsersAsync(): new display_name={0}", user.display_name); await DeleteUser(user, systemApi); }
public async Task RunAsync(IRestContext context) { // IUserApi provides all functions for user management IUserApi userApi = context.Factory.CreateUserApi(); // getSession() Session session = await userApi.GetSessionAsync(); Console.WriteLine("Session ID: [{0}...]", session.SessionId.Substring(0, 32)); // getProfile() ProfileResponse profile = await userApi.GetProfileAsync(); Console.WriteLine("Email from your profile: {0}", profile.Email); // register() string guid = Guid.NewGuid().ToString(); Register register = new Register { FirstName = guid.Substring(0, 6), LastName = guid.Substring(0, 6), Email = guid.Substring(0, 6) + "@factory.com", Name = guid.Substring(0, 6), NewPassword = guid.Substring(0, 6) }; bool ok = await userApi.RegisterAsync(register, true); if (ok) { Console.WriteLine("Successfully registered user: {0}", guid.Substring(0,8)); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Unfortunately, something went wrong."); } }
public async Task RunAsync(IRestContext context) { ISystemUserApi userApi = context.Factory.CreateSystemUserApi(); IEnumerable<UserResponse> users = (await userApi.GetUsersAsync(new SqlQuery())).ToList(); Console.WriteLine("GetUsersAsync(): {0}", users.Select(x => x.Name).ToStringList()); UserResponse user = users.SingleOrDefault(x => x.Email == NewEmail); if (user != null) { await DeleteUser(user, userApi); } UserRequest newUser = new UserRequest { FirstName = "Andrei", LastName = "Smirnov", Name = "pinebit", Email = NewEmail, IsActive = true }; users = await userApi.CreateUsersAsync(new SqlQuery(), newUser); user = users.Single(x => x.Email == NewEmail); Console.WriteLine("CreateUsersAsync(): {0}", context.ContentSerializer.Serialize(user)); newUser.Id = user.Id; newUser.Name = "Andrei Smirnov"; user = (await userApi.UpdateUsersAsync(new SqlQuery(), newUser)).Single(x => x.Email == NewEmail); Console.WriteLine("UpdateUsersAsync(): new name={0}", user.Name); await DeleteUser(user, userApi); }
public async Task RunAsync(IRestContext context) { // Getting database interface IDatabaseApi databaseApi = context.Factory.CreateDatabaseApi(ServiceName); // List available tables IEnumerable<TableInfo> tables = (await databaseApi.GetTableNamesAsync(true)).ToList(); Console.WriteLine("Existing tables: {0}", tables.Select(x => x.Name).ToStringList()); foreach (TableInfo table in tables) { Console.WriteLine("\t{0}", table.Name); } // Delete staff table if it exists if (tables.Any(x => x.Name == TableName)) { Console.WriteLine("Deleting table {0}...", TableName); if (await databaseApi.DeleteTableAsync(TableName)) { Console.WriteLine("Table deleted."); } } Console.WriteLine("Creating {0} table schema...", TableName); TableSchema staffTableSchema = CreateTestTableSchema(); await databaseApi.CreateTableAsync(staffTableSchema); // Describe table staffTableSchema = await databaseApi.DescribeTableAsync(TableName); Console.WriteLine("Got {0} table schema, table's label is {1}", TableName, staffTableSchema.Label); // Create new record Console.WriteLine("Creating {0} records...", TableName); List<StaffRecord> records = CreateStaffRecords().ToList(); records = (await databaseApi.CreateRecordsAsync(TableName, records, new SqlQuery())).Records; // Update record Console.WriteLine("Updating {0} records...", TableName); StaffRecord firstRecord = records.First(); firstRecord.FirstName = "Andrei 2"; await databaseApi.UpdateRecordsAsync(TableName, records, new SqlQuery()); SqlQuery query = new SqlQuery { Filter = "Age > 30", Order = "Age", Fields = "*" }; IEnumerable<StaffRecord> selection = (await databaseApi.GetRecordsAsync<StaffRecord>(TableName, query)).Records; string ages = selection.Select(x => x.Age.ToString(CultureInfo.InvariantCulture)).ToStringList(); Console.WriteLine("Get records with SqlQuery: ages={0}", ages); // Deleting one record Console.WriteLine("Deleting second record..."); await databaseApi.DeleteRecordsAsync(TableName, records.Skip(1).Take(1), new SqlQuery()); // Get table records records = (await databaseApi.GetRecordsAsync<StaffRecord>(TableName, new SqlQuery())).Records; Console.WriteLine("Retrieved {0} records:", TableName); foreach (StaffRecord item in records) { Console.WriteLine("\t{0}", item); } }
public void ShouldThrowIfSetApplicationNameArgumentIsNull() { // Arrange IRestContext context = CreateRestContext(); // Act & Assert Should.Throw <ArgumentNullException>(() => context.SetApplicationName(null)); }
public async Task RunAsync(IRestContext context) { // Getting database interface IDatabaseApi databaseApi = context.Factory.CreateDatabaseApi("db"); // List available tables List <string> tables = new List <string>(await databaseApi.GetTableNamesAsync()); Console.WriteLine("Existing tables: {0}", tables.ToStringList()); // Delete staff table if it exists if (tables.Contains(TableName)) { Console.WriteLine("Deleting table {0}...", TableName); if (await databaseApi.DeleteTableAsync(TableName)) { Console.WriteLine("Table deleted."); } } Console.WriteLine("Creating {0} table schema...", TableName); TableSchema staffTableSchema = CreateTestTableSchema(); await databaseApi.CreateTableAsync(staffTableSchema); // Describe table staffTableSchema = await databaseApi.DescribeTableAsync(TableName); Console.WriteLine("Got {0} table schema, table's label is {1}", TableName, staffTableSchema.label); // Create new record Console.WriteLine("Creating {0} records...", TableName); List <StaffRecord> records = CreateStaffRecords().ToList(); records = new List <StaffRecord>(await databaseApi.CreateRecordsAsync(TableName, records, new SqlQuery())); SqlQuery query = new SqlQuery { filter = "age > 30", order = "age", fields = "*" }; var selection = await databaseApi.GetRecordsAsync <StaffRecord>(TableName, query); var ages = selection.Select(x => x.age.ToString(CultureInfo.InvariantCulture)).ToStringList(); Console.WriteLine("Get records with SqlQuery: ages={0}", ages); // Deleting one record Console.WriteLine("Deleting second record..."); await databaseApi.DeleteRecordsAsync(TableName, records.Skip(1).Take(1)); // Get table records records = new List <StaffRecord>(await databaseApi.GetRecordsAsync <StaffRecord>(TableName, new SqlQuery())); Console.WriteLine("Retrieved {0} records:", TableName); foreach (StaffRecord item in records) { Console.WriteLine("\t{0}", item); } }
public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); bool success = await systemApi.LogoutAdminAsync(); Console.WriteLine("Logged out, success={0}", success); //IUserApi userApi = context.Factory.CreateUserApi(); //bool success = await userApi.LogoutAsync(); //Console.WriteLine("Logged out, success={0}", success); }
public void ShouldGetServicesAsync() { // Arrange IRestContext context = CreateRestContext(); // Act List <Service> services = context.GetServicesAsync().Result.ToList(); // Assert services.ShouldNotBeEmpty(); services.ShouldContain(x => x.api_name == "files"); services.ShouldContain(x => x.api_name == "email"); }
public void ShouldSetApplicationName() { // Arrange IRestContext context = CreateRestContext(); // Act context.SetApplicationName("foo"); // Assert Dictionary <string, object> headers = context.BaseHeaders.Build(); headers[HttpHeaders.DreamFactoryApplicationHeader].ShouldBe("foo"); }
public void ShouldGetResourcesAsync() { // Arrange IRestContext context = CreateRestContext(); // Act List <Resource> resources = context.GetResourcesAsync("user").Result.ToList(); // Assert resources.ShouldNotBeEmpty(); resources.ShouldContain(x => x.name == "password"); resources.ShouldContain(x => x.name == "profile"); resources.ShouldContain(x => x.name == "session"); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { // IUserApi provides all functions for user management ISystemApi systemApi = context.Factory.CreateSystemApi(); // List apps SqlQuery query = new SqlQuery { filter = "is_active=true", fields = "*", related = "services,roles", }; IEnumerable <AppResponse> apps = await systemApi.GetAppsAsync(query); Console.WriteLine("Apps: {0}", apps.Select(x => x.api_name).ToStringList()); // Check todoangular app AppResponse todoAngular = apps.Single(x => x.api_name == "todoangular"); RelatedRole role = todoAngular.roles.First(); Console.WriteLine("todoangular app has first role: {0}", role.name); RelatedService service = todoAngular.services.First(); Console.WriteLine("todoangular app has first service: {0}", service.name); // List users with roles IEnumerable <UserResponse> users = await systemApi.GetUsersAsync(new SqlQuery()); Console.WriteLine("Users: {0}", users.Select(x => x.display_name).ToStringList()); // Download app package & SDK Console.WriteLine("Downloading app package and SDK..."); byte[] package = await systemApi.DownloadApplicationPackageAsync(1); byte[] sdk = await systemApi.DownloadApplicationSdkAsync(1); File.WriteAllBytes("todojquery-package.zip", package); File.WriteAllBytes("todojquery-sdk.zip", sdk); // Get environment info - does not work for WAMP, uncomment when using linux hosted DSP. // EnvironmentResponse environment = await systemApi.GetEnvironmentAsync(); // Console.WriteLine("DreamFactory Server is running on {0}", environment.server.server_os); // Get config ConfigResponse config = await systemApi.GetConfigAsync(); Console.WriteLine("config.install_name = {0}", config.install_name); // Get constant Dictionary <string, string> contentTypes = await systemApi.GetConstantAsync("content_types"); Console.WriteLine("Content Types: {0}", contentTypes.Keys.ToStringList()); }
public async Task RunAsync(IRestContext context) { // Getting database interface IDatabaseApi databaseApi = context.Factory.CreateDatabaseApi("db"); // List available tables List<string> tables = new List<string>(await databaseApi.GetTableNamesAsync()); Console.WriteLine("Existing tables: {0}", tables.ToStringList()); // Delete staff table if it exists if (tables.Contains(TableName)) { Console.WriteLine("Deleting table {0}...", TableName); if (await databaseApi.DeleteTableAsync(TableName)) { Console.WriteLine("Table deleted."); } } Console.WriteLine("Creating {0} table schema...", TableName); TableSchema staffTableSchema = CreateTestTableSchema(); await databaseApi.CreateTableAsync(staffTableSchema); // Describe table staffTableSchema = await databaseApi.DescribeTableAsync(TableName); Console.WriteLine("Got {0} table schema, table's label is {1}", TableName, staffTableSchema.label); // Create new record Console.WriteLine("Creating {0} records...", TableName); List<StaffRecord> records = CreateStaffRecords().ToList(); records = new List<StaffRecord>(await databaseApi.CreateRecordsAsync(TableName, records, new SqlQuery())); SqlQuery query = new SqlQuery { filter = "age > 30", order = "age", fields = "*" }; var selection = await databaseApi.GetRecordsAsync<StaffRecord>(TableName, query); var ages = selection.Select(x => x.age.ToString(CultureInfo.InvariantCulture)).ToStringList(); Console.WriteLine("Get records with SqlQuery: ages={0}", ages); // Deleting one record Console.WriteLine("Deleting second record..."); await databaseApi.DeleteRecordsAsync(TableName, records.Skip(1).Take(1)); // Get table records records = new List<StaffRecord>(await databaseApi.GetRecordsAsync<StaffRecord>(TableName, new SqlQuery())); Console.WriteLine("Retrieved {0} records:", TableName); foreach (StaffRecord item in records) { Console.WriteLine("\t{0}", item); } }
public async Task RunAsync(IRestContext context) { /* * Get random bytes as hex string from random.org */ const string url = "https://www.random.org/cgi-bin/randbyte?nbytes=16&format=h"; IHttpRequest request = new HttpRequest(HttpMethod.Get, url, new HttpHeaders()); IHttpFacade httpFacade = new UnirestHttpFacade(); Console.WriteLine("Sending GET request: {0}", url); IHttpResponse response = await httpFacade.RequestAsync(request); Console.WriteLine("Response CODE = {0}, BODY = {1}", response.Code, response.Body.Trim()); }
public async Task RunAsync(IRestContext context) { // Send an email Console.WriteLine("Sending email..."); // Using the builder is good for simple emails EmailRequest request = new EmailRequestBuilder().AddTo("*****@*****.**") .WithSubject("Hello") .WithBody("Hello, world!") .Build(); IEmailApi emailApi = context.Factory.CreateEmailApi("email"); int count = await emailApi.SendEmailAsync(request); Console.WriteLine("{0} email(s) sent.", count); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable<EventCacheResponse> events = await systemApi.GetEventsAsync(true); Console.WriteLine("User events:"); var paths = events.Single(x => x.name == "user").paths; IEnumerable<string> userEvents = from p in paths from v in p.verbs from fv in FlattenVerbs(v) select p.path + " " + fv; foreach (string userEvent in userEvents) { Console.WriteLine("\t{0}", userEvent); } }
public static void Initialize() { Container container = new Container(); IRestContext context = DreamFactoryContext.Create(); container.Register <IDatabaseApi>(() => context.Factory.CreateDatabaseApi(DreamFactoryContext.DbServiceName), Lifestyle.Transient); container.Register <ISystemAdminApi>(() => context.Factory.CreateSystemAdminApi(), Lifestyle.Transient); container.Register <IUserApi>(() => context.Factory.CreateUserApi(), Lifestyle.Transient); container.Register <IFilesApi>(() => context.Factory.CreateFilesApi(DreamFactoryContext.FileServiceName), Lifestyle.Transient); container.RegisterMvcControllers(); container.Verify(); DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container)); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable <EventCacheResponse> events = await systemApi.GetEventsAsync(true); Console.WriteLine("User events:"); var paths = events.Single(x => x.name == "user").paths; IEnumerable <string> userEvents = from p in paths from v in p.verbs from fv in FlattenVerbs(v) select p.path + " " + fv; foreach (string userEvent in userEvents) { Console.WriteLine("\t{0}", userEvent); } }
public async Task RunAsync(IRestContext context) { ISystemEventApi eventApi = context.Factory.CreateSystemEventApi(); IEnumerable<string> events = (await eventApi.GetEventsAsync()).ToList(); Console.WriteLine("GetEventsAsync(): Found {0} events", events.Count()); string eventName = events.First(); // create EventScriptRequest createRequest = CreateEventScript(); EventScriptResponse createResponse = await eventApi.CreateEventScriptAsync(eventName, new SqlQuery(), createRequest); Console.WriteLine("CreateEventScriptAsync(): Created script {0}", createResponse.Name); // delete EventScriptResponse deleteResponse = await eventApi.DeleteEventScriptAsync(eventName, new SqlQuery()); Console.WriteLine("DeleteEventScriptAsync(): Deleted script {0}", deleteResponse.Name); }
public async Task RunAsync(IRestContext context) { ICustomSettingsApi settingsApi = context.Factory.CreateUserCustomSettingsApi(); // Setting some preferences List <CustomRequest> customSettings = new List <CustomRequest> { new CustomRequest { Name = "Language", Value = "en-us" }, new CustomRequest { Name = "TimeZone", Value = "ET" } }; if ((await settingsApi.SetCustomSettingsAsync(customSettings)).Records.Any()) { Console.WriteLine("Created custom settings: preferences"); } // Retrieving custom settings names IEnumerable <string> names = (await settingsApi.GetCustomSettingsAsync()).Records.Select(x => x.Name); string flatList = string.Join(", ", names); Console.WriteLine("Retrieved available setting names: [{0}]", flatList); // Retrieving preferences back CustomResponse custom = await settingsApi.GetCustomSettingAsync("Language"); Console.WriteLine("Retrieved preferences back:"); Console.WriteLine("\tName={0}, Value={1}", "Language", custom.Value); // Deleting preferences await settingsApi.DeleteCustomSettingAsync("Language"); Console.WriteLine("Deleted Language preferences!"); await settingsApi.DeleteCustomSettingAsync("TimeZone"); Console.WriteLine("Deleted TimeZone preferences!"); }
public async Task RunAsync(IRestContext context) { // IUserApi provides all functions for user management ISystemApi systemApi = context.Factory.CreateSystemApi(); // List apps SqlQuery query = new SqlQuery { Filter = "is_active=true", Fields = "*", Related = "service_by_storage_service_id,role_by_user_to_app_to_role", }; IEnumerable <AppResponse> apps = (await systemApi.GetAppsAsync(query)).ToList(); Console.WriteLine("Apps: {0}", apps.Select(x => x.Name).ToStringList()); // Check admin app AppResponse adminApp = apps.Single(x => x.Name == "admin"); RelatedRole role = adminApp.Roles.FirstOrDefault(); if (role != null) { Console.WriteLine("admin app has first role: {0}", role.Name); } else { Console.WriteLine("admin app has no roles."); } RelatedService service = adminApp.StorageService; Console.WriteLine("admin app has {0} {1}", service != null ? "service" : "no service", service != null ? service.Name : ""); // List users with roles IEnumerable <UserResponse> users = await systemApi.GetUsersAsync(new SqlQuery()); Console.WriteLine("Users: {0}", users.Select(x => x.Name).ToStringList()); // Get environment info - does not work for WAMP, uncomment when using linux hosted DSP. // EnvironmentResponse environment = await systemApi.GetEnvironmentAsync(); // Console.WriteLine("DreamFactory Server is running on {0}", environment.Server); // Get constant //TODO: see about constants // var contentTypes = await systemApi.GetConstantAsync("content_types"); // Console.WriteLine("Content Types: {0}", contentTypes.Keys.ToStringList()); }
public async Task RunAsync(IRestContext context) { ISystemEventApi eventApi = context.Factory.CreateSystemEventApi(); IEnumerable <string> events = (await eventApi.GetEventsAsync()).ToList(); Console.WriteLine("GetEventsAsync(): Found {0} events", events.Count()); string eventName = events.First(); // create EventScriptRequest createRequest = CreateEventScript(); EventScriptResponse createResponse = await eventApi.CreateEventScriptAsync(eventName, new SqlQuery(), createRequest); Console.WriteLine("CreateEventScriptAsync(): Created script {0}", createResponse.Name); // delete EventScriptResponse deleteResponse = await eventApi.DeleteEventScriptAsync(eventName, new SqlQuery()); Console.WriteLine("DeleteEventScriptAsync(): Deleted script {0}", deleteResponse.Name); }
public async Task RunAsync(IRestContext context) { ICustomSettingsApi settingsApi = context.Factory.CreateUserCustomSettingsApi(); // Setting some preferences List<CustomRequest> customSettings = new List<CustomRequest> { new CustomRequest { Name = "Language", Value = "en-us" }, new CustomRequest { Name = "TimeZone", Value = "ET" } }; if ((await settingsApi.SetCustomSettingsAsync(customSettings)).Records.Any()) { Console.WriteLine("Created custom settings: preferences"); } // Retrieving custom settings names IEnumerable<string> names = (await settingsApi.GetCustomSettingsAsync()).Records.Select(x => x.Name); string flatList = string.Join(", ", names); Console.WriteLine("Retrieved available setting names: [{0}]", flatList); // Retrieving preferences back CustomResponse custom = await settingsApi.GetCustomSettingAsync("Language"); Console.WriteLine("Retrieved preferences back:"); Console.WriteLine("\tName={0}, Value={1}", "Language", custom.Value); // Deleting preferences await settingsApi.DeleteCustomSettingAsync("Language"); Console.WriteLine("Deleted Language preferences!"); await settingsApi.DeleteCustomSettingAsync("TimeZone"); Console.WriteLine("Deleted TimeZone preferences!"); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { // IUserApi provides all functions for user management ISystemApi systemApi = context.Factory.CreateSystemApi(); // List apps SqlQuery query = new SqlQuery { filter = "is_active=true", fields = "*", related = "services,roles", }; IEnumerable<AppResponse> apps = await systemApi.GetAppsAsync(query); Console.WriteLine("Apps: {0}", apps.Select(x => x.api_name).ToStringList()); // Check todoangular app AppResponse todoAngular = apps.Single(x => x.api_name == "todoangular"); RelatedRole role = todoAngular.roles.First(); Console.WriteLine("todoangular app has first role: {0}", role.name); RelatedService service = todoAngular.services.First(); Console.WriteLine("todoangular app has first service: {0}", service.name); // List users with roles IEnumerable<UserResponse> users = await systemApi.GetUsersAsync(new SqlQuery()); Console.WriteLine("Users: {0}", users.Select(x => x.display_name).ToStringList()); // Download app package & SDK Console.WriteLine("Downloading app package and SDK..."); byte[] package = await systemApi.DownloadApplicationPackageAsync(1); byte[] sdk = await systemApi.DownloadApplicationSdkAsync(1); File.WriteAllBytes("todojquery-package.zip", package); File.WriteAllBytes("todojquery-sdk.zip", sdk); // Get environment info - does not work for WAMP, uncomment when using linux hosted DSP. // EnvironmentResponse environment = await systemApi.GetEnvironmentAsync(); // Console.WriteLine("DreamFactory Server is running on {0}", environment.server.server_os); // Get config ConfigResponse config = await systemApi.GetConfigAsync(); Console.WriteLine("config.install_name = {0}", config.install_name); // Get constant Dictionary<string, string> contentTypes = await systemApi.GetConstantAsync("content_types"); Console.WriteLine("Content Types: {0}", contentTypes.Keys.ToStringList()); }
public async Task RunAsync(IRestContext context) { IFilesApi filesApi = context.Factory.CreateFilesApi("files"); // Display existing containers IEnumerable <string> names = await filesApi.GetContainerNamesAsync(); Console.WriteLine("GetContainerNamesAsync(): {0}", names.ToStringList()); // Creating a test container - tank await filesApi.CreateContainersAsync(false, TestContainer); // Creating a file FileResponse response = await filesApi.CreateFileAsync(TestContainer, "test.txt", "test", false); Console.WriteLine("Created file: {0}", response.path); // Reading the file string content = await filesApi.GetTextFileAsync(TestContainer, "test.txt"); Console.WriteLine("GetFile content: {0}", content); // Deleting the file response = await filesApi.DeleteFileAsync(TestContainer, "test.txt"); Console.WriteLine("Deleted file: {0}", response.path); // Deleting the container await filesApi.DeleteContainersAsync(TestContainer); Console.WriteLine("Container '{0}' deleted.", TestContainer); // Downloading a container Console.WriteLine("Downloading 'applications' container as zip archive..."); byte[] zip = await filesApi.DownloadContainerAsync("applications"); File.WriteAllBytes("applications-container.zip", zip); Console.WriteLine("Open applications-container.zip to see the contents."); }
public async Task RunAsync(IRestContext context) { ISystemRoleApi roleApi = context.Factory.CreateSystemRoleApi(); SqlQuery query = new SqlQuery { Fields = "*", Related = string.Join(",", RelatedResources.Role.Apps, RelatedResources.Role.UsersInApps, RelatedResources.Role.ServicesInApps) }; IEnumerable <RoleResponse> roles = (await roleApi.GetRolesAsync(query)).ToList(); Console.WriteLine("GetRolesAsync(): {0}", roles.Select(x => x.Name).ToStringList()); RoleResponse role = roles.SingleOrDefault(x => x.Name == NewRole); if (role != null) { await DeleteRole(role, roleApi); } RoleRequest newRole = new RoleRequest { Name = NewRole, Description = "new role", IsActive = true }; roles = await roleApi.CreateRolesAsync(new SqlQuery(), newRole); role = roles.Single(x => x.Name == NewRole); Console.WriteLine("CreateRolesAsync(): {0}", context.ContentSerializer.Serialize(role)); newRole.Id = role.Id; newRole.Description = "new description"; role = (await roleApi.UpdateRolesAsync(new SqlQuery(), newRole)).Single(x => x.Name == NewRole); Console.WriteLine("UpdateUsersAsync(): new description={0}", role.Description); await DeleteRole(role, roleApi); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable<ScriptResponse> scripts = await systemApi.GetScriptsAsync(true); Console.WriteLine("GetScriptsAsync(): {0}", scripts.Select(x => x.script_id).ToStringList()); if (scripts.Any(x => x.script_id == ScriptId)) { await DeleteDummyScript(systemApi); } const string scriptText = @"return Number(event.n1) + Number(event.n2);"; ScriptResponse response = await systemApi.WriteScriptAsync(ScriptId, scriptText); Console.WriteLine("WriteScriptAsync(): id={0}", response.script_id); Dictionary<string, object> p = new Dictionary<string, object> { { "n1", 3 }, { "n2", 5 } }; string output = await systemApi.RunScriptAsync(ScriptId, p); Console.WriteLine("RunScriptAsync(): {0}", context.ContentSerializer.Serialize(output)); await DeleteDummyScript(systemApi); }
public async Task RunAsync(IRestContext context) { IUserApi userApi = context.Factory.CreateUserApi(); try { Session session = await userApi.LoginAsync(Program.DefaultApp, Program.Email, Program.Password); Console.WriteLine("Logged in as {0}", session.display_name); } catch (Exception) { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Unfortunately, something went wrong."); Console.WriteLine("Please check the following:"); Console.WriteLine("\t- your DSP is listening: {0}", Program.BaseAddress); Console.WriteLine("\t- you have created user '{0}' with password '{1}'", Program.Email, Program.Password); Console.WriteLine(); Console.ResetColor(); throw; } }
public async Task RunAsync(IRestContext context) { IFilesApi filesApi = context.Factory.CreateFilesApi("files"); // Display resources IEnumerable <string> names = await filesApi.GetResourceNamesAsync(); Console.WriteLine("GetResourcesAsync():"); foreach (string name in names) { Console.WriteLine("\t{0}", name); } // Creating a folder await filesApi.CreateFolderAsync("test", true); Console.WriteLine("Folder 'test' created."); // Creating a file FileResponse response = await filesApi.CreateFileAsync("test/test.txt", "test", true); Console.WriteLine("Created file: {0}", response.Path); // Reading the file string content = await filesApi.GetTextFileAsync("test/test.txt"); Console.WriteLine("GetFile content: {0}", content); // Deleting the file response = await filesApi.DeleteFileAsync("test/test.txt"); Console.WriteLine("Deleted file: {0}", response.Path); // Deleting the folder await filesApi.DeleteFolderAsync("test", true); Console.WriteLine("Folder 'test' deleted."); }
private void StartConfig(ClientConfig clientConfig) { _clientConfig = clientConfig; _restContext = clientConfig.GetRest(); _restContext.Init(); _cacheContext = clientConfig.CacheContext; _serializerOptions = new JsonSerializerOptions() { Converters = { new MemberCollectionConverter(_cacheContext, this, Logger), new UserCollectionConverter(_cacheContext, this, Logger), new ChannelCollectionConverter(_cacheContext, this, _restContext,Logger), new ChannelConverter(_cacheContext, _restContext, Logger), new ULongConverter(), new TimeSpanConverter() } }; _gatewayContext = clientConfig.GetGateway(); Logger = clientConfig.Logger; Logger.Log(LoggingLevel.Dcs, "DiscosCs v0.1-dev"); InitCollections(); }
public async Task RunAsync(IRestContext context) { // IUserApi provides all functions for user management IUserApi userApi = context.Factory.CreateUserApi(); // getSession() Session session = await userApi.GetSessionAsync(); Console.WriteLine("Session ID: [{0}...]", session.SessionId.Substring(0, 32)); // getProfile() ProfileResponse profile = await userApi.GetProfileAsync(); Console.WriteLine("Email from your profile: {0}", profile.Email); // register() string guid = Guid.NewGuid().ToString(); Register register = new Register { FirstName = guid.Substring(0, 6), LastName = guid.Substring(0, 6), Email = guid.Substring(0, 6) + "@factory.com", Name = guid.Substring(0, 6), NewPassword = guid.Substring(0, 6) }; bool ok = await userApi.RegisterAsync(register, true); if (ok) { Console.WriteLine("Successfully registered user: {0}", guid.Substring(0, 8)); } else { Console.ForegroundColor = ConsoleColor.Red; Console.WriteLine("Unfortunately, something went wrong."); } }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); IEnumerable <UserResponse> users = await systemApi.GetUsersAsync(new SqlQuery()); Console.WriteLine("GetUsersAsync(): {0}", users.Select(x => x.display_name).ToStringList()); UserResponse user = users.SingleOrDefault(x => x.email == NewEmail); if (user != null) { await DeleteUser(user, systemApi); } UserRequest newUser = new UserRequest { first_name = "Andrei", last_name = "Smirnov", display_name = "pinebit", email = NewEmail, password = "******", is_active = true }; users = await systemApi.CreateUsersAsync(new SqlQuery(), newUser); user = users.Single(x => x.email == NewEmail); Console.WriteLine("CreateUsersAsync(): {0}", context.ContentSerializer.Serialize(user)); newUser.id = user.id; newUser.display_name = "Andrei Smirnov"; user = (await systemApi.UpdateUsersAsync(new SqlQuery(), newUser)).Single(x => x.email == NewEmail); Console.WriteLine("UpdateUsersAsync(): new display_name={0}", user.display_name); await DeleteUser(user, systemApi); }
public async Task RunAsync(IRestContext context) { ISystemAppApi appApi = context.Factory.CreateSystemAppApi(); // Read SqlQuery query = new SqlQuery { Fields = "*", Related = String.Join(",", RelatedResources.App.StorageService, RelatedResources.App.Roles) }; IEnumerable <AppResponse> apps = (await appApi.GetAppsAsync(query)).ToList(); Console.WriteLine("Apps:"); foreach (AppResponse app in apps) { Console.WriteLine("\tName: {0}, ApiKey: {1}", app.Name, app.ApiKey); } // Cloning AppResponse adminApp = apps.Single(x => x.Name == "admin"); AppRequest adminAppRequest = adminApp.Convert <AppResponse, AppRequest>(); adminAppRequest.Id = null; adminAppRequest.Name = adminApp.Name + "clone"; // Creating a clone apps = await appApi.CreateAppsAsync(new SqlQuery(), adminAppRequest); AppResponse adminAppClone = apps.Single(x => x.Name == "adminclone"); Console.WriteLine("Created a clone app Name:{0}, ApiKey:{1}", adminAppClone.Name, adminAppClone.ApiKey); // Deleting the clone Debug.Assert(adminAppClone.Id.HasValue); await appApi.DeleteAppsAsync(new SqlQuery(), adminAppClone.Id.Value); Console.WriteLine("Created clone has been deleted"); }
// ReSharper disable PossibleMultipleEnumeration public async Task RunAsync(IRestContext context) { ISystemApi systemApi = context.Factory.CreateSystemApi(); SqlQuery query = new SqlQuery { fields = "*", related = "apps,users,services" }; IEnumerable <RoleResponse> roles = await systemApi.GetRolesAsync(query); Console.WriteLine("GetRolesAsync(): {0}", roles.Select(x => x.name).ToStringList()); RoleResponse role = roles.SingleOrDefault(x => x.name == NewRole); if (role != null) { await DeleteRole(role, systemApi); } RoleRequest newRole = new RoleRequest { name = NewRole, description = "new role", is_active = true }; roles = await systemApi.CreateRolesAsync(new SqlQuery(), newRole); role = roles.Single(x => x.name == NewRole); Console.WriteLine("CreateRolesAsync(): {0}", context.ContentSerializer.Serialize(role)); newRole.id = role.id; newRole.description = "new description"; role = (await systemApi.UpdateRolesAsync(new SqlQuery(), newRole)).Single(x => x.name == NewRole); Console.WriteLine("UpdateUsersAsync(): new description={0}", role.description); await DeleteRole(role, systemApi); }
public async Task RunAsync(IRestContext context) { ISystemRoleApi roleApi = context.Factory.CreateSystemRoleApi(); SqlQuery query = new SqlQuery { Fields = "*", Related = string.Join(",", RelatedResources.Role.Apps, RelatedResources.Role.UsersInApps, RelatedResources.Role.ServicesInApps) }; IEnumerable<RoleResponse> roles = (await roleApi.GetRolesAsync(query)).ToList(); Console.WriteLine("GetRolesAsync(): {0}", roles.Select(x => x.Name).ToStringList()); RoleResponse role = roles.SingleOrDefault(x => x.Name == NewRole); if (role != null) { await DeleteRole(role, roleApi); } RoleRequest newRole = new RoleRequest { Name = NewRole, Description = "new role", IsActive = true }; roles = await roleApi.CreateRolesAsync(new SqlQuery(), newRole); role = roles.Single(x => x.Name == NewRole); Console.WriteLine("CreateRolesAsync(): {0}", context.ContentSerializer.Serialize(role)); newRole.Id = role.Id; newRole.Description = "new description"; role = (await roleApi.UpdateRolesAsync(new SqlQuery(), newRole)).Single(x => x.Name == NewRole); Console.WriteLine("UpdateUsersAsync(): new description={0}", role.Description); await DeleteRole(role, roleApi); }
public async Task RunAsync(IRestContext context) { // IUserApi provides all functions for user management ISystemApi systemApi = context.Factory.CreateSystemApi(); // List apps SqlQuery query = new SqlQuery { Filter = "is_active=true", Fields = "*", Related = "service_by_storage_service_id,role_by_user_to_app_to_role", }; IEnumerable<AppResponse> apps = (await systemApi.GetAppsAsync(query)).ToList(); Console.WriteLine("Apps: {0}", apps.Select(x => x.Name).ToStringList()); // Check admin app AppResponse adminApp = apps.Single(x => x.Name == "admin"); RelatedRole role = adminApp.Roles.FirstOrDefault(); if (role != null) { Console.WriteLine("admin app has first role: {0}", role.Name); } else { Console.WriteLine("admin app has no roles."); } RelatedService service = adminApp.StorageService; Console.WriteLine("admin app has {0} {1}", service != null ? "service" : "no service", service != null ? service.Name : ""); // List users with roles IEnumerable<UserResponse> users = await systemApi.GetUsersAsync(new SqlQuery()); Console.WriteLine("Users: {0}", users.Select(x => x.Name).ToStringList()); // Get environment info - does not work for WAMP, uncomment when using linux hosted DSP. // EnvironmentResponse environment = await systemApi.GetEnvironmentAsync(); // Console.WriteLine("DreamFactory Server is running on {0}", environment.Server); // Get constant //TODO: see about constants // var contentTypes = await systemApi.GetConstantAsync("content_types"); // Console.WriteLine("Content Types: {0}", contentTypes.Keys.ToStringList()); }