private WpsProcessOffering CreateProcess(bool proxy) { WpsProvider provider = CreateProvider("test-wps-" + proxy.ToString(), "test provider " + (proxy ? "p" : "np"), "http://dem.terradue.int:8080/wps/WebProcessingService", proxy); WpsProcessOffering process = CreateProcess(provider, "com.test.provider", "test provider " + (proxy ? "p" : "np"), true); return(process); }
/// <summary> /// Initializes a new instance of the <see cref="T:Terradue.Tep.WebServer.WebServiceTep"/> class. /// </summary> /// <param name="context">Context.</param> /// <param name="entity">Entity.</param> public WebServiceTep(IfyContext context, WpsProcessOffering entity) : base(entity) { this.IsPublic = entity.DoesGrantPermissionsToAll(); this.OwnerId = entity.UserId; this.Geometry = entity.Geometry; this.Commercial = entity.Commercial; }
/// <summary> /// Post the specified request. /// </summary> /// <returns>The post.</returns> /// <param name="request">Request.</param> public object Post(CommunityAddWpsServiceRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.UserView); try { context.Open(); context.AccessLevel = EntityAccessLevel.Privilege; context.LogInfo(this, string.Format("/community/{{Identifier}}/service/wps/{{WpsIdentifier}} POST Identifier='{0}' , WpsIdentifier='{1}'", request.Identifier, request.WpsIdentifier)); var domain = ThematicCommunity.FromIdentifier(context, request.Identifier); if (!domain.CanUserManageService(context.UserId)) { throw new UnauthorizedAccessException(CustomErrorMessages.ADMINISTRATOR_ONLY_ACTION); } var wps = WpsProcessOffering.FromIdentifier(context, request.WpsIdentifier); wps.AccessLevel = EntityAccessLevel.Privilege; wps.Domain = domain; wps.Store(); context.LogDebug(this, string.Format("Wps service added to Community {0}", domain.Identifier)); context.Close(); } catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(new WebResponseBool(true)); }
/// <summary> /// Tos the entity. /// </summary> /// <returns>The entity.</returns> /// <param name="context">Context.</param> public WpsProcessOffering ToEntity(IfyContext context, WpsProcessOffering input) { WpsProcessOffering entity = (Terradue.Portal.WpsProcessOffering)base.ToEntity(context, input); entity.RemoteIdentifier = this.RemoteIdentifier; return(entity); }
public void GetAtomItemWithoutProxy() { WpsProcessOffering process = CreateProcess(false); var entry = process.ToAtomItem(new NameValueCollection()); OwsContextAtomEntry result = new OwsContextAtomEntry(entry); Assert.That(result != null); }
/// <summary> /// Tos the entity. /// </summary> /// <returns>The entity.</returns> /// <param name="context">Context.</param> public new WpsProcessOffering ToEntity(IfyContext context, WpsProcessOffering input) { WpsProcessOffering entity = base.ToEntity(context, input); entity.Geometry = this.Geometry; entity.Commercial = this.Commercial; return(entity); }
public void SearchWpsServicesByQ() { var uid = Guid.NewGuid().ToString(); WpsProvider provider = CreateProvider(uid, "test provider", "http://gpod.eo.esa.int/wps?service=WPS&version=1.0.0&request=GetCapabilities", true); provider.UpdateProcessOfferings(true); EntityList <WpsProcessOffering> wpsProcessList = new EntityList <WpsProcessOffering>(context); wpsProcessList.Template.Provider = provider; wpsProcessList.Load(); var nbprocesses = wpsProcessList.Items.Count(); WpsProcessOffering service1 = wpsProcessList.Items.First(); service1.Identifier = "searchbyQidentifier"; service1.Name = "searchbyQname"; service1.Description = "searchbyQdescription"; service1.Store(); EntityList <WpsProcessOffering> services = new EntityList <WpsProcessOffering>(context); var parameters = new NameValueCollection(); parameters.Set("count", (nbprocesses + 1) + ""); IOpenSearchResultCollection osr = ose.Query(services, parameters); parameters.Set("q", "searchbyNoQidentifier"); osr = ose.Query(services, parameters); Assert.AreEqual(0, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("q", "searchbyQ"); osr = ose.Query(services, parameters); Assert.AreEqual(1, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("q", "searchbyQidentifier"); osr = ose.Query(services, parameters); Assert.AreEqual(1, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("q", "searchbyQname"); osr = ose.Query(services, parameters); Assert.AreEqual(1, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("q", "searchbyQdescription"); osr = ose.Query(services, parameters); Assert.AreEqual(1, osr.Items.Count()); provider.Delete(); }
private WpsProcessOffering CreateProcess(WpsProvider provider, string identifier, string name) { WpsProcessOffering process = new WpsProcessOffering(context); process.Name = name; process.Description = name; process.RemoteIdentifier = identifier; process.Identifier = Guid.NewGuid().ToString(); process.Url = provider.BaseUrl; process.Version = "1.0.0"; process.Provider = provider; return(process); }
/// <summary> /// Get Wps Processing Offering from DescribeProcess url /// </summary> /// <param name="describeProcessUrl"></param> /// <returns></returns> public static WpsProcessOffering GetProcessingFromDescribeProcessWps3(IfyContext context, string describeProcessUrl) { var wps3 = GetWps3ProcessingFromDescribeProcess(describeProcessUrl); WpsProcessOffering process = new WpsProcessOffering(context); process.Identifier = Guid.NewGuid().ToString(); process.RemoteIdentifier = wps3.Process.Id; process.Name = wps3.Process.Title; process.Description = wps3.Process.Abstract ?? wps3.Process.Title; process.Version = wps3.Process.Version; process.Url = describeProcessUrl; return(process); }
private WpsJob CreateWpsJob(string name, WpsProcessOffering wps, User owner) { WpsJob wpsjob = new WpsJob(context); wpsjob.Name = name; wpsjob.RemoteIdentifier = Guid.NewGuid().ToString(); wpsjob.Identifier = name; wpsjob.OwnerId = owner.Id; wpsjob.WpsId = wps.Provider.Identifier; wpsjob.ProcessId = wps.Identifier; wpsjob.CreatedTime = DateTime.UtcNow; wpsjob.DomainId = owner.DomainId; wpsjob.Parameters = new List <KeyValuePair <string, string> >(); wpsjob.StatusLocation = "http://dem.terradue.int:8080/wps/WebProcessingService"; return(wpsjob); }
public void GetProcessOfferingEntityList() { WpsProvider provider = CreateProvider("test-wps-1", "test provider 1", "http://dem.terradue.int:8080/wps/WebProcessingService", false); WpsProcessOffering process = CreateProcess(provider, "com.test.provider.1", "test provider 1", false); process.Store(); Assert.IsFalse(process.Available); WpsProvider provider2 = CreateProvider("test-wps-2", "test provider 2", "http://dem.terradue.int:8080/wps/WebProcessingService", false); WpsProcessOffering process2 = CreateProcess(provider2, "com.test.provider.2", "test provider 2", false); process2.Store(); Assert.IsFalse(process2.Available); EntityList <WpsProcessOffering> processes = provider.GetWpsProcessOfferings(false); Assert.That(processes.Count == 1); provider.Delete(); provider2.Delete(); }
public static WpsProcessOffering GetWpsProcessOfferingFromProcessDescriptionAtomFeed(IfyContext context, OwsContextAtomEntry entry) { var wpsOffering = entry.Offerings.FirstOrDefault(of => of.Code == "http://www.opengis.net/spec/owc/1.0/req/atom/wps"); if (wpsOffering == null) { return(null); } var wps = new WpsProcessOffering(context); wps.Identifier = Guid.NewGuid().ToString(); var identifiers = entry.ElementExtensions.ReadElementExtensions <string>("identifier", "http://purl.org/dc/elements/1.1/"); if (identifiers.Count > 0) { wps.RemoteIdentifier = identifiers[0]; } wps.Name = entry.Title != null ? entry.Title.Text : ""; wps.Description = entry.Summary != null ? entry.Summary.Text : ""; var appIconLink = entry.Links.FirstOrDefault(l => l.RelationshipType == "icon"); if (appIconLink != null) { wps.IconUrl = appIconLink.Uri.AbsoluteUri; } var operation = wpsOffering.Operations.FirstOrDefault(o => o.Code == "ProcessDescription"); var href = operation.Href; var dpUri = new Uri(href); var describeProcessUrl = dpUri.GetLeftPart(UriPartial.Path); wps.Url = describeProcessUrl; operation = wpsOffering.Operations.FirstOrDefault(o => o.Code == "ValidateProcess"); if (operation != null) { wps.ValidationUrl = operation.Href; } return(wps); }
public void SearchWpsServicesByTags() { WpsProvider provider = CreateProvider("test-wps-search-1", "test provider 1", "http://dem.terradue.int:8080/wps/WebProcessingService", false); WpsProcessOffering process = CreateProcess(provider, "com.test.provider.1", "test provider 1", true); process.AddTag("mytag"); process.AddTag("mytag1"); process.AddTag("mytag2"); process.Store(); EntityList <WpsProcessOffering> services = new EntityList <WpsProcessOffering>(context); var parameters = new NameValueCollection(); parameters.Set("tag", "mytag"); IOpenSearchResultCollection osr = ose.Query(services, parameters); Assert.AreEqual(1, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("tag", "tag"); osr = ose.Query(services, parameters); Assert.AreEqual(0, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("tag", "tag,mytag"); osr = ose.Query(services, parameters); Assert.AreEqual(0, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("tag", "mytag,mytag1"); osr = ose.Query(services, parameters); Assert.AreEqual(1, osr.Items.Count()); provider.Delete(); }
/// <summary> /// Gets the wps process offerings from URL. /// </summary> /// <returns>The wps process offerings from URL.</returns> /// <param name="baseurl">Baseurl.</param> /// <param name="updateProviderInfo">If set to <c>true</c> update provider info.</param> public new List <WpsProcessOffering> GetWpsProcessOfferingsFromRemote(bool updateProviderInfo = false, string username = null) { List <WpsProcessOffering> wpsProcessList = new List <WpsProcessOffering>(); if (!IsWPS3()) { return(base.GetWpsProcessOfferingsFromRemote(updateProviderInfo, username)); } else { List <Process> wps3List = new List <Process>(); HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(this.BaseUrl); webRequest.Method = "GET"; webRequest.Accept = "application/json"; using (var httpResponse = (HttpWebResponse)webRequest.GetResponse()) { using (var streamReader = new StreamReader(httpResponse.GetResponseStream())) { var result = streamReader.ReadToEnd(); wps3List = ServiceStack.Text.JsonSerializer.DeserializeFromString <List <Process> >(result); } } if (wps3List != null) { foreach (Process wps3 in wps3List) { WpsProcessOffering process = new WpsProcessOffering(context); process.Identifier = Guid.NewGuid().ToString(); process.RemoteIdentifier = wps3.Id; process.Name = wps3.Title; process.Description = wps3.Abstract ?? wps3.Title; process.Version = wps3.Version; process.Url = new Uri(this.BaseUrl + "/" + wps3.Id).AbsoluteUri; wpsProcessList.Add(process); } } } return(wpsProcessList); }
public void LoadWpsJobStatus() { WpsProvider provider = CreateProvider("planetek", "planetek", "http://urban-tep.planetek.it/wps/WebProcessingService", true); provider.Store(); WpsProcessOffering process = CreateProcess(provider, "it.planetek.wps.extension.Processor", "Title of the processor"); process.Store(); WpsJob job = new WpsJob(context); job.WpsId = process.Identifier; job.StatusLocation = "http://urban-tep.planetek.it/wps/RetrieveResultServlet?id=72ed982a-8522-4c02-bb71-77f4c22a7808"; var jobresponse = job.GetStatusLocationContent(); var execResponse = jobresponse as ExecuteResponse; job.UpdateStatusFromExecuteResponse(execResponse); //get job recast response execResponse = ProductionResultHelper.GetWpsjobRecastResponse(context, job, execResponse); Assert.True(true); }
/// <summary> /// Initializes a new instance of the <see cref="Terradue.WebService.Model.WebService"/> class. /// </summary> /// <param name="entity">Entity.</param> public WebWpsService(WpsProcessOffering entity) : base(entity) { this.RemoteIdentifier = entity.RemoteIdentifier; }
private void CreateWpsJobs() { WpsProcessOffering process = CreateProcess(false); var usr1 = User.FromUsername(context, "testusr1"); var usr2 = User.FromUsername(context, "testusr2"); var usr3 = User.FromUsername(context, "testusr3"); var usr4 = User.FromUsername(context, "testusr4"); var domain = Domain.FromIdentifier(context, "myDomainTest"); var domain2 = Domain.FromIdentifier(context, "otherDomainTest"); //Create one wpsjob public for usr1 --- all should see it WpsJob job = CreateWpsJob("public-job-usr1", process, usr1); job.Store(); job.GrantGlobalPermissions(); //Create one wpsjob with domain where usr1 is member job = CreateWpsJob("domain1-job-usr2", process, usr2); job.Domain = domain; job.Store(); //Create one wpsjob with domain where usr1 is not member job = CreateWpsJob("domain2-job-usr3", process, usr3); job.Domain = domain2; job.Store(); //Create one wpsjob public for usr2 --- all should see it job = CreateWpsJob("public-job-usr2", process, usr2); job.Store(); job.GrantGlobalPermissions(); //Create one wpsjob restricted for usr1 job = CreateWpsJob("restricted-job-usr1-2", process, usr1); job.Store(); job.GrantPermissionsToUsers(new int[] { usr2.Id }); //Create one wpsjob restricted for usr2 job = CreateWpsJob("restricted-job-usr2-1", process, usr2); job.Store(); job.GrantPermissionsToUsers(new int[] { usr1.Id }); //Create one wpsjob restricted for usr2 job = CreateWpsJob("restricted-job-usr2-3", process, usr2); job.Store(); job.GrantPermissionsToUsers(new int[] { usr3.Id }); //Create one wpsjob private for usr1 job = CreateWpsJob("private-job-usr1", process, usr1); job.Store(); //Create one wpsjob private for usr2 job = CreateWpsJob("private-job-usr2", process, usr2); job.Store(); //Create one wpsjob private for usr3 job = CreateWpsJob("private-job-usr3", process, usr3); job.Store(); //Create one wpsjob private for usr4 job = CreateWpsJob("private-job-usr4", process, usr4); job.Store(); }
/// <summary> /// Get list of Processing Services from Atom Feed /// Each Item of the feed contains a Describe Process url /// </summary> /// <param name="context"></param> /// <param name="feed"></param> /// <param name="createProviderIfNotFound"></param> /// <returns></returns> public static List <WpsProcessOffering> GetRemoteWpsProcessingOfferingsFromUrl(IfyContext context, string url, bool createProviderIfNotFound) { var remoteProcesses = new List <WpsProcessOffering>(); var items = GetRemoteWpsServiceEntriesFromUrl(context, url); foreach (OwsContextAtomEntry item in items) { var wps = GetWpsProcessOfferingFromProcessDescriptionAtomFeed(context, item); if (wps == null) { continue; } var describeProcessUrl = wps.Url; var providerBaseUrl = describeProcessUrl.Substring(0, describeProcessUrl.LastIndexOf("/")); var processIdentifier = describeProcessUrl.Substring(describeProcessUrl.LastIndexOf("/") + 1); WpsProvider wpsprovider = null; try { wpsprovider = WpsProvider.FromBaseUrl(context, providerBaseUrl); } catch (System.Exception) { if (createProviderIfNotFound) { var urip = new Uri(providerBaseUrl); wpsprovider = new WpsProvider(context); wpsprovider.Identifier = urip.AbsolutePath.Contains("/wps3/processes") ? urip.Host + urip.AbsolutePath.Substring(0, urip.AbsolutePath.IndexOf("/wps3/processes")).Replace("/", ".") : Guid.NewGuid().ToString(); wpsprovider.Name = urip.AbsolutePath.Contains("/wps3/processes") ? urip.Host + urip.AbsolutePath.Substring(0, urip.AbsolutePath.IndexOf("/wps3/processes")).Replace("/", ".") : urip.Host + urip.AbsolutePath.Replace("/", "."); wpsprovider.BaseUrl = providerBaseUrl; wpsprovider.StageResults = true; wpsprovider.Proxy = true; wpsprovider.Store(); wpsprovider.GrantPermissionsToAll(); } } if (wpsprovider != null) { wps.Provider = wpsprovider; } //case WPS 3.0 if (IsWPS3(describeProcessUrl)) { try { WpsProcessOffering process = GetProcessingFromDescribeProcessWps3(context, describeProcessUrl); wps.RemoteIdentifier = process.RemoteIdentifier; if (string.IsNullOrEmpty(wps.Name)) { wps.Name = process.Name; } if (string.IsNullOrEmpty(wps.Description)) { wps.Description = process.Description; } if (string.IsNullOrEmpty(wps.Version)) { wps.Version = process.Version; } }catch (System.Exception e) { context.LogError(context, "Error with url '" + describeProcessUrl + "' : " + e.Message); wps = null; } } if (wps == null) { continue; } remoteProcesses.Add(wps); } return(remoteProcesses); }
public void SearchWpsServicesByAvailability() { var uid = Guid.NewGuid().ToString(); WpsProvider provider = CreateProvider(uid, "test provider", "http://gpod.eo.esa.int/wps?service=WPS&version=1.0.0&request=GetCapabilities", false); provider.UpdateProcessOfferings(); EntityList <WpsProcessOffering> wpsProcessList = new EntityList <WpsProcessOffering>(context); wpsProcessList.Template.Provider = provider; wpsProcessList.Load(); var nbprocesses = wpsProcessList.Items.Count(); EntityList <WpsProcessOffering> services = new EntityList <WpsProcessOffering>(context); var parameters = new NameValueCollection(); parameters.Set("count", (nbprocesses + 1) + ""); IOpenSearchResultCollection osr = ose.Query(services, parameters); Assert.AreEqual(nbprocesses, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("available", "all"); osr = ose.Query(services, parameters); Assert.AreEqual(nbprocesses, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("available", "false"); osr = ose.Query(services, parameters); Assert.AreEqual(nbprocesses, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("available", "true"); osr = ose.Query(services, parameters); Assert.AreEqual(0, osr.Items.Count()); WpsProcessOffering service1 = wpsProcessList.Items.First(); service1.Available = true; service1.Store(); services = new EntityList <WpsProcessOffering>(context); parameters.Set("available", "all"); osr = ose.Query(services, parameters); Assert.AreEqual(nbprocesses, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("available", "false"); osr = ose.Query(services, parameters); Assert.AreEqual(nbprocesses - 1, osr.Items.Count()); services = new EntityList <WpsProcessOffering>(context); parameters.Set("available", "true"); osr = ose.Query(services, parameters); Assert.AreEqual(1, osr.Items.Count()); provider.Delete(); }
public object Put(BulkSwitchServiceRequestTep request) { var context = TepWebContext.GetWebContext(PagePrivileges.AdminOnly); try { context.Open(); context.LogInfo(this, string.Format("/service/wps/bulk/replace PUT identifiers='{0}' newIdentifier='{1}'", string.Join(",", request.Identifiers), request.Service != null ? request.Service.Identifier : null)); if (request.Identifiers == null || request.Identifiers.Count == 0) { return(new HttpResult("No services specified", HttpStatusCode.BadRequest)); } if (request.Service == null) { return(new HttpResult("No service specified", HttpStatusCode.BadRequest)); } foreach (var identifier in request.Identifiers) { try { WpsProcessOfferingTep wpsOld = WpsProcessOfferingTep.FromIdentifier(context, identifier); WpsProcessOffering wpsNew = (WpsProcessOffering)request.Service.ToEntity(context, new WpsProcessOffering(context)); wpsNew.Identifier = Guid.NewGuid().ToString(); if (!string.IsNullOrEmpty(request.WpsIdentifier)) { var provider = (WpsProvider)ComputingResource.FromIdentifier(context, request.WpsIdentifier); wpsNew.Provider = provider; } else { wpsNew.Provider = wpsOld.Provider; } wpsNew.DomainId = wpsOld.DomainId; wpsNew.Tags = wpsOld.Tags; wpsNew.IconUrl = wpsOld.IconUrl; wpsNew.Available = true; wpsNew.Commercial = wpsOld.Commercial; wpsNew.Geometry = wpsOld.Geometry; wpsNew.ValidationUrl = wpsOld.ValidationUrl; wpsNew.TermsConditionsUrl = wpsOld.TermsConditionsUrl; wpsNew.TermsConditionsText = wpsOld.TermsConditionsText; wpsNew.Store(); if (request.DeleteOld) { wpsOld.Delete(); } else { wpsOld.Available = false; wpsOld.Store(); } } catch (Exception e) { context.LogError(this, "Error while loading service " + identifier, e); } } context.Close(); } catch (Exception e) { context.LogError(this, e.Message, e); context.Close(); throw e; } return(new HttpResult("", HttpStatusCode.OK)); }