Exemple #1
0
        static void Main(string[] args)
        {
            var schema = new ServiceSchema
            {
                Title   = "Test",
                Name    = "test",
                Version = Version.Parse("1.0")
            };

            schema.Endpoints.Add("event1", new EventEndpointSchema
            {
                Title = "Event1",
                Event = new ObjectTypeSchema
                {
                }
            });

            schema.Endpoints.Add("cmd1", new CommandEndpointSchema
            {
                Title = "Command1"
            });

            schema.Endpoints.Add("call1", new CallableEndpointSchema()
            {
                Title = "Call1"
            });

            var json = schema.ToString();
            var obj  = ServiceSchema.FromString(json);

            var generator = new SchemaGenerator <ISampleService>();

            schema = generator.Generate(new SchemaGenerationOptions(new RabbitSchemaGenerator()));
            json   = schema.ToString();
            schema.ToFile("sample.json");
            schema = ServiceSchema.FromString(json);
            var csgenerator = new CSharpCodeGenerator(schema, new CSharpCodeGenerationOptions("Test")
            {
                ExcludedTypes       = new[] { "SampleCommand" },
                Endpoints           = new[] { "AwesomeEvent" }.Include(),
                GeneratedProperties = new Dictionary <string, SkipInclude>
                {
                    { "SampleEvent", new [] { "Order" }.Skip() }
                }
            }, new RabbitCSharpGenerator());
            var csharp = csgenerator.GenerateContracts();
            //File.WriteAllText("sample.cs", csharp);
            var cintf = csgenerator.GenerateInterface();

            File.WriteAllText("sample.cs", csharp + "\n" + cintf);
            Console.ReadKey();
        }
Exemple #2
0
        public void Serialization()
        {
            var schema = new ServiceSchema
            {
                Title   = "Test",
                Name    = "test",
                Version = Version.Parse("1.0")
            };

            schema.Endpoints.Add("event1", new EventEndpointSchema
            {
                Title = "Event1",
                Event = new ObjectTypeSchema()
                {
                }
            });

            schema.Endpoints.Add("cmd1", new CommandEndpointSchema
            {
                Title = "Command1"
            });

            schema.Endpoints.Add("call1", new CallableEndpointSchema()
            {
                Title = "Call1"
            });

            var json     = schema.ToString();
            var restored = ServiceSchema.FromString(json);

            Assert.Equal(restored.Title, schema.Title);
            Assert.Equal(restored.Name, schema.Name);
            Assert.Equal(restored.Version, schema.Version);
            Assert.Equal(restored.Endpoints.Count, schema.Endpoints.Count);
            Assert.Equal(restored.Endpoints["event1"].GetType(), typeof(EventEndpointSchema));
            Assert.Equal(restored.Endpoints["cmd1"].GetType(), typeof(CommandEndpointSchema));
            Assert.Equal(restored.Endpoints["call1"].GetType(), typeof(CallableEndpointSchema));
        }
Exemple #3
0
 private ServiceSchema GetServiceSchema <T>()
 {
     return(_schemaCache.GetOrAdd(typeof(T), _ =>
     {
         var typeInfo = typeof(T).GetTypeInfo();
         var attr = typeInfo.GetCustomAttribute <ServiceAttribute>();
         if (attr == null)
         {
             throw new ArgumentException($"Invalid service type {typeof(T)} - not ServiceAttribute found");
         }
         var schemaAttr = typeInfo.GetCustomAttribute <SchemaAttribute>();
         var schema = schemaAttr == null ? new SchemaGenerator <T>().Generate(_schemaGenerationOptions) : ServiceSchema.FromString(schemaAttr.Schema);
         return schema;
     }));
 }