Exemplo n.º 1
0
        public Collection <ScopeProject> GetScopes()
        {
            Collection <ScopeProject> scopes = new Collection <ScopeProject>();
            string         relativeUri       = "/scopes";
            WebCredentials cred = new WebCredentials();

            try
            {
                WebHttpClient webHttpClient = new WebHttpClient(adapterServiceUri, cred.GetNetworkCredential(), _proxyCredentials.GetWebProxy());
                scopes = webHttpClient.Get <Collection <ScopeProject> >(relativeUri, true);
            }
            catch (Exception ex)
            { }
            return(scopes);
        }
Exemplo n.º 2
0
 public static string Update(string baseUri, string sparql, WebCredentials targetCredentials, WebProxyCredentials proxyCredentials)
 {
     try
     {
         string        message     = String.Empty;
         string        relativeUri = "?update=" + HttpUtility.UrlEncode(sparql);
         WebHttpClient webClient   = new WebHttpClient(baseUri, targetCredentials.GetNetworkCredential(), proxyCredentials.GetWebProxy());
         message = webClient.GetMessage(relativeUri);
         return(message);
     }
     catch (Exception exception)
     {
         _logger.Error("Error in Update: " + exception);
         throw exception;
     }
 }
Exemplo n.º 3
0
        public static void PostQueryAsMultipartMessage(string baseUri, string sparql, WebCredentials targetCredentials, WebProxyCredentials proxyCredentials)
        {
            try
            {
                string           result         = string.Empty;
                MultiPartMessage requestMessage = new MultiPartMessage
                {
                    name    = "update",
                    type    = MultipartMessageType.FormData,
                    message = sparql,
                };

                List <MultiPartMessage> requestMessages = new List <MultiPartMessage>
                {
                    requestMessage
                };

                WebHttpClient webClient = new WebHttpClient(baseUri, targetCredentials.GetNetworkCredential(), proxyCredentials.GetWebProxy());

                string response = String.Empty;
                webClient.PostMultipartMessage("", requestMessages, ref response);
            }
            catch (Exception exception)
            {
                _logger.Error("Error in PostQueryAsMultipartMessage: " + exception);
                throw exception;
            }
        }
Exemplo n.º 4
0
        public static SPARQLResults Query(string baseUri, string sparql, WebCredentials targetCredentials, WebProxyCredentials proxyCredentials)
        {
            try
            {
                SPARQLResults sparqlResults = null;

                string relativeUri = "?query=" + HttpUtility.UrlEncode(sparql);

                WebHttpClient webClient = new WebHttpClient(baseUri, targetCredentials.GetNetworkCredential(), proxyCredentials.GetWebProxy());
                sparqlResults = webClient.Get <SPARQLResults>(relativeUri, false);

                return(sparqlResults);
            }
            catch (Exception exception)
            {
                _logger.Error("Error in Query: " + exception);
                throw exception;
            }
        }
Exemplo n.º 5
0
        public Response Pull(string scope, string app, string graph, Request request)
        {
            Response response = new Response();

            response.Level = StatusLevel.Success;

            Status status = new Status();

            status.Messages = new Messages();

            try
            {
                status.Identifier = String.Format("{0}.{1}", scope, app);

                InitializeScope(scope, app);

                if (_settings["ReadOnlyDataLayer"] != null && _settings["ReadOnlyDataLayer"].ToString().ToLower() == "true")
                {
                    string message = "Can not perform post on read-only data layer of [" + scope + "." + app + "].";
                    _logger.Error(message);

                    status.Level = StatusLevel.Error;
                    status.Messages.Add(message);
                }
                else
                {
                    InitializeDataLayer();

                    DateTime startTime = DateTime.Now;

                    #region move this portion to dotNetRdfEngine?
                    if (!request.ContainsKey("targetEndpointUri"))
                    {
                        throw new Exception("Target Endpoint Uri is required");
                    }

                    string targetEndpointUri = request["targetEndpointUri"];

                    if (!request.ContainsKey("targetGraphBaseUri"))
                    {
                        throw new Exception("Target graph uri is required");
                    }

                    string targetGraphBaseUri = request["targetGraphBaseUri"];
                    _settings["TargetGraphBaseUri"] = targetGraphBaseUri;

                    if (targetGraphBaseUri.ToLower() == "[default graph]")
                    {
                        targetGraphBaseUri = String.Empty;
                    }

                    SparqlRemoteEndpoint endpoint = new SparqlRemoteEndpoint(new Uri(targetEndpointUri), targetGraphBaseUri);

                    if (request.ContainsKey("targetCredentials"))
                    {
                        string         targetCredentialsXML = request["targetCredentials"];
                        WebCredentials targetCredentials    = Utility.Deserialize <WebCredentials>(targetCredentialsXML, true);

                        if (targetCredentials.isEncrypted)
                        {
                            targetCredentials.Decrypt();
                        }

                        endpoint.SetCredentials(targetCredentials.GetNetworkCredential().UserName, targetCredentials.GetNetworkCredential().Password, targetCredentials.GetNetworkCredential().Domain);
                    }

                    string proxyHost       = _settings["ProxyHost"];
                    string proxyPort       = _settings["ProxyPort"];
                    string proxyCredsToken = _settings["ProxyCredentialToken"];

                    if (!String.IsNullOrEmpty(proxyHost) && !String.IsNullOrEmpty(proxyPort) && !String.IsNullOrEmpty(proxyCredsToken))
                    {
                        WebProxyCredentials proxyCreds = _settings.GetWebProxyCredentials();
                        endpoint.Proxy            = proxyCreds.GetWebProxy() as WebProxy;
                        endpoint.ProxyCredentials = proxyCreds.GetNetworkCredential();
                    }

                    VDS.RDF.IGraph resultGraph = endpoint.QueryWithResultGraph("CONSTRUCT {?s ?p ?o} WHERE {?s ?p ?o}");
                    #endregion

                    if (resultGraph != null && resultGraph.Triples.Count > 0)
                    {
                        // call RdfProjectionEngine to fill data objects from a given graph
                        _projectionEngine = _kernel.Get <IProjectionLayer>("rdf");

                        System.Text.StringBuilder sb           = new System.Text.StringBuilder();
                        TextWriter textWriter                  = new StringWriter(sb);
                        VDS.RDF.Writing.RdfXmlWriter rdfWriter = new VDS.RDF.Writing.RdfXmlWriter();
                        rdfWriter.Save(resultGraph, textWriter);
                        XDocument xDocument = XDocument.Parse(sb.ToString());

                        if (xDocument != null && xDocument.Root != null)
                        {
                            _logger.Debug(xDocument.Root.ToString());
                            _dataObjects = _projectionEngine.ToDataObjects(graph, ref xDocument);

                            if (_dataObjects != null && _dataObjects.Count > 0)
                            {
                                status.Messages.Add("Query target endpoint completed successfully.");
                                status.Messages.Add(String.Format("Number of data objects created [{0}].", _dataObjects.Count));

                                // post data objects to data layer
                                response.Append(_dataLayer.Post(_dataObjects));

                                DateTime endTime  = DateTime.Now;
                                TimeSpan duration = endTime.Subtract(startTime);

                                status.Messages.Add(String.Format("Execution time [{0}:{1}.{2}] minutes.",
                                                                  duration.Minutes, duration.Seconds, duration.Milliseconds));
                            }
                            else
                            {
                                status.Messages.Add(string.Format("No data objects being created."));
                            }
                        }
                        else
                        {
                            throw new Exception("Facade document is empty.");
                        }
                    }
                    else
                    {
                        throw new Exception("Facade graph is empty.");
                    }
                }
            }
            catch (Exception ex)
            {
                _logger.Error("Error in Pull(): ", ex);

                status.Level = StatusLevel.Error;
                status.Messages.Add(string.Format("Error pulling graph: {0}", ex));
            }

            response.Append(status);
            return(response);
        }