public static CommonCache GetInstance()
 {
     if (_instance == null)
     {
         _instance = new CommonCache();
     }
     return(_instance);
 }
 protected override void OnReceivedRequest(HttpRequest request)
 {
     // Process HTTP request methods
     if (request.Method == "HEAD")
     {
         SendResponseAsync(Response.MakeHeadResponse());
     }
     else if (request.Method == "GET")
     {
         // Get the cache value
         string cache;
         if (CommonCache.GetInstance().GetCache(request.Url, out cache))
         {
             // Response with the cache value
             SendResponseAsync(Response.MakeGetResponse(cache));
         }
         else
         {
             SendResponseAsync(Response.MakeErrorResponse("Required cache value was not found for the key: " + request.Url));
         }
     }
     else if ((request.Method == "POST") || (request.Method == "PUT"))
     {
         // Set the cache value
         CommonCache.GetInstance().SetCache(request.Url, request.Body);
         // Response with the cache value
         SendResponseAsync(Response.MakeOkResponse());
     }
     else if (request.Method == "DELETE")
     {
         // Delete the cache value
         string cache;
         if (CommonCache.GetInstance().DeleteCache(request.Url, out cache))
         {
             // Response with the cache value
             SendResponseAsync(Response.MakeGetResponse(cache));
         }
         else
         {
             SendResponseAsync(Response.MakeErrorResponse("Deleted cache value was not found for the key: " + request.Url));
         }
     }
     else if (request.Method == "OPTIONS")
     {
         SendResponseAsync(Response.MakeOptionsResponse());
     }
     else if (request.Method == "TRACE")
     {
         SendResponseAsync(Response.MakeTraceResponse(request.Cache));
     }
     else
     {
         SendResponseAsync(Response.MakeErrorResponse("Unsupported HTTP method: " + request.Method));
     }
 }
        protected override void OnReceivedRequest(HttpRequest request)
        {
            // Process HTTP request methods
            if (request.Method == "HEAD")
            {
                SendResponseAsync(Response.MakeHeadResponse());
            }
            else if (request.Method == "GET")
            {
                string key = request.Url;

                // Decode the key value
                key = Uri.UnescapeDataString(key);
                key = key.Replace("/api/cache", "", StringComparison.InvariantCultureIgnoreCase);
                key = key.Replace("?key=", "", StringComparison.InvariantCultureIgnoreCase);

                if (string.IsNullOrEmpty(key))
                {
                    // Response with all cache values
                    SendResponseAsync(Response.MakeGetResponse(CommonCache.GetInstance().GetAllCache(), "application/json; charset=UTF-8"));
                }
                // Get the cache value by the given key
                else if (CommonCache.GetInstance().GetCacheValue(key, out var value))
                {
                    // Response with the cache value
                    SendResponseAsync(Response.MakeGetResponse(value));
                }
                else
                {
                    SendResponseAsync(Response.MakeErrorResponse("Required cache value was not found for the key: " + key, 404));
                }
            }
            else if ((request.Method == "POST") || (request.Method == "PUT"))
            {
                string key   = request.Url;
                string value = request.Body;

                // Decode the key value
                key = Uri.UnescapeDataString(key);
                key = key.Replace("/api/cache", "", StringComparison.InvariantCultureIgnoreCase);
                key = key.Replace("?key=", "", StringComparison.InvariantCultureIgnoreCase);

                // Put the cache value
                CommonCache.GetInstance().PutCacheValue(key, value);

                // Response with the cache value
                SendResponseAsync(Response.MakeOkResponse());
            }
            else if (request.Method == "DELETE")
            {
                string key = request.Url;

                // Decode the key value
                key = Uri.UnescapeDataString(key);
                key = key.Replace("/api/cache", "", StringComparison.InvariantCultureIgnoreCase);
                key = key.Replace("?key=", "", StringComparison.InvariantCultureIgnoreCase);

                // Delete the cache value
                if (CommonCache.GetInstance().DeleteCacheValue(key, out var value))
                {
                    // Response with the cache value
                    SendResponseAsync(Response.MakeGetResponse(value));
                }
                else
                {
                    SendResponseAsync(Response.MakeErrorResponse("Deleted cache value was not found for the key: " + key, 404));
                }
            }
            else if (request.Method == "OPTIONS")
            {
                SendResponseAsync(Response.MakeOptionsResponse());
            }
            else if (request.Method == "TRACE")
            {
                SendResponseAsync(Response.MakeTraceResponse(request.Cache));
            }
            else
            {
                SendResponseAsync(Response.MakeErrorResponse("Unsupported HTTP method: " + request.Method));
            }
        }