public object Post(DataPackageAddItemsToDefaultRequestTep request) { //Get all requests from database var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/default/items POST")); DataPackage tmp = DataPackage.GetTemporaryForCurrentUser(context); foreach (WebDataPackageItem item in request) { RemoteResource tmp2 = new RemoteResource(context); tmp2 = item.ToEntity(context, tmp2); tmp.AddResourceItem(tmp2); } result = new WebDataPackageTep(tmp); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
public object Delete(DataPackageRemoveItemFromDefaultRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/default/item DELETE")); DataPackage def = DataPackage.GetTemporaryForCurrentUser(context); foreach (RemoteResource res in def.Resources) { var reqDPUri = new UriBuilder(HttpUtility.UrlDecode(request.Url)).Uri.AbsoluteUri; var localDPUri = new UriBuilder(HttpUtility.UrlDecode(res.Location)).Uri.AbsoluteUri; reqDPUri = reqDPUri.SetQueryParam("format", "atom"); localDPUri = localDPUri.SetQueryParam("format", "atom"); if (reqDPUri.Equals(localDPUri)) { res.Delete(); break; } } result = new WebDataPackageTep(def); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
public object Delete(DataPackageClearDefaultRequestTep request) { //Get all requests from database var context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/default/{{userId}} DELETE userId='{0}", request.userId)); User user = User.FromUsername(context, request.userId); DataPackage def = DataPackage.GetTemporaryForUser(context, user); foreach (RemoteResource res in def.Resources) { res.Delete(); } result = new WebDataPackageTep(def); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
public object Delete(DataPackageClearCurrentDefaultRequestTep request) { //Get all requests from database var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/default DELETE")); DataPackage def = DataPackage.GetTemporaryForCurrentUser(context); foreach (RemoteResource res in def.Resources) { res.Delete(); } result = new WebDataPackageTep(def); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/// <summary> /// Put the specified request. /// </summary> /// <param name="request">Request.</param> public object Put(DataPackageUpdateRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package PUT Id='{0}'", request.Id == 0 ? request.Identifier : request.Id.ToString())); DataPackage tmp; if (request.Id != 0) { tmp = DataPackage.FromId(context, request.Id); } else if (!string.IsNullOrEmpty(request.Identifier)) { tmp = DataPackage.FromIdentifier(context, request.Identifier); } else { throw new Exception("Undefined data package, set at least Id or Identifier"); } if (request.Access != null) { switch (request.Access) { case "public": tmp.GrantPermissionsToAll(); Activity activity = new Activity(context, tmp, EntityOperationType.Share); activity.Store(); break; case "private": tmp.RevokePermissionsFromAll(true, false); break; default: break; } } else { tmp = (DataPackage)request.ToEntity(context, tmp); tmp.Store(); } result = new WebDataPackageTep(tmp); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/// <summary> /// Post the specified request. /// </summary> /// <param name="request">Request.</param> public object Post(DataPackageCreateRequestTep request) { //Get all requests from database var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); var identifier = !string.IsNullOrEmpty(request.Identifier) ? TepUtility.ValidateIdentifier(request.Identifier) : TepUtility.ValidateIdentifier(request.Name); DataPackage tmp = new DataPackage(context); tmp = (DataPackage)request.ToEntity(context, tmp); if (request.Overwrite && tmp.OwnerId == context.UserId) { tmp = DataPackage.FromIdentifier(context, identifier); foreach (var res in tmp.Resources) { res.Delete(); } } else { tmp = (DataPackage)request.ToEntity(context, tmp); tmp.Identifier = identifier; try { tmp.Store(); } catch (DuplicateEntityIdentifierException e) { tmp = DataPackage.FromIdentifier(context, identifier); if (tmp.OwnerId == context.UserId) { throw new DuplicateNameException(e.Message); } else { throw e; } } } result = new WebDataPackageTep(tmp); context.LogInfo(this, string.Format("/data/package POST Id='{0}'", tmp.Id)); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/// <summary> /// Put the specified request. /// </summary> /// <param name="request">Request.</param> public object Put(DataPackageUpdateDefaultRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/default PUT")); DataPackage def = DataPackage.GetTemporaryForCurrentUser(context); //we want to do the copy of a datapackage into the default one if (def.Identifier != request.Identifier) { foreach (RemoteResource res in def.Resources) { res.Delete(); } def.LoadItems(); var tmp = DataPackage.FromIdentifier(context, request.Identifier); foreach (RemoteResource res in tmp.Resources) { RemoteResource tmpres = new RemoteResource(context); tmpres.Location = res.Location; def.AddResourceItem(tmpres); } ActivityTep activity = new ActivityTep(context, tmp, EntityOperationType.View); activity.SetParam("items", tmp.Resources.Count + ""); activity.Store(); } else { def = (DataPackage)request.ToEntity(context, def); } result = new WebDataPackageTep(def); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/// <summary> /// Put the specified request. /// </summary> /// <param name="request">Request.</param> public object Put(DataPackageExportRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/export PUT Id='{0}'", request.Id == 0 ? request.Identifier : request.Id.ToString())); DataPackage tmp; if (request.Id != 0) { tmp = DataPackage.FromId(context, request.Id); } else if (!string.IsNullOrEmpty(request.Identifier)) { tmp = DataPackage.FromIdentifier(context, request.Identifier); } else { throw new Exception("Undefined data package, set at least Id or Identifier"); } var serie = new Collection(context); serie.Identifier = tmp.Identifier; serie.Name = tmp.Name; var entityType = EntityType.GetEntityType(typeof(DataPackage)); var description = new UriBuilder(context.BaseUrl + "/" + entityType.Keyword + "/" + tmp.Identifier + "/description"); description.Query = "key=" + tmp.AccessKey; serie.CatalogueDescriptionUrl = description.Uri.AbsoluteUri; var user = UserTep.FromId(context, context.UserId); serie.Domain = user.Domain; serie.Store(); result = new WebDataPackageTep(tmp); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/// <summary> /// Get the specified request. /// </summary> /// <param name="request">Request.</param> public object Get(GetDataPackageTep request) { //Get all requests from database var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/{{Identifier}} GET Id='{0}", request.Identifier)); DataPackage tmp = DataPackage.FromIdentifier(context, request.Identifier); result = new WebDataPackageTep(tmp); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/// <summary> /// Delete the specified request. /// </summary> /// <param name="request">Request.</param> public object Delete(RemoveItemFromDataPackage request) { var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/{{DpId}}/item/{{Id}} POST DpId='{0}', Id='{1}'", request.DpId, request.Id)); RemoteResource tmp = RemoteResource.FromId(context, request.Id); tmp.Delete(); DataPackage dp = DataPackage.FromId(context, request.DpId); result = new WebDataPackageTep(dp); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
/// <summary> /// Post the specified request. /// </summary> /// <param name="request">Request.</param> public object Post(AddItemToDataPackage request) { //Get all requests from database var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/{{DpId}}/item POST DpId='{0}', Location='{1}'", request.DpId, request.Location)); DataPackage tmp = DataPackage.FromId(context, request.DpId); RemoteResource tmp2 = new RemoteResource(context); tmp2 = request.ToEntity(context, tmp2); tmp.AddResourceItem(tmp2); tmp.LoadItems(); result = new WebDataPackageTep(tmp); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }
public object Post(DataPackageSaveDefaultRequestTep request) { //Get all requests from database var context = TepWebContext.GetWebContext(PagePrivileges.UserView); WebDataPackageTep result; try{ context.Open(); context.LogInfo(this, string.Format("/data/package/default POST")); DataPackage def = DataPackage.GetTemporaryForCurrentUser(context); DataPackage tmp = new DataPackage(context); context.StartTransaction(); if (string.IsNullOrEmpty(request.Identifier) && string.IsNullOrEmpty(request.Name)) { throw new Exception("No identifier set"); } //var identifier = !string.IsNullOrEmpty(request.Identifier) ? TepUtility.ValidateIdentifier(request.Identifier) : TepUtility.ValidateIdentifier(request.Name); if (request.Overwrite && tmp.OwnerId == context.UserId) { tmp = DataPackage.FromNameAndOwner(context, request.Name, context.UserId); foreach (var res in tmp.Resources) { res.Delete(); } tmp.Items = new EntityList <RemoteResource>(context); } else { tmp = (DataPackage)request.ToEntity(context, tmp); //tmp.Identifier = identifier; try{ tmp.Store(); }catch (DuplicateEntityIdentifierException e) { //tmp = DataPackage.FromIdentifier(context, identifier); //if(tmp.OwnerId == context.UserId){ throw new DuplicateNameException(e.Message); //} else { // throw e; //} }catch (Exception e) { if (e.Message.StartsWith("Duplicate entry")) { throw new DuplicateNameException(e.Message); } throw e; } } foreach (RemoteResource res in def.Resources) { RemoteResource tmpres = new RemoteResource(context); tmpres.Location = res.Location; tmp.AddResourceItem(tmpres); } context.Commit(); result = new WebDataPackageTep(tmp); context.Close(); }catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(result); }