public void ConfigureServices(IServiceCollection services) { FirebaseApp.Create(new AppOptions { Credential = GoogleCredential.FromJson(Environment.GetEnvironmentVariable("FIREBASE_PRIVATE_KEY") ?? "") }); var connectionString = new MySqlConnectionStringBuilder(Environment.GetEnvironmentVariable("MUNDOB_DB_STR") ?? "").ToString(); services.AddMundoBServices() .AddHttpContextAccessor() .AddAutoMapper(typeof(EntitiesMappingProfile)) .AddDbServices(Configuration, connectionString) .AddAuthenticationServices() .AddInputValidationServices(); services .AddGraphQLServer() .AddType <UploadType>() .AddQueryType(d => d.Name("Query")) .AddTypeExtension <SiteQueries>() .AddTypeExtension <UserQueries>() .AddTypeExtension <ProductQueries>() .AddTypeExtension <CollectionQueries>() .AddMutationType(d => d.Name("Mutation")) .AddTypeExtension <UserMutations>() .AddTypeExtension <ProductMutations>() .AddTypeExtension <CollectionMutations>() .AddSorting() .AddAuthorization() .AddHttpRequestInterceptor(AuthenticationInterceptor.GetAuthenticationInterceptor()); var origins = new[] { "https://dev.mundoballoon.com", "https://dev.mundoballoon.com:3000" }; services.AddCors(options => { options.AddDefaultPolicy(builder => { builder.WithOrigins(origins) .AllowAnyHeader() .AllowAnyHeader(); }); }); }
public async Task InvokeAsync(HttpContext context) { //RequestLoggerInterceptors.LogRequest(new object[] { context.Request.Body, context.Request.Headers }); CodeLabException codelabExp = AuthenticationInterceptor.AuthenticateUser(context.Request); if (codelabExp != null) { context.Response.StatusCode = 490; context.Response.ContentType = "application/json"; string jsonString = JsonConvert.SerializeObject(codelabExp); await context.Response.WriteAsync(jsonString, Encoding.UTF8); // to stop futher pipeline execution return; } // Call the next delegate/middleware in the pipeline await _next(context); }
static void Main(string[] args) { AppContext.SetSwitch( "System.Net.Http.SocketsHttpHandler.Http2UnencryptedSupport", true); DotEnv.Config(false); var envReader = new EnvReader(); var apiKey = envReader.GetStringValue("API_KEY"); var apiSecret = envReader.GetStringValue("API_SECRET"); var host = envReader.GetStringValue("HOST"); var port = envReader.GetIntValue("PORT"); Console.WriteLine(string.Format("http://{0}:{1}", host, port)); using (var channel = GrpcChannel.ForAddress(String.Format("http://{0}:{1}", host, port))) { /** * Initiate Suggestion */ G2Rail.Protobuf.SuggestionRequest suggestionRequest = new G2Rail.Protobuf.SuggestionRequest { Query = "BERLIN" }; var authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, suggestionRequest)); var suggestionClient = new G2Rail.Protobuf.Suggestions.SuggestionsClient(channel.Intercept(authenticationInterceptor)); var suggestions = suggestionClient.Query(suggestionRequest); Console.WriteLine(suggestions.ToString()); /** * Initiate Search Request */ G2Rail.Protobuf.SearchRequest searchRequest = new G2Rail.Protobuf.SearchRequest { From = "BERLIN", To = "FRANKFURT", Date = "2020-6-22", Time = "07:00", Adult = 1, Child = 0 }; authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, searchRequest)); var client = new G2Rail.Protobuf.OnlineSolutions.OnlineSolutionsClient(channel.Intercept(authenticationInterceptor)); var asyncResponse = client.Search(searchRequest); var asyncKey = asyncResponse.AsyncKey; Console.WriteLine("Search Result At: " + asyncResponse.AsyncKey); if (string.IsNullOrEmpty(asyncKey)) { Console.WriteLine("Async Key Fetch Error"); return; } /** * Retrieve Search Response */ var queryOnlineSolutionRequest = new G2Rail.Protobuf.OnlineSolutionsAsyncQueryRequest { AsyncKey = asyncKey }; authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, queryOnlineSolutionRequest)); client = new G2Rail.Protobuf.OnlineSolutions.OnlineSolutionsClient(channel.Intercept(authenticationInterceptor)); G2Rail.Protobuf.OnlineSolutionsResponse searchResponse; do { searchResponse = client.QueryAsyncOnlineSolutions(queryOnlineSolutionRequest); Console.WriteLine(searchResponse.ToString()); Thread.Sleep(2000); } while (searchResponse.RailwaySolutions.Any(x => x.Loading)); /** * Start Booking by find the first booking code. */ var bookingCode = searchResponse.RailwaySolutions.ElementAt <G2Rail.Protobuf.RailwaySolution>(0).Solutions[0].Sections[0].Offers[1].Services[0].BookingCode; var bookRequest = new G2Rail.Protobuf.BookRequest { Sections = { bookingCode }, Passengers = { new G2Rail.Protobuf.Passenger { Gender = G2Rail.Protobuf.Passenger.Types.Gender.Male, FirstName = "QINWEN", LastName = "SHI", Passport = "E12341813", Phone = "+8527892123", Email = "*****@*****.**", Birthdate = "1986-06-01", } } }; authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, bookRequest)); var onlineOrderClient = new G2Rail.Protobuf.OnlineOrders.OnlineOrdersClient(channel.Intercept(authenticationInterceptor)); var bookAsyncKey = onlineOrderClient.Book(bookRequest).AsyncKey; Console.WriteLine("Order will be at :" + bookAsyncKey); /* * Retireve Online Order */ var queryOnlineOrderRequest = new G2Rail.Protobuf.OnlineOrderAsyncQueryRequest { AsyncKey = bookAsyncKey }; G2Rail.Protobuf.OnlineOrderResponse onlineOrderResponse; do { Console.WriteLine("Load Book Result From: " + bookAsyncKey); authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, queryOnlineOrderRequest)); onlineOrderClient = new G2Rail.Protobuf.OnlineOrders.OnlineOrdersClient(channel.Intercept(authenticationInterceptor)); onlineOrderResponse = onlineOrderClient.QueryAsyncOnlineOrder(queryOnlineOrderRequest); Thread.Sleep(3000); } while (onlineOrderResponse.Loading); Console.WriteLine(onlineOrderResponse.ToString()); /** * Confirm the order and issue tickets. */ var confirmRequest = new G2Rail.Protobuf.ConfirmRequest { OrderId = onlineOrderResponse.Id }; authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, confirmRequest)); var onlineConfirmationClient = new G2Rail.Protobuf.OnlineConfirmations.OnlineConfirmationsClient(channel.Intercept(authenticationInterceptor)); var confirmationAsyncKey = onlineConfirmationClient.Confirm(confirmRequest).AsyncKey; Console.WriteLine("Confirmation will be at :" + confirmationAsyncKey); /* * Retireve Confirmation Result with PNR etc. */ var queryOnlineConfirmationRequest = new G2Rail.Protobuf.OnlineConfirmationAsyncQueryRequest { AsyncKey = confirmationAsyncKey }; G2Rail.Protobuf.OnlineConfirmationResponse onlineConfirmationResponse; do { Console.WriteLine("Load Confirm Result From: " + bookAsyncKey); authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, queryOnlineConfirmationRequest)); onlineConfirmationClient = new G2Rail.Protobuf.OnlineConfirmations.OnlineConfirmationsClient(channel.Intercept(authenticationInterceptor)); onlineConfirmationResponse = onlineConfirmationClient.QueryAsyncOnlineConfirmation(queryOnlineConfirmationRequest); Thread.Sleep(3000); } while (onlineConfirmationResponse.Loading); Console.WriteLine(onlineConfirmationResponse.ToString()); /* * Download Tickets */ var downloadRequest = new G2Rail.Protobuf.DownloadRequest { OrderId = onlineOrderResponse.Id }; authenticationInterceptor = new AuthenticationInterceptor(apiKey, new MessageSignature(apiKey, apiSecret, confirmRequest)); var onlineTicketsClient = new G2Rail.Protobuf.OnlineTickets.OnlineTicketsClient(channel.Intercept(authenticationInterceptor)); var onlineTicketsResponse = onlineTicketsClient.Download(downloadRequest); Console.WriteLine("Your tickets are: "); Console.WriteLine(onlineTicketsResponse.ToString()); } }