Пример #1
0
        internal static Task <TResult> IntegrationResourceTypesAsync <TResult>(Guid integrationId,
                                                                               Func <string[], TResult> onFound,
                                                                               Func <TResult> onNotFound)
        {
            var context = Context.LoadFromConfiguration();

            return(connections
                   .SelectKeys()
                   .FlatMap(
                       (resourceType, nextResourceType, skip) =>
            {
                var connectionInitializerss = connections[resourceType];
                return connectionInitializerss
                .First(
                    async(connectionInitializersKvp, nextInitializer) =>
                {
                    var connectionInitializerType = connectionInitializersKvp.Key;
                    var connectionInitializers = connectionInitializersKvp.Value;
                    var integrationConnectionInitializations = await context.Integrations.GetActivityAsync(integrationId, connectionInitializersKvp.Key);
                    var connections = integrationConnectionInitializations.Value
                                      .SelectMany(
                        connectionInitialization => connectionInitializers
                        .Select(connectionInitializer => connectionInitializer(connectionInitialization)))
                                      .ToArray();
                    return await connections
                    .First(
                        (connection, nextConnection) => (connection.ResourceType == resourceType) ?
                        nextResourceType(resourceType)
                                                :
                        nextConnection(),
                        () => nextInitializer());
                },
                    () =>
                {
                    return skip();
                });
            },
                       (IEnumerable <string> resourceTypes) => onFound(resourceTypes.ToArray()).ToTask()));
        }
Пример #2
0
        internal static async Task <TResult> ConnectionsAsync <TResult>(Guid integrationId, string resourceType,
                                                                        Func <EastFive.Azure.Integration, Azure.Synchronization.Connections[], TResult> onFound,
                                                                        Func <TResult> onNotFound)
        {
            var context = Context.LoadFromConfiguration();

            return(await await context.Integrations.GetAuthenticatedByIdAsync(integrationId,
                                                                              async (integration) =>
            {
                if (resourceType.IsNullOrWhiteSpace() || (!connections.ContainsKey(resourceType)))
                {
                    return onFound(integration, new Azure.Synchronization.Connections[] { });
                }
                var connectionInitializerss = connections[resourceType];

                return await connectionInitializerss
                .FlatMap(
                    async(connectionInitializersKvp, next, skip) =>
                {
                    var connectionInitializerType = connectionInitializersKvp.Key;
                    var connectionInitializers = connectionInitializersKvp.Value;
                    var integrationConnectionInitializations = await context.Integrations.GetActivityAsync(integrationId, connectionInitializersKvp.Key);
                    var connections = integrationConnectionInitializations.Value
                                      .SelectMany(
                        connectionInitialization => connectionInitializers
                        .Select(connectionInitializer => connectionInitializer(connectionInitialization)))
                                      .ToArray();
                    return await next(connections);
                },
                    (IEnumerable <Azure.Synchronization.Connections[]> connectionss) =>
                {
                    return onFound(integration, connectionss.SelectMany().ToArray()).ToTask();
                });
            },
                                                                              onNotFound.AsAsyncFunc()));
        }