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); }
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())); }
public ResponseDefinition Build(IServiceMetadata metadata) { if (DataType == null) throw new ArgumentException("Missing DataType"); return new ResponseDefinition(metadata) { DataType = DataType }; }
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); }
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)); }
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()); }
public ResponseDefinition Build(IServiceMetadata metadata) { if (DataType == null) { throw new ArgumentException("Missing DataType"); } return(new ResponseDefinition(metadata) { DataType = DataType }); }
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); }
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 }; }
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); } }
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); } }
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); } }
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); }
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); }
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(); } }
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 }); }
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); }
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); }
public Services(IServiceMetadata meta) : base(meta) { Definitions = new List<ServiceDefinition>(); }
/// <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; }
public ModelDefinition(IServiceMetadata meta) : base(meta) { }
public ParameterDefinition(IServiceMetadata meta) : base(meta) { }
protected BaseModelEntityDefinition(IServiceMetadata meta) : base(meta) { }
protected BaseModelEntityDefinition(IServiceMetadata meta) : base(meta) {}
/// <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); }
public Services(IServiceMetadata meta) : base(meta) { Definitions = new List <ServiceDefinition>(); }
internal ServiceMetadata(IServiceMetadata copyFrom) : this(copyFrom.ApiNamespace, copyFrom.ModelNamespace) { ApiVersion = copyFrom.ApiVersion; }
protected BaseDefinition(IServiceMetadata meta) { ApiNamespace = meta.ApiNamespace; ModelNamespace = meta.ModelNamespace; ApiVersion = meta.ApiVersion; }
public ParameterDefinition(IServiceMetadata meta) : base(meta) {}
/// <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)); }
/// <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); }
public MetadataEx(IServiceMetadata metadata) { Metadata = metadata; }
public EnumDefinition(IServiceMetadata meta) : base(meta) { }
public ResponseDefinition(IServiceMetadata meta) : base(meta) { }
public ModelPropertyDefinition(IServiceMetadata meta) : base(meta) { }
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); }