Example #1
0
        protected override FormiumResponse GetResponse(FormiumRequest request)
        {
            var response = new FileStreamResponse(request, true);

            if (request.Method != Method.GET)
            {
                response.Status = (int)System.Net.HttpStatusCode.NotFound;
                return(response);
            }
            var filePath = response.RelativePath;

            physicalPath = System.IO.Path.Combine(wwwroot, filePath);
            var fileInfo = new System.IO.FileInfo(physicalPath);

            if (fileInfo.Exists)
            {
                response.ContentStream = File.OpenRead(fileInfo.FullName);
            }
            else
            {
                response.Status = (int)System.Net.HttpStatusCode.NotFound;
            }

            return(response);
        }
Example #2
0
        protected override FormiumResponse GetResponse(FormiumRequest request)
        {
            var relativePath = request.Uri.LocalPath;

            relativePath = relativePath.Trim('/');


            var provider = RestfulServiceProvider.GetServiceProvider(request.Uri.Host);

            var route = provider?.Routes?.GetRoute(request.Method, relativePath);

            if (route == null)
            {
                return(new FormiumResponse
                {
                    Status = (int)System.Net.HttpStatusCode.NotFound
                });
            }

            return(route.Invoke(request));
        }
Example #3
0
 public Task <FormiumResponse> InvokeAsync(FormiumRequest request)
 {
     return(Task.Factory.StartNew(() => Action?.Invoke(request)));
 }
Example #4
0
 public FormiumResponse Invoke(FormiumRequest request)
 {
     return(Action?.Invoke(request));
 }
Example #5
0
        protected override FormiumResponse GetResponse(FormiumRequest request)
        {
            var requestUrl = request.RequestUrl;

            if (WebResources.ContainsKey(requestUrl))
            {
                return(WebResources[requestUrl]);
            }

            var mainAssembly = resourceAssembly;

            var response = WebResources[requestUrl] = new FileStreamResponse(request, true);

            if (request.Method != Method.GET)
            {
                response.Status = (int)System.Net.HttpStatusCode.NotFound;
                return(response);
            }

            var filePath = response.RelativePath;

            if (!string.IsNullOrEmpty(wwwroot))
            {
                filePath = $"{wwwroot}/{filePath}";
            }

            var endTrimIndex = filePath.LastIndexOf('/');

            if (endTrimIndex > -1)
            {
                var tmp = filePath.Substring(0, endTrimIndex);
                tmp = tmp.Replace("-", "_");

                filePath = string.Format("{0}{1}", tmp, filePath.Substring(endTrimIndex));
            }

            var resourcePath = string.Format("{0}.{1}", mainAssembly.GetName().Name, filePath.Replace('/', '.'));

            Assembly satelliteAssembly = null;

            try
            {
                satelliteAssembly = mainAssembly.GetSatelliteAssembly(System.Threading.Thread.CurrentThread.CurrentCulture);
            }
            catch
            {
            }

            var resourceNames = mainAssembly.GetManifestResourceNames().Select(x => new { TargetAssembly = mainAssembly, Name = x, IsSatellite = false });

            if (satelliteAssembly != null)
            {
                string HandleCultureName(string name)
                {
                    var cultureName = System.Threading.Thread.CurrentThread.CurrentCulture.Name;
                    var fileInfo    = new System.IO.FileInfo(name);

                    return($"{System.IO.Path.GetFileNameWithoutExtension(fileInfo.Name)}.{cultureName}{fileInfo.Extension}");
                }

                resourceNames = resourceNames.Union(satelliteAssembly.GetManifestResourceNames().Select(x => new { TargetAssembly = satelliteAssembly, Name = HandleCultureName(x), IsSatellite = true }));
            }

            var resource = resourceNames.SingleOrDefault(p => p.Name.Equals(resourcePath, StringComparison.CurrentCultureIgnoreCase));

            var manifestResourceName = resourcePath;

            if (resource != null && resource.IsSatellite)
            {
                var fileInfo = new System.IO.FileInfo(manifestResourceName);
                manifestResourceName = $"{System.IO.Path.GetFileNameWithoutExtension(System.IO.Path.GetFileNameWithoutExtension(fileInfo.Name))}{fileInfo.Extension}";
            }

            if (resource != null && resource.TargetAssembly.GetManifestResourceStream(manifestResourceName) != null)
            {
                response.ContentStream = resource.TargetAssembly.GetManifestResourceStream(manifestResourceName);

                WebResources[requestUrl] = response;

                return(response);
            }

            response.Status = (int)System.Net.HttpStatusCode.BadRequest;


            return(response);
        }