Пример #1
0
 public OperationDefinition(OperationPath path, IServiceMetadata meta) : base(meta)
 {
     ConsumesOctetStream = false;
     Path                = path;
     Parameters          = new List <ParameterDefinition>();
     ProducesOctetStream = false;
 }
        public static string RenderView(string path, bool populateFromQueryString, out IServiceMetadata metadata, out IPagingDataProvider pagingData)
        {
            Page page = new Page();
            UserControl ctrl = (UserControl)page.LoadControl(path);

            return RenderControlInternal(page, ctrl, populateFromQueryString, out metadata, out pagingData);
        }
        public static (IEnumerable <Type> controllerType, IServiceMetadata serviceMetadata) CreateSingle(
            ILoggerFactory logFactory, Assembly assembly)
        {
            var logger = logFactory.CreateLogger(nameof(ControllerFactory));

            IServiceMetadata serviceMetadata = null;
            var serviceMetadataType          = assembly.GetTypes().SingleOrDefault(x => typeof(IServiceMetadata).IsAssignableFrom(x));

            if (serviceMetadataType != null)
            {
                logger.LogInformation($"Using service meta data from {serviceMetadataType.FullName}.");
                serviceMetadata = (IServiceMetadata)Activator.CreateInstance(serviceMetadataType);
            }
            else
            {
                logger.LogInformation("No service meta data found, using default.");
            }

            var serviceTypes  = GetServiceTypes(assembly);
            var generatedCode = CreateControllerCode(serviceTypes).ToArray();

            if (generatedCode.Any() == false)
            {
                throw new Exception("No controller methods found in service assembly.");
            }
            var generatedAssembly = CompileControllerCode(generatedCode, assembly);
            var controllerTypes   = GetControllerTypes(generatedAssembly);

            return(controllerTypes, serviceMetadata);
        }
Пример #4
0
 public static T GetSingelService <T>(this IServicePool source, [Required] IServiceMetadata metadata)
     where T : class, IService
 {
     return(source.GetFirstOrDefault <T>(
                m =>
                m.Metadata.Contracts == metadata.Contracts && m.Metadata.Descriptor == metadata.Descriptor &&
                m.Metadata.ToString() == metadata.ToString()));
 }
Пример #5
0
        public ResponseDefinition Build(IServiceMetadata metadata)
        {
            if (DataType == null) throw new ArgumentException("Missing DataType");

            return new ResponseDefinition(metadata)
            {
                DataType = DataType
            };
        }
Пример #6
0
        public void ExtractServiceMetadata_Should_Return_Extracted_ServiceMetadata()
        {
            var sessionReflection = new SessionReflection();

            IServiceMetadata serviceMetadata = sessionReflection.ExtractServiceMetadata <MockAmazonServiceClientWithServiceMetadata>();

            Assert.NotNull(serviceMetadata);
            Assert.Equal(MockServiceMetadata.MockServiceId, serviceMetadata.ServiceId);
        }
Пример #7
0
 public static IEnumerable <T> GetServices <T>(this IServicePool source, [Required] IServiceMetadata metadata)
     where T : class, IService
 {
     return(source.GetServiceInternal()
            .Where(m => m.Metadata.Contracts == metadata.Contracts &&
                   m.Metadata.Descriptor == metadata.Descriptor &&
                   m.Metadata.IsDefauldService == metadata.IsDefauldService &&
                   m.Metadata.ToString() == metadata.ToString())
            .Select(s => s.Value as T));
 }
Пример #8
0
 public static T GetSingelService <T>(this IServicePool source, [Required] IServiceMetadata metadata)
     where T : class, IService
 {
     return(source.GetServiceInternal()
            .Where(
                m =>
                m.Metadata.Contracts == metadata.Contracts && m.Metadata.Descriptor == metadata.Descriptor &&
                m.Metadata.ToString() == metadata.ToString())
            .Select(m => m.Value as T).FirstOrDefault());
 }
Пример #9
0
        public ResponseDefinition Build(IServiceMetadata metadata)
        {
            if (DataType == null)
            {
                throw new ArgumentException("Missing DataType");
            }

            return(new ResponseDefinition(metadata)
            {
                DataType = DataType
            });
        }
Пример #10
0
        private T NewMetadata(string apiNamespace = null, string modelNamespace = null, string apiVersion = null)
        {
            Metadata = new ServiceMetadata(
                apiNamespace ?? Metadata.ApiNamespace,
                modelNamespace ?? Metadata.ModelNamespace
                )
            {
                ApiVersion = apiVersion ?? Metadata.ApiVersion
            };

            return((T)this);
        }
Пример #11
0
        public ParameterDefinition Build(IServiceMetadata metadata)
        {
            if (Name == null) throw new ArgumentException("Missing Name");
            if (DataType == null) throw new ArgumentException("Missing DataType");

            return new ParameterDefinition(metadata)
            {
                Name = Name,
                Type = Type ?? ParameterType.Body,
                DataType = DataType,
                IsRequired = IsRequired
            };
        }
Пример #12
0
 public static bool TryGetSingelMetadata(this IServicePool source, [Out] IServiceMetadata output)
 {
     output = default(IServiceMetadata);
     try
     {
         output = source.GetServiceInternal().Select(s => s.Metadata).FirstOrDefault();
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
Пример #13
0
 public static bool TryGetSingelService <T>(this IServicePool source, [Out][Required] T output,
                                            IServiceMetadata metadata) where T : class
 {
     output = default(T);
     try
     {
         output = source.GetServiceInternal()
                  .Where(m => m.Metadata == metadata)
                  .Select(m => m.Value as T).FirstOrDefault();
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
Пример #14
0
 public static bool TryGetServices <T>(this IServicePool source, [Out][Required] IEnumerable <T> output,
                                       IServiceMetadata metadata) where T : class, IService
 {
     output = default(IEnumerable <T>);
     try
     {
         output = source.GetServiceInternal()
                  .Where(m => m.Metadata == metadata)
                  .Select(m => m.Value as T);
         return(true);
     }
     catch (Exception)
     {
         return(false);
     }
 }
Пример #15
0
        public async Task <WebRequest> Build(object service, string action, object model)
        {
            Service         = service;
            ServiceType     = service.GetType();
            Action          = action;
            Model           = model ?? new { };
            ModelType       = Model.GetType();
            ActionMetadata  = actionMetadataProvider.GetMetadataFor(Service, Action, Model);
            ServiceMetadata = serviceMetadataProvider.GetMetadataFor(Service);
            ModelDictionary = new ModelDictionary(Model);

            BuildValues();
            BuildRoute();
            Request        = WebRequest.CreateHttp(Route);
            Request.Method = ActionMetadata.HttpMethod;
            BuildHeaders();
            BuildContent();
            return(Request);
        }
Пример #16
0
        public AmazonServiceClient CreateClientByImplementation(Type implType)
        {
            IServiceMetadata   serviceMetadata    = _sessionReflection.ExtractServiceMetadata(implType);
            AwsServiceEndpoint awsServiceEndpoint = _config.GetAwsServiceEndpoint(serviceMetadata.ServiceId) ??
                                                    throw new InvalidOperationException($"{serviceMetadata.ServiceId} is not supported by this mock session.");

            AWSCredentials awsCredentials = new SessionAWSCredentials(_sessionOptions.AwsAccessKeyId, _sessionOptions.AwsAccessKey, _sessionOptions.AwsSessionToken);
            ClientConfig   clientConfig   = _sessionReflection.CreateClientConfig(implType);

            clientConfig.ServiceURL = awsServiceEndpoint.ServiceUrl;
            clientConfig.UseHttp    = true;
            _sessionReflection.SetForcePathStyle(clientConfig);
            clientConfig.ProxyHost = awsServiceEndpoint.Host;
            clientConfig.ProxyPort = awsServiceEndpoint.Port;

            var clientInstance = (AmazonServiceClient)Activator.CreateInstance(implType, awsCredentials, clientConfig);

            return(clientInstance);
        }
Пример #17
0
 public async Task<WebRequest> Build(object service, string action, object model)
 {
     Service = service;
     ServiceType = service.GetType();
     Action = action;
     Model = model ?? new { };
     ModelType = Model.GetType();
     ActionMetadata = actionMetadataProvider.GetMetadataFor(Service, Action, Model);
     ServiceMetadata = serviceMetadataProvider.GetMetadataFor(Service);
     ModelDictionary = new ModelDictionary(Model); 
     
     BuildValues();
     BuildRoute();
     Request = WebRequest.CreateHttp(Route);
     Request.Method = ActionMetadata.HttpMethod;
     BuildHeaders();
     BuildContent();
     return Request;
 }
        private static string RenderControlInternal(Page page, Control ctrl, bool populateFromQueryString,
            out IServiceMetadata metadata, out IPagingDataProvider pagingData)
        {
            if (populateFromQueryString)
            {
                Populate(ctrl);
            }

            using (StringWriter sw = new StringWriter())
            {
                page.Controls.Add(ctrl);
                HttpContext.Current.Server.Execute(page, sw, false);

                metadata = GetServiceMetadata(ctrl);
                pagingData = GetPagingData(ctrl);

                return sw.ToString();
            }
        }
Пример #19
0
        public ParameterDefinition Build(IServiceMetadata metadata)
        {
            if (Name == null)
            {
                throw new ArgumentException("Missing Name");
            }
            if (DataType == null)
            {
                throw new ArgumentException("Missing DataType");
            }

            return(new ParameterDefinition(metadata)
            {
                Name = Name,
                Type = Type ?? ParameterType.Body,
                DataType = DataType,
                IsRequired = IsRequired
            });
        }
Пример #20
0
        public OperationDefinition Build(IServiceMetadata metadata)
        {
            if (Name == null)
            {
                throw new ArgumentException("Missing Name");
            }
            if (Path == null)
            {
                throw new ArgumentException("Missing Path");
            }
            if (ResponseBuilderAction == null)
            {
                throw new ArgumentException("Missing Response");
            }

            var def = new OperationDefinition(Path, metadata)
            {
                Description = Description,
                HttpMethod  = HttpMethod ?? HttpMethodType.GET,
                Name        = Name
            };

            var rb = new ResponseBuilder();

            ResponseBuilderAction(rb);
            def.SetResponse(rb.Build(metadata));

            foreach (var pb in _parameterBuilders)
            {
                var builder = new ParameterBuilder();
                pb(builder);
                def.AddParameter(builder.Build(metadata));
            }

            return(def);
        }
Пример #21
0
        public AmazonServiceClient CreateClientByInterface(Type serviceInterfaceType)
        {
            var  clientTypeName = $"{serviceInterfaceType.Namespace}.{serviceInterfaceType.Name.Substring(1)}Client";
            Type clientType     = serviceInterfaceType.GetTypeInfo().Assembly.GetType(clientTypeName);

            if (clientType == null)
            {
                throw new AmazonClientException($"Failed to find service client {clientTypeName} which implements {serviceInterfaceType.FullName}.");
            }

            IServiceMetadata serviceMetadata = _sessionReflection.ExtractServiceMetadata(clientType);

            AwsServiceEndpoint awsServiceEndpoint = _config.GetAwsServiceEndpoint(serviceMetadata.ServiceId) ??
                                                    throw new InvalidOperationException($"{serviceMetadata.ServiceId} is not supported by this mock session.");

            AWSCredentials awsCredentials = new SessionAWSCredentials(_sessionOptions.AwsAccessKeyId, _sessionOptions.AwsAccessKey, _sessionOptions.AwsSessionToken);

            ClientConfig clientConfig = _sessionReflection.CreateClientConfig(clientType);

            clientConfig.ServiceURL = awsServiceEndpoint.ServiceUrl;
            clientConfig.UseHttp    = true;
            _sessionReflection.SetForcePathStyle(clientConfig);
            clientConfig.ProxyHost = awsServiceEndpoint.Host;
            clientConfig.ProxyPort = awsServiceEndpoint.Port;

            ConstructorInfo constructor = clientType.GetConstructor(new Type[] { typeof(AWSCredentials), clientConfig.GetType() });

            if (constructor == null)
            {
                throw new AmazonClientException($"Service client {clientTypeName} missing a constructor with parameters AWSCredentials and {clientConfig.GetType().FullName}.");
            }

            var client = (AmazonServiceClient)constructor.Invoke(new object[] { awsCredentials, clientConfig });

            return(client);
        }
Пример #22
0
 public Services(IServiceMetadata meta) 
     : base(meta)
 {
     Definitions = new List<ServiceDefinition>();
 }
Пример #23
0
 /// <summary>
 ///     Check if one of the Services exists
 /// </summary>
 /// <param name="service"></param>
 /// <returns></returns>
 public bool Contains(IServiceMetadata service)
 {
     return Services.FirstOrDefault(s => s.Item2.Equals(service)) != null;
 }
Пример #24
0
 public ModelDefinition(IServiceMetadata meta)
     : base(meta)
 {
 }
Пример #25
0
 public ParameterDefinition(IServiceMetadata meta) : base(meta)
 {
 }
 protected BaseModelEntityDefinition(IServiceMetadata meta) : base(meta)
 {
 }
Пример #27
0
 protected BaseModelEntityDefinition(IServiceMetadata meta) : base(meta) {}
Пример #28
0
 /// <summary>
 ///     Check if one of the Services exists
 /// </summary>
 /// <param name="service"></param>
 /// <returns></returns>
 public bool Contains(IServiceMetadata service)
 {
     return(Services.FirstOrDefault(s => s.Item2.Equals(service)) != null);
 }
Пример #29
0
 public Services(IServiceMetadata meta)
     : base(meta)
 {
     Definitions = new List <ServiceDefinition>();
 }
Пример #30
0
 internal ServiceMetadata(IServiceMetadata copyFrom)
     : this(copyFrom.ApiNamespace, copyFrom.ModelNamespace)
 {
     ApiVersion = copyFrom.ApiVersion;
 }
Пример #31
0
 internal ServiceMetadata(IServiceMetadata copyFrom)
     : this(copyFrom.ApiNamespace, copyFrom.ModelNamespace)
 {
     ApiVersion = copyFrom.ApiVersion;
 }
Пример #32
0
 protected BaseDefinition(IServiceMetadata meta)
 {
     ApiNamespace = meta.ApiNamespace;
     ModelNamespace = meta.ModelNamespace;
     ApiVersion = meta.ApiVersion;
 }
Пример #33
0
 public ParameterDefinition(IServiceMetadata meta) : base(meta) {}
Пример #34
0
 /// <summary>
 ///     Count all Existing Services that match the Specific Metadata
 /// </summary>
 /// <param name="service"></param>
 /// <returns></returns>
 public long Count(IServiceMetadata service)
 {
     return(Services.Count(s => s.Item2.Contracts == service.Contracts));
 }
Пример #35
0
 /// <summary>
 ///     Count all Existing Services that match the Specific Metadata
 /// </summary>
 /// <param name="service"></param>
 /// <returns></returns>
 public long Count(IServiceMetadata service)
 {
     return Services.Count(s => s.Item2.Contracts == service.Contracts);
 }
Пример #36
0
 protected BaseDefinition(IServiceMetadata meta)
 {
     ApiNamespace   = meta.ApiNamespace;
     ModelNamespace = meta.ModelNamespace;
     ApiVersion     = meta.ApiVersion;
 }
Пример #37
0
 public MetadataEx(IServiceMetadata metadata)
 {
     Metadata = metadata;
 }
Пример #38
0
 public EnumDefinition(IServiceMetadata meta) : base(meta)
 {
 }
Пример #39
0
 public ResponseDefinition(IServiceMetadata meta) : base(meta)
 {
 }
Пример #40
0
 public ModelPropertyDefinition(IServiceMetadata meta) : base(meta)
 {
 }
Пример #41
0
 public ResponseDefinition(IServiceMetadata meta) : base(meta) {}
 public static string RenderView(string path, out IServiceMetadata metadata, out IPagingDataProvider pagingData)
 {
     return RenderView(path, true, out metadata, out pagingData);
 }