예제 #1
0
        public static Version GetClientPlatformVersion(this RestApiBaseController controller, string platform, int precision)
        {
            Version result = new Version("1.0");

            try
            {
                if (controller != null && controller.Request != null && controller.Request.Headers != null)
                {
                    if (controller.Request.Headers.Contains("X-DeviceVersion") && controller.Request.Headers.Contains("X-DevicePlatform"))
                    {
                        if (controller.Request.Headers.GetValues("X-DevicePlatform").FirstOrDefault() == platform)
                        {
                            string version = controller.Request.Headers.GetValues("X-DeviceVersion").FirstOrDefault();
                            int    count   = precision - version.Count(x => x == '.') - 1;
                            for (int i = 0; i < count; i++)
                            {
                                version += ".0";
                            }
                            result = new Version(version);
                        }
                    }
                }
            }
            catch
            {
                // gulp
            }

            return(result);
        }
예제 #2
0
 public static Account GetCurrentAccount(this RestApiBaseController controller)
 {
     if (controller != null && controller.Request != null && controller.Request.Properties != null &&
         controller.Request.Properties.ContainsKey(ApiKeyHttpAuthorize.CURRENT_ACCOUNT_HTTP_CONTEXT_KEY))
     {
         return(controller.Request.Properties[ApiKeyHttpAuthorize.CURRENT_ACCOUNT_HTTP_CONTEXT_KEY] as Account);
     }
     return(null);
 }
예제 #3
0
        public static void ThrowUnauthorized(this RestApiBaseController controller)
        {
            string message = "Unable to access required item";

            throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized)
            {
                Content      = new StringContent(message),
                ReasonPhrase = message,
            });
        }
예제 #4
0
        public static void ValidateAdmin(this RestApiBaseController controller)
        {
            Account admin = controller.GetCurrentAccount();

            if (admin == null || !admin.IsAdmin())
            {
                string message = "Unable to access required item";
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized)
                {
                    Content      = new StringContent(message),
                    ReasonPhrase = message,
                });
            }
        }
예제 #5
0
        public static string GetClientPlatform(this RestApiBaseController controller)
        {
            try
            {
                if (controller != null && controller.Request != null && controller.Request.Headers != null)
                {
                    if (controller.Request.Headers.Contains("X-DevicePlatform"))
                    {
                        return(controller.Request.Headers.GetValues("X-DevicePlatform").FirstOrDefault());
                    }
                }
            }
            catch
            {
                // gulp
            }

            return("web");
        }
예제 #6
0
 public static bool IsClientVersionEqualToOrGreaterThan(this RestApiBaseController controller, string version)
 {
     return(controller.GetClientPlatformVersion(version.Count(x => x == '.') + 1) >= new Version(version));
 }
예제 #7
0
 public static bool IsClientVersionLessThanOrEqualTo(this RestApiBaseController controller, string version)
 {
     return(controller.GetClientPlatformVersion(version.Count(x => x == '.') + 1) <= new Version(version));
 }
예제 #8
0
 public static string GetClientPlatformAndVersion(this RestApiBaseController controller)
 {
     return(string.Format("{0}-v{1}", controller.GetClientPlatform(), controller.GetClientPlatformVersion(2)));
 }