/// <summary> /// Output compact (id's only for reference data) POI list /// </summary> /// <param name="context"></param> /// <param name="filter"></param> private void OutputCompactPOIList(HttpContext context, APIRequestSettings filter) { //get list of charge points as compact POISearchResult List for output: List <OCM.API.Common.Model.ChargePoint> dataList = new POIManager().GetChargePoints(filter); int numResults = dataList.Count; List <POISearchResult> poiList = new List <POISearchResult>(); foreach (var c in dataList) { var poi = new POISearchResult { ID = c.ID, Title = c.AddressInfo.Title, Address = c.AddressInfo.AddressLine1, Distance = c.AddressInfo.Distance, Latitude = (double)c.AddressInfo.Latitude, Longitude = (double)c.AddressInfo.Longitude, Postcode = c.AddressInfo.Postcode, UsageTypeID = c.UsageType != null ? c.UsageType.ID : 0, StatusTypeID = c.StatusType != null ? c.StatusType.ID : 0 }; poiList.Add(poi); } var o = new JSONOutputProvider(); string description = "Compact POI List: id=ID, t= Title, u= UsageTypeID, s= StatusTypeID, a=Address, p=Postcode, lt=Latitude, lg=Longitude, d= Distance"; o.PerformSerialisationV2(context.Response.OutputStream, new { status = "OK", description = description, count = poiList.Count, results = poiList }, filter.Callback); }
public void ProcessRequest(HttpContext context) { OutputProviders.ImageOutputProvider outputProvider = new OutputProviders.ImageOutputProvider(); APIRequestSettings settings = new APIRequestSettings(); List <OCM.API.Common.Model.ChargePoint> dataList = new List <Common.Model.ChargePoint>(); context.Response.ContentType = outputProvider.ContentType; outputProvider.GetOutput(context.Response.OutputStream, dataList, settings); }
public static List <OCM.API.Common.Model.ChargePoint> GetPOIList(APIRequestSettings filter) { try { return(new CacheProviderMongoDB().GetPOIList(filter)); } catch (Exception) { return(null); } }
public void ProcessRequest(HttpContext context) { if (dataSummaryManager == null) { dataSummaryManager = new DataSummaryManager(); } APIRequestSettings filterSettings = new APIRequestSettings(); filterSettings.ParseParameters(filterSettings, context); string action = "totals_per_country"; if (!String.IsNullOrEmpty(context.Request["action"])) { action = context.Request["action"].ToString(); } if (action == "totals_per_country") { context.Response.ContentType = "application/javascript"; context.Response.Write(dataSummaryManager.GetTotalsPerCountrySummary(true, "ocm_getdatasummary", filterSettings)); context.Response.Flush(); } if (action == "full_summary") { // Output JSON summary of: // - Current totals per country // - Total added (per country? based on date range, location/distance filter?) // - Total modified // - User Comments Count // - per month values, current month first? default last 12 months } if (action == "activity_summary") { // Based on date range, location and distance: // - list of recent comments, checkins, id & title etc of items added & modified var o = new JSONOutputProvider(); context.Response.ContentType = o.ContentType; var summary = dataSummaryManager.GetActivitySummary(filterSettings); o.PerformSerialisationV2(context.Response.OutputStream, summary, filterSettings.Callback); context.Response.Flush(); } }
public POIRecentActivity GetActivitySummary(APIRequestSettings filterSettings) { //default to last month DateTime dateFrom = DateTime.UtcNow.AddMonths(-1); if (filterSettings != null) { if (filterSettings.ChangesFromDate != null) { dateFrom = filterSettings.ChangesFromDate.Value; } else { filterSettings.ChangesFromDate = dateFrom; } } //populate recently added comments var recentComments = from c in DataModel.UserComments where c.DateCreated >= dateFrom select c; var summary = new POIRecentActivity(); summary.RecentComments = new List <UserComment>(); foreach (var c in recentComments.OrderByDescending(c => c.DateCreated).Take(10).ToList()) { summary.RecentComments.Add(Model.Extensions.UserComment.FromDataModel(c, true)); } //populate recently modified charge points TODO: differentiate between updated since and created since? var poiManager = new POIManager(); var allRecentPOIChanges = poiManager.GetChargePoints(filterSettings); summary.POIRecentlyAdded = allRecentPOIChanges.Where(p => p.DateCreated >= dateFrom).OrderByDescending(p => p.DateCreated).Take(10).ToList(); summary.POIRecentlyUpdated = allRecentPOIChanges.Where(p => p.DateLastStatusUpdate >= dateFrom && p.DateCreated != p.DateLastStatusUpdate).OrderByDescending(p => p.DateLastStatusUpdate).Take(10).ToList(); var recentMedia = DataModel.MediaItems.Where(m => m.DateCreated > dateFrom && m.IsEnabled == true).OrderByDescending(m => m.DateCreated).Take(10).ToList(); summary.RecentMedia = new List <MediaItem>(); foreach (var mediaItem in recentMedia.OrderByDescending(m => m.DateCreated)) { summary.RecentMedia.Add(Model.Extensions.MediaItem.FromDataModel(mediaItem)); } return(summary); }
private void OutputGeocodingResult(IOutputProvider outputProvider, HttpContext context, APIRequestSettings filter) { GeocodingResult result = null; //get or get and cache result if (HttpContext.Current.Cache["Geocoding_" + filter.HashKey] != null && filter.EnableCaching) { result = (GeocodingResult)HttpContext.Current.Cache["Geocoding_" + filter.HashKey]; } else { var geocoder = new GeocodingHelper(); geocoder.IncludeExtendedData = true; result = geocoder.GeolocateAddressInfo_OSM(filter.Address); HttpContext.Current.Cache.Add("Geocoding_" + filter.HashKey, result, null, Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0), CacheItemPriority.Normal, null); } //send API response if (filter.IsEnvelopedResponse) { var responseEnvelope = new APIResponseEnvelope(); responseEnvelope.Data = result; outputProvider.GetOutput(context.Response.OutputStream, responseEnvelope, filter); } else { outputProvider.GetOutput(context.Response.OutputStream, result, filter); } }
/// <summary> /// Output Core Reference Data (lookup lists, default objects) /// </summary> /// <param name="outputProvider"></param> /// <param name="context"></param> /// <param name="filter"></param> private void OutputCoreReferenceData(IOutputProvider outputProvider, HttpContext context, APIRequestSettings filter) { //get core reference data var refDataManager = new ReferenceDataManager(); CoreReferenceData data = null; //cache result if (HttpContext.Current.Cache["CoreRefData"] != null && filter.EnableCaching) { data = (CoreReferenceData)HttpContext.Current.Cache["CoreRefData"]; } else { data = refDataManager.GetCoreReferenceData(); HttpContext.Current.Cache.Add("CoreRefData", data, null, Cache.NoAbsoluteExpiration, new TimeSpan(1, 0, 0), CacheItemPriority.Normal, null); } //populate non-cached fragments (user profile) data.UserProfile = new InputProviderBase().GetUserFromAPICall(context); //send response outputProvider.GetOutput(context.Response.OutputStream, data, filter); }
/// <summary> /// Output standard POI List results /// </summary> /// <param name="outputProvider"></param> /// <param name="context"></param> /// <param name="filter"></param> private void OutputPOIList(IOutputProvider outputProvider, HttpContext context, APIRequestSettings filter) { List <OCM.API.Common.Model.ChargePoint> dataList = null; //get list of charge points for output: dataList = new POIManager().GetChargePoints(filter); int numResults = dataList.Count; //send response outputProvider.GetOutput(context.Response.OutputStream, dataList, filter); }
/// <summary> /// Handle output from API /// </summary> /// <param name="context"></param> private async void PerformOutput(HttpContext context) { HttpContext.Current.Server.ScriptTimeout = 120; //max script execution time is 2 minutes System.Diagnostics.Stopwatch stopwatch = new System.Diagnostics.Stopwatch(); stopwatch.Start(); //decide correct reponse type IOutputProvider outputProvider = null; var filter = new APIRequestSettings(); //set defaults string outputType = "xml"; filter.DistanceUnit = DistanceUnit.Miles; filter.MaxResults = 100; filter.EnableCaching = true; filter.ParseParameters(context); //override ?v=2 etc if called via /api/v2/ or /api/v1 if (APIBehaviourVersion > 0) { filter.APIVersion = APIBehaviourVersion; } if (APIBehaviourVersion >= 2) { filter.Action = DefaultAction; } if (context.Request.Url.Host.ToLower().StartsWith("api") && filter.APIVersion == null) { //API version is mandatory for api V2 onwards via api.openchargemap.* hostname OutputBadRequestMessage(context, "mandatory API Version not specified in request"); return; } if (!String.IsNullOrEmpty(context.Request["output"])) { outputType = ParseString(context.Request["output"]); } else { //new default after API V2 is json instead of XML if (filter.APIVersion >= 2) { outputType = "json"; } } //change defaults and override settings for deprecated api features if (filter.APIVersion >= 2) { //the following output types are deprecated and will default as JSON if (outputType == "carwings" || outputType == "rss") { OutputBadRequestMessage(context, "specified output type not supported in this API version"); return; } } //determine output provider switch (outputType) { case "xml": outputProvider = new XMLOutputProvider(); break; case "carwings": case "rss": outputProvider = new RSSOutputProvider(); if (outputType == "carwings") { ((RSSOutputProvider)outputProvider).EnableCarwingsMode = true; } break; case "json": outputProvider = new JSONOutputProvider(); break; case "geojson": outputProvider = new GeoJSONOutputProvider(); break; case "csv": outputProvider = new CSVOutputProvider(); break; case "kml": outputProvider = new KMLOutputProvider(KMLOutputProvider.KMLVersion.V2); break; case "png": outputProvider = new ImageOutputProvider(); break; default: outputProvider = new XMLOutputProvider(); break; } if (outputProvider != null) { context.Response.ContentEncoding = Encoding.Default; context.Response.ContentType = outputProvider.ContentType; if (!(filter.Action == "getcorereferencedata" && String.IsNullOrEmpty(context.Request["SessionToken"]))) { //by default output is cacheable for 24 hrs, unless requested by a specific user. context.Response.Cache.SetExpires(DateTime.Now.AddDays(1)); context.Response.Cache.SetCacheability(HttpCacheability.Public); context.Response.Cache.SetValidUntilExpires(true); } if (ConfigurationManager.AppSettings["EnableOutputCompression"] == "true") { //apply compression if accepted string encodings = context.Request.Headers.Get("Accept-Encoding"); if (encodings != null) { encodings = encodings.ToLower(); if (encodings.ToLower().Contains("gzip")) { context.Response.Filter = new GZipStream(context.Response.Filter, CompressionLevel.Optimal, false); context.Response.AppendHeader("Content-Encoding", "gzip"); //context.Trace.Warn("GZIP Compression on"); } else { context.Response.Filter = new DeflateStream(context.Response.Filter, CompressionMode.Compress); context.Response.AppendHeader("Content-Encoding", "deflate"); //context.Trace.Warn("Deflate Compression on"); } } } if (filter.Action == "getchargepoints" || filter.Action == "getpoilist") { OutputPOIList(outputProvider, context, filter); } if (filter.Action == "getcompactpoilist") { //experimental:: OutputCompactPOIList(context, filter); } if (filter.Action == "getcorereferencedata") { OutputCoreReferenceData(outputProvider, context, filter); } if (filter.Action == "geocode") { this.OutputGeocodingResult(outputProvider, context, filter); } if (filter.Action == "refreshmirror") { try { var itemsUpdated = await new OCM.Core.Data.CacheProviderMongoDB().PopulatePOIMirror(Core.Data.CacheProviderMongoDB.CacheUpdateStrategy.Modified); new JSONOutputProvider().GetOutput(context.Response.OutputStream, new { POICount = itemsUpdated, Status = "OK" }, filter); } catch (Exception exp) { new JSONOutputProvider().GetOutput(context.Response.OutputStream, new { Status = "Error", Message = exp.ToString() }, filter); } } stopwatch.Stop(); System.Diagnostics.Debug.WriteLine("Total output time: " + stopwatch.Elapsed.ToString()); } }
public string GetTotalsPerCountrySummary(bool outputAsFunction, string functionName, APIRequestSettings filterSettings) { //TODO: optionally output as normal JSON string output = "function " + functionName + "() { var ocm_summary = new Array(); \r\n"; if (HttpContext.Current.Cache["ocm_summary"] == null) { var list = new List <CountrySummary>(); var results = from c in DataModel.ChargePoints where c.SubmissionStatusType.IsLive == true group c by c.AddressInfo.Country into g select new { g, NumItems = g.Count(), NumStations = g.Sum(s => s.NumberOfPoints > 0 ? s.NumberOfPoints : 1) }; CultureInfo cultureInfo = Thread.CurrentThread.CurrentCulture; TextInfo textInfo = cultureInfo.TextInfo; foreach (var item in results) { var c = item.g.First().AddressInfo.Country; string countryName = textInfo.ToTitleCase(c.Title.ToLower()); string isoCode = c.ISOCode; list.Add(new CountrySummary { CountryName = countryName, ISOCode = isoCode, ItemCount = item.NumItems, LocationCount = item.NumItems, StationCount = (int)item.NumStations, ItemType = "LocationsPerCountry" }); } HttpContext.Current.Cache["ocm_summary"] = list.OrderByDescending(i => i.ItemCount).ToList(); } var cachedresults = (List <CountrySummary>)HttpContext.Current.Cache["ocm_summary"]; foreach (var item in cachedresults) { output += "ocm_summary[ocm_summary.length]={\"country\":\"" + item.CountryName + "\", \"isocode\":\"" + item.ISOCode + "\", \"itemcount\":" + item.LocationCount + ", \"locationcount\":" + item.LocationCount + ", \"stationcount\":" + item.StationCount + "}; \r\n"; } output += " return ocm_summary; }"; return(output); }
public List <OCM.API.Common.Model.ChargePoint> GetPOIList(APIRequestSettings settings) { bool freshCache = false; int maxCacheAgeMinutes = int.Parse(ConfigurationManager.AppSettings["MaxCacheAgeMinutes"]); if (status != null && status.LastUpdated.AddMinutes(maxCacheAgeMinutes) > DateTime.UtcNow) { freshCache = true; } if (!freshCache) { return(null); } //TODO: share common between POIManager and this int maxResults = settings.MaxResults; bool requiresDistance = false; GeoJsonPoint <GeoJson2DGeographicCoordinates> searchPoint = null; if (settings.Latitude != null && settings.Longitude != null) { requiresDistance = true; if (settings.Distance == null) { settings.Distance = 100; } searchPoint = GeoJson.Point(GeoJson.Geographic((double)settings.Longitude, (double)settings.Latitude)); } else { searchPoint = GeoJson.Point(GeoJson.Geographic(0, 0)); settings.Distance = 100; } //if distance filter provided in miles, convert to KM before use if (settings.DistanceUnit == OCM.API.Common.Model.DistanceUnit.Miles && settings.Distance != null) { settings.Distance = GeoManager.ConvertMilesToKM((double)settings.Distance); } bool filterByConnectionTypes = false; bool filterByLevels = false; bool filterByOperators = false; bool filterByCountries = false; bool filterByUsage = false; bool filterByStatus = false; bool filterByDataProvider = false; if (settings.ConnectionTypeIDs != null) { filterByConnectionTypes = true; } else { settings.ConnectionTypeIDs = new int[] { -1 }; } if (settings.LevelIDs != null) { filterByLevels = true; } else { settings.LevelIDs = new int[] { -1 }; } if (settings.OperatorIDs != null) { filterByOperators = true; } else { settings.OperatorIDs = new int[] { -1 }; } //TODO: get country id for given country code //either filter by named country code or by country id list if (settings.CountryCode != null) { var referenceData = database.GetCollection <OCM.API.Common.Model.CoreReferenceData>("reference").FindOne(); var filterCountry = referenceData.Countries.FirstOrDefault(c => c.ISOCode == settings.CountryCode); if (filterCountry != null) { filterByCountries = true; settings.CountryIDs = new int[] { filterCountry.ID }; } else { filterByCountries = false; settings.CountryIDs = new int[] { -1 }; } } else { if (settings.CountryIDs != null) { filterByCountries = true; } else { settings.CountryIDs = new int[] { -1 }; } } if (settings.UsageTypeIDs != null) { filterByUsage = true; } else { settings.UsageTypeIDs = new int[] { -1 }; } if (settings.StatusTypeIDs != null) { filterByStatus = true; } else { settings.StatusTypeIDs = new int[] { -1 }; } if (settings.DataProviderIDs != null) { filterByDataProvider = true; } else { settings.DataProviderIDs = new int[] { -1 }; } if (settings.SubmissionStatusTypeID == -1) { settings.SubmissionStatusTypeID = null; } ///////////////////////////////////// if (database != null) { var collection = database.GetCollection <OCM.API.Common.Model.ChargePoint>("poi"); IQueryable <OCM.API.Common.Model.ChargePoint> poiList = from c in collection.AsQueryable <OCM.API.Common.Model.ChargePoint>() select c; if (requiresDistance) { //filter by distance first poiList = poiList.Where(q => Query.Near("SpatialPosition", searchPoint, (double)settings.Distance * 1000).Inject()).Take(settings.MaxResults); } poiList = (from c in poiList where // (c.AddressInfo != null && c.AddressInfo.Latitude != null && c.AddressInfo.Longitude != null && c.AddressInfo.CountryID != null) ((settings.SubmissionStatusTypeID == null && (c.SubmissionStatusTypeID == null || c.SubmissionStatusTypeID == (int)StandardSubmissionStatusTypes.Imported_Published || c.SubmissionStatusTypeID == (int)StandardSubmissionStatusTypes.Submitted_Published)) || (settings.SubmissionStatusTypeID == 0) || //return all regardless of status (settings.SubmissionStatusTypeID != null && c.SubmissionStatusTypeID != null && c.SubmissionStatusTypeID == settings.SubmissionStatusTypeID) ) && //by default return live cps only, otherwise use specific submission statusid (c.SubmissionStatusTypeID != null && c.SubmissionStatusTypeID != (int)StandardSubmissionStatusTypes.Delisted_NotPublicInformation) //&& (settings.ChargePointID == null || (settings.ChargePointID!=null && (c.ID!=null && c.ID == settings.ChargePointID))) && (settings.OperatorName == null || c.OperatorInfo.Title == settings.OperatorName) && (settings.IsOpenData == null || (settings.IsOpenData != null && ((settings.IsOpenData == true && c.DataProvider.IsOpenDataLicensed == true) || (settings.IsOpenData == false && c.DataProvider.IsOpenDataLicensed != true)))) && (settings.DataProviderName == null || c.DataProvider.Title == settings.DataProviderName) //&& (String.IsNullOrEmpty(settings.LocationTitle) || (!String.IsNullOrEmpty(settings.LocationTitle) && c.AddressInfo!=null && c.AddressInfo.Title!=null && c.AddressInfo.Title.Contains(settings.LocationTitle))) && (settings.ConnectionType == null || c.Connections.Any(conn => conn.ConnectionType.Title == settings.ConnectionType)) && (settings.MinPowerKW == null || c.Connections.Any(conn => conn.PowerKW >= settings.MinPowerKW)) && (filterByCountries == false || (filterByCountries == true && settings.CountryIDs.Contains((int)c.AddressInfo.CountryID))) && (filterByConnectionTypes == false || (filterByConnectionTypes == true && c.Connections.Any(conn => settings.ConnectionTypeIDs.Contains(conn.ConnectionType.ID)))) && (filterByLevels == false || (filterByLevels == true && c.Connections.Any(chg => settings.LevelIDs.Contains((int)chg.Level.ID)))) && (filterByOperators == false || (filterByOperators == true && settings.OperatorIDs.Contains((int)c.OperatorID))) && (filterByUsage == false || (filterByUsage == true && settings.UsageTypeIDs.Contains((int)c.UsageTypeID))) && (filterByStatus == false || (filterByStatus == true && settings.StatusTypeIDs.Contains((int)c.StatusTypeID))) && (filterByDataProvider == false || (filterByDataProvider == true && settings.DataProviderIDs.Contains((int)c.DataProviderID))) select c); var results = poiList.ToList().OrderByDescending(p => p.DateCreated).Take(settings.MaxResults); if (requiresDistance && settings.Latitude != null & settings.Longitude != null) { //populate distance foreach (var p in results) { p.AddressInfo.Distance = GeoManager.CalcDistance((double)settings.Latitude, (double)settings.Longitude, p.AddressInfo.Latitude, p.AddressInfo.Longitude, settings.DistanceUnit); p.AddressInfo.DistanceUnit = settings.DistanceUnit; } results = results.OrderBy(r => r.AddressInfo.Distance); } return(results.ToList()); } else { return(null); } }
public void GetOutput(Stream outputStream, List <Common.Model.ChargePoint> dataList, APIRequestSettings settings) { XmlTextWriter xml = new XmlTextWriter(outputStream, Encoding.UTF8); //start xml document xml.WriteStartDocument(); //output rss tags xml.WriteStartElement("rss"); xml.WriteAttributeString("version", "2.0"); if (EnableCarwingsMode) { xml.WriteAttributeString("xmlns", "carwings", "http://www.w3.org/2000/xmlns/", "http://www.nissan.co.jp/dtd/carwings.dtd"); } if (EnableGeoRSS) { xml.WriteAttributeString("xmlns", "georss", "http://www.w3.org/2000/xmlns/", "http://www.georss.org/georss/10"); } //output feed details xml.WriteStartElement("channel"); xml.WriteElementString("title", "OpenChargeMap Charge Points"); xml.WriteElementString("link", "http://openchargemap.org"); xml.WriteElementString("description", "Charge Point data contributed by OpenChargeMap community"); xml.WriteElementString("copyright", "openchargemap.org"); //output feed items foreach (var item in dataList) { if (item.AddressInfo != null) { xml.WriteStartElement("item"); xml.WriteStartElement("guid"); xml.WriteAttributeString("isPermaLink", "false"); xml.WriteString(item.UUID); xml.WriteEndElement(); xml.WriteElementString("title", item.AddressInfo.Title); if (EnableCarwingsMode) { xml.WriteElementString("carwings:readtitle", item.AddressInfo.Title); } string description = item.GetSummaryDescription(true); string address = item.GetAddressSummary(true); xml.WriteElementString("description", description); if (item.AddressInfo.RelatedURL != null) { xml.WriteElementString("link", item.AddressInfo.RelatedURL); } if (EnableCarwingsMode) { if (address != "") { xml.WriteElementString("carwings:address", address); } if (item.AddressInfo.ContactTelephone1 != null) { xml.WriteElementString("carwings:tel", item.AddressInfo.ContactTelephone1); } xml.WriteElementString("carwings:lat", item.AddressInfo.Latitude.ToString()); xml.WriteElementString("carwings:lon", item.AddressInfo.Longitude.ToString()); } if (EnableGeoRSS) { xml.WriteElementString("georss:point", item.AddressInfo.Latitude.ToString() + " " + item.AddressInfo.Longitude.ToString()); } xml.WriteEndElement(); } } xml.WriteEndElement(); //end channel xml.WriteEndElement(); //end rss xml.WriteEndDocument(); //end xml xml.Flush(); //xml.Close(); #region example rss /* * <?xml version="1.0" encoding="UTF-8"?> * <rss version="2.0" xmlns:carwings="http://www.nissan.co.jp/dtd/carwings.dtd"> * <channel> * <title> WEB site update: NISSAN Topics </ title> * <link> http://rss.nissan.co.jp/ </ link> * <description> Nissan will deliver the latest information. </ Description> * <language>en</ language> * <copyright> Copyright NISSAN MOTOR CO., LTD. 2005 All Rights Reserved. </ copyright> * <lastBuildDate> Wed, 25 Oct 2006 12:18:36 +0900 </ lastBuildDate> * <docs> http://blogs.law.harvard.edu/tech/rss </ docs> * <item> * <title>update information</ title> * <carwings:readtitle> Trail Jam update information </ carwings: readtitle> * <description> X-TRAIL JAM IN TOKYO DOME general tickets on sale! ! </ Description> * <carwings:readtext> Trail Jam Tokyo Dome tickets, general sale.</ Carwings: readtext> * <Carwings:itemimage> http://eplus.jp/sys/web/irg/2006x-trail/images/topmain.jpg </ Carwings: Itemimage> * <Carwings:data> <! [CDATA [ * TRAIL <body> <br> <img src="http://lab.nissan-carwings.com/CWC/images/x-trail.jpg"> </ body> * ]]> * </ Carwings: data> * <carwings:lat> 35.70568 </ carwings: lat> * <carwings:lon> 139.75187 </ carwings: lon> * <link> http://blog.nissan.co.jp/X-TRAIL/?rss </ link> * <guid> http://blog.nissan.co.jp/X-TRAIL/?rss </ guid> * <Carwings:link> Http://Www.nissan.co.jp/Event/....../Coupon.html </ Carwings: Link> * <category> content </ category> * <pubDate> Mon, 16 Oct 2006 20:15:02 +0900 </ pubDate> * </item> * </channel> * </rss> * */ #endregion }
public void GetOutput(Stream outputStream, Object data, APIRequestSettings settings) { throw new NotImplementedException(); }
public void GetOutput(Stream outputStream, Common.Model.CoreReferenceData data, APIRequestSettings settings) { throw new NotImplementedException(); }