Esempio n. 1
0
        private static void Get(UserSecurityContext user, HttpContext context, CancellationToken cancel)
        {
            try
            {
                SiteAliasProviderBase provider = SiteManager.Instance.GetSiteAliasProvider(user);
                if (provider != null)
                {
                    IEnumerable <SiteAlias> aliases = provider.Get();
                    JArray jaliases = Jsonifier.ToJson(aliases);
                    if (jaliases != null)
                    {
                        RestUtils.Push(context.Response, JsonOpStatus.Ok, jaliases.ToString());
                    }
                    else
                    {
                        RestUtils.Push(context.Response, JsonOpStatus.Ok, "[]");
                    }
                    return;
                }

                RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
            }
            catch
            {
                RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
            }
        }
Esempio n. 2
0
        private static void GetBySiteAndName(CompoundIdentity site_id, string name, UserSecurityContext user, HttpContext context, CancellationToken cancel)
        {
            try
            {
                SiteAliasProviderBase provider = SiteManager.Instance.GetSiteAliasProvider(user);
                Site site = SiteManager.Instance.GetSiteProvider(user).Get(site_id);
                if (site != null && provider != null)
                {
                    IEnumerable <SiteAlias> aliases = provider.Get(site, name);
                    JArray jaliases = Jsonifier.ToJson(aliases);
                    if (jaliases != null)
                    {
                        RestUtils.Push(context.Response, JsonOpStatus.Ok, jaliases.ToString());
                    }
                    else
                    {
                        RestUtils.Push(context.Response, JsonOpStatus.Ok, "[]");
                    }
                    return;
                }

                RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
            }
            catch
            {
                RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
            }
        }
Esempio n. 3
0
        static void CreateSites(UserSecurityContext context, CompoundIdentity oid)
        {
            SiteProviderBase            prov    = SiteManager.Instance.GetSiteProvider(context);
            SiteAliasSchemeProviderBase schProv = SiteManager.Instance.GetSiteAliasSchemeProvider(context);
            SiteAliasProviderBase       alProv  = SiteManager.Instance.GetSiteAliasProvider(context);
            string          orgName;
            Site            org;
            SiteAliasScheme scheme1;
            SiteAliasScheme scheme2;

            scheme1 = MakeOrg(schProv, "PNNL Aliases scheme 1", oid);
            if (scheme1 == null)
            {
                Console.WriteLine("Failed to make/get scheme 1");
                return;
            }
            scheme2 = MakeOrg(schProv, "PNNL Aliases scheme 2", oid);
            if (scheme2 == null)
            {
                Console.WriteLine("Failed to make/get scheme 2");
                return;
            }

            orgName = "My site 1";
            org     = MakeOrg(prov, orgName, oid);
            if (org != null)
            {
                MakeOrg(alProv, scheme1, org, "My site 1 alias on scheme 1");
                MakeOrg(alProv, scheme2, org, "My site 1 alias on scheme 2");
            }

            orgName = "My site 2";
            org     = MakeOrg(prov, orgName, oid);
            if (org != null)
            {
                MakeOrg(alProv, scheme1, org, "My site 2 alias 1 on scheme 1");
                MakeOrg(alProv, scheme1, org, "My site 2 alias 2 on scheme 1");
                MakeOrg(alProv, scheme1, org, "My site 2 alias 3 on scheme 1");
                MakeOrg(alProv, scheme2, org, "My site 2 alias 1 on scheme 2");
                MakeOrg(alProv, scheme2, org, "My site 2 alias 2 on scheme 2");
                MakeOrg(alProv, scheme2, org, "My site 2 alias 3 on scheme 2");
            }

            orgName = "My site 3";
            org     = MakeOrg(prov, orgName, oid);
            if (org != null)
            {
                MakeOrg(alProv, scheme1, org, "My site 3 alias 1 on scheme 1");
                MakeOrg(alProv, scheme1, org, "My site 3 alias 2 on scheme 1");
                MakeOrg(alProv, scheme1, org, "My site 3 alias 3 on scheme 1");
                MakeOrg(alProv, scheme2, org, "My site 3 alias 1 on scheme 2");
                MakeOrg(alProv, scheme2, org, "My site 3 alias 2 on scheme 2");
                MakeOrg(alProv, scheme2, org, "My site 3 alias 3 on scheme 2");
            }

            orgName = "My site 4";
            org     = MakeOrg(prov, orgName, oid);
            if (org != null)
            {
                MakeOrg(alProv, scheme1, org, "My site 4 alias on scheme 1");
                MakeOrg(alProv, scheme2, org, "My site 4 alias on scheme 2");
            }
        }
Esempio n. 4
0
        public static void Handle(UserSecurityContext user, string method, HttpContext context, CancellationToken cancel)
        {
            if (context.Request.Method == "POST")
            {
                if (method.Equals("all", StringComparison.OrdinalIgnoreCase))
                {
                    Get(user, context, cancel);
                    return;
                }
                else if (method.Equals("find", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        JToken token = JsonUtils.GetDataPayload(context.Request);
                        if (token != null)
                        {
                            if (token["id"] != null && token["schemeid"] != null)
                            {
                                GetBySiteAndScheme(JsonUtils.ToId(token["id"]), JsonUtils.ToId(token["schemeid"]), user, context, cancel);
                                return;
                            }
                            else if (token["id"] != null && token["name"] != null)
                            {
                                GetBySiteAndName(JsonUtils.ToId(token["id"]), token["name"].ToString(), user, context, cancel);
                                return;
                            }
                            else if (token["schemeid"] != null && token["name"] != null)
                            {
                                GetBySchemeAndName(JsonUtils.ToId(token["schemeid"]), token["name"].ToString(), user, context, cancel);
                                return;
                            }
                            else if (token["schemeid"] != null)
                            {
                                GetByScheme(JsonUtils.ToId(token["schemeid"]), user, context, cancel);
                                return;
                            }
                            else if (token["id"] != null)
                            {
                                GetBySite(JsonUtils.ToId(token["id"]), user, context, cancel);
                                return;
                            }
                            else if (token["name"] != null)
                            {
                                GetByName(token["name"].ToString(), user, context, cancel);
                                return;
                            }
                        }

                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                        return;
                    }
                }
                else if (method.Equals("create", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        //token and providers
                        JToken token = JsonUtils.GetDataPayload(context.Request);
                        SiteAliasProviderBase       alias_provider  = SiteManager.Instance.GetSiteAliasProvider(user);
                        SiteProviderBase            site_provider   = SiteManager.Instance.GetSiteProvider(user);
                        SiteAliasSchemeProviderBase scheme_provider = SiteManager.Instance.GetSiteAliasSchemeProvider(user);
                        if (alias_provider != null && scheme_provider != null && site_provider != null && token != null)
                        {
                            //required
                            string          name   = token["name"].ToString();
                            SiteAliasScheme scheme = scheme_provider.Get(JsonUtils.ToId(token["schemeid"]));
                            Site            site   = site_provider.Get(JsonUtils.ToId(token["id"]));
                            if (site != null && scheme != null && !string.IsNullOrEmpty(name))
                            {
                                //create object
                                SiteAlias alias = alias_provider.Create(scheme, site, name);
                                if (alias != null)
                                {
                                    JObject jalias = Jsonifier.ToJson(alias);
                                    if (jalias != null)
                                    {
                                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok, jalias.ToString()));
                                    }
                                    else
                                    {
                                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                                    }
                                    return;
                                }
                            }
                        }

                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                        return;
                    }
                }
                else if (method.Equals("update", StringComparison.OrdinalIgnoreCase))
                {
                    try
                    {
                        //token and providers
                        JToken token = JsonUtils.GetDataPayload(context.Request);
                        SiteAliasProviderBase       alias_provider  = SiteManager.Instance.GetSiteAliasProvider(user);
                        SiteProviderBase            site_provider   = SiteManager.Instance.GetSiteProvider(user);
                        SiteAliasSchemeProviderBase scheme_provider = SiteManager.Instance.GetSiteAliasSchemeProvider(user);
                        if (alias_provider != null && scheme_provider != null && site_provider != null && token != null)
                        {
                            //required fields
                            CompoundIdentity site_id   = JsonUtils.ToId(token["id"]);
                            Site             site      = site_provider.Get(site_id);
                            CompoundIdentity scheme_id = JsonUtils.ToId(token["schemeid"]);
                            SiteAliasScheme  scheme    = scheme_provider.Get(scheme_id);
                            string           old_name  = token["name"].ToString();
                            string           new_name  = token["newname"].ToString();
                            if (site != null && scheme == null && !string.IsNullOrEmpty(old_name) && !string.IsNullOrEmpty(new_name))
                            {
                                //retrieve by site, scheme
                                IEnumerable <SiteAlias> aliases = alias_provider.Get(site_id, scheme);
                                if (aliases == null)
                                {
                                    //match alias by name (an org could have multiple aliases in the same scheme, but they must be unique)
                                    SiteAlias alias = null;
                                    foreach (SiteAlias a in aliases)
                                    {
                                        if (a.Name == old_name)
                                        {
                                            alias = a;
                                        }
                                    }
                                    alias.Name = new_name;
                                    bool result = alias_provider.Update(alias);
                                    if (result == true)
                                    {
                                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok));
                                        return;
                                    }
                                }
                            }
                        }

                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                        return;
                    }
                }
                else if (method.Equals("delete", StringComparison.OrdinalIgnoreCase))
                {
                    CompoundIdentity scheme_id = null;
                    CompoundIdentity site_id   = null;
                    SiteAliasScheme  scheme    = null;
                    Site             site      = null;
                    string           name      = null;

                    try
                    {
                        //token and providers
                        JToken token = JsonUtils.GetDataPayload(context.Request);
                        SiteAliasProviderBase       alias_provider  = SiteManager.Instance.GetSiteAliasProvider(user);
                        SiteProviderBase            site_provider   = SiteManager.Instance.GetSiteProvider(user);
                        SiteAliasSchemeProviderBase scheme_provider = SiteManager.Instance.GetSiteAliasSchemeProvider(user);
                        if (alias_provider != null && scheme_provider != null && site_provider != null && token != null)
                        {
                            //If a token is provided, it cannot be null
                            //Checking values against intent avoids firing a degenerate delete override

                            //schemeid
                            if (token.SelectToken("schemeid") != null)
                            {
                                if (token["schemeid"] == null)
                                {
                                    RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                                    return;
                                }
                                else
                                {
                                    scheme_id = JsonUtils.ToId(token["schemeid"]);
                                    scheme    = scheme_provider.Get(scheme_id);
                                }
                            }

                            //id
                            if (token.SelectToken("id") != null)
                            {
                                if (token["id"] == null)
                                {
                                    RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                                    return;
                                }
                                else
                                {
                                    site_id = JsonUtils.ToId(token["id"]);
                                    site    = site_provider.Get(site_id);
                                }
                            }

                            //name
                            if (token.SelectToken("name") != null)
                            {
                                if (token["name"] == null)
                                {
                                    RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                                    return;
                                }
                                else
                                {
                                    name = token["name"].ToString();
                                }
                            }

                            //determine override
                            bool result = false;
                            if (scheme != null && site != null && name != null)    //delete specific alias
                            {
                                //don't have a provider method that returns specific alias, so get by site, scheme and match alias by name (most of the time a single alias will be returned)
                                IEnumerable <SiteAlias> aliases = alias_provider.Get(site_id, scheme);
                                if (aliases != null)
                                {
                                    foreach (SiteAlias alias in aliases)
                                    {
                                        if (alias.Name == name)
                                        {
                                            result = alias_provider.Delete(alias);
                                            break;                                          //aliases should be unique for a given site in a given scheme
                                        }
                                    }
                                }
                            }
                            else if (scheme != null && site_id != null)
                            {
                                result = alias_provider.Delete(site_id, scheme);       //delete * for given site in a given scheme (could be multiple)
                            }
                            else if (scheme != null)
                            {
                                result = alias_provider.Delete(scheme);                //delete * for a given scheme (across orgs)
                            }
                            else if (site_id != null)
                            {
                                result = alias_provider.Delete(site_id);               //delete * for a given org (across schemes)
                            }
                            if (result == true)
                            {
                                RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Ok));
                                return;
                            }
                        }

                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                    }
                    catch
                    {
                        RestUtils.Push(context.Response, RestUtils.JsonOpStatus(JsonOpStatus.Failed));
                        return;
                    }
                }
            }
            context.Response.StatusCode = HttpStatusCodes.Status400BadRequest;
        }