예제 #1
0
        static void Main(string[] args)
        {
            //string findCityNameUrl = string.Format("http://partners.api.skyscanner.net/apiservices/browsequotes/v1.0/UK/CNY/en-GB/BJSA-sky/CSHA-sky/2017-04-19/?apiKey=ma452197785131011345379685638992", "beijing");
            //HttpWebRequest request = WebRequest.Create(findCityNameUrl) as HttpWebRequest;
            //using (HttpWebResponse response = request.GetResponse() as HttpWebResponse)
            //{
            //    StreamReader reader = new StreamReader(response.GetResponseStream());
            //    //Console.WriteLine(reader.ReadToEnd());
            //    //Console.ReadKey();
            //    //List<Places> p = new List<Places>();

            //    string jsonContent = reader.ReadToEnd();


            //    List<Currencies> currency = new List<Currencies>();
            //    List<Quotes> quote = new List<Quotes>();
            //    List<AirPlaces> places = new List<AirPlaces>();
            //    List<Carriers> carriers = new List<Carriers>();



            //    //string resultQeruy = getData(query.fromLocation, query.toLocation, query.dateTime, query.dateTime);
            //    JObject o = JObject.Parse(jsonContent);

            //    currency = JsonConvert.DeserializeObject<List<Currencies>>(o["Currencies"].ToString());



            //    quote = JsonConvert.DeserializeObject<List<Quotes>>(o["Quotes"].ToString());
            //    JArray ja = JArray.Parse(o["Quotes"].ToString());

            //    for(int i = 0;i<ja.Count;i++)
            //    {
            //        JObject j = JObject.Parse(ja[i].ToString());

            //        OutboundLeg ob = new OutboundLeg();
            //        ob = JsonConvert.DeserializeObject<OutboundLeg>(j["OutboundLeg"].ToString());
            //        quote[i].Outboudleg=ob;


            //       string ji = ob.CarrierIds[0].ToString();
            //        //JArray jarry1 = JArray.Parse(j["OutboundLeg"].ToString());
            //    }


            //    places = JsonConvert.DeserializeObject<List<AirPlaces>>(o["Places"].ToString());

            //    carriers = JsonConvert.DeserializeObject<List<Carriers>>(o["Carriers"].ToString());



            //DateTime t = DateTime.Today;
            //Console.WriteLine(t.Year.ToString());
            //Console.WriteLine(t.Month.ToString());
            //Console.WriteLine(t.Day.ToString());
            //Console.WriteLine(t.DayOfYear);
            //Console.WriteLine(t.AddDays(1).Day);
            Chronic.Parser  p  = new Chronic.Parser();
            Chronic.Options op = new Chronic.Options();
            var             r  = p.Parse("today");
            var             t  = DateTime.Now.ToString("yyyy-MM-dd");


            Console.WriteLine(r.ToTime().ToString("yyyy-MM-dd"));
            Console.ReadKey();



            //JObject o = JObject.Parse(jsonContent);
            //p =JsonConvert.DeserializeObject<List<Places>>(o["Places"].ToString());

            //p[0].CityId.ToString();



            //XmlReader xr = XmlReader.Create(reader);


            //DataSet objDataSet = new DataSet();
            //objDataSet.ReadXml(reader.ReadToEnd());
            //}
        }
예제 #2
0
        // POST api/<controller>
        public IHttpActionResult Post([FromBody] PostInput data)
        {
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("en-GB");
            if (data.Keywords == null)
            {
                data.Keywords = new string[0];
            }
            List <string> addkeywords = new List <string>();

            foreach (string key in data.Keywords)
            {
                string[] ks = key.Split(' ');
                if (ks.Length == 2)
                {
                    addkeywords.AddRange(ks);
                }
                if (ks.Length > 2)
                {
                    addkeywords.AddRange(ks.Zip(ks.Skip(1), (x, y) => x + " " + y));
                }
            }

            data.Keywords = data.Keywords.Concat(addkeywords).ToArray();

            (Coordinate[] coordinates, string[] cities) = ApiInterface.GetHotelLocations(data);

            var parser = new Chronic.Parser();

            if (data.ArrivalDate == null || data.ArrivalDate == "")
            {
                data.ArrivalDate = "today";
            }
            if (data.DepartureDate == null || data.DepartureDate == "")
            {
                data.DepartureDate = "next week";
            }
            if (data.Image == null)
            {
                data.Image = "";
            }

            var opt = new Chronic.Options();

            opt.EndianPrecedence = Chronic.EndianPrecedence.Little;

            DateTime arrivalDate;
            DateTime departureDate;

            if (data.ArrivalDate != null)
            {
                data.ArrivalDate.Replace('.', '/');
            }
            if (data.DepartureDate != null)
            {
                data.DepartureDate.Replace('.', '/');
            }

            try
            {
                arrivalDate = DateTime.Parse(data.ArrivalDate, null);
            }
            catch
            {
                arrivalDate = parser.Parse(data.ArrivalDate, opt).Start.Value;
            }

            try
            {
                departureDate = DateTime.Parse(data.DepartureDate, null);
            }
            catch
            {
                departureDate = parser.Parse(data.DepartureDate, opt).Start.Value;
            }

            Hotel[] hotels = coordinates.SelectMany(x => ApiInterface.Check24(x.lat, x.lng, arrivalDate, departureDate)).ToArray();

            hotels = hotels.Where((x, i) => !hotels.Take(i).Any(y => y.Id == x.Id)).ToArray();

            return(Ok(new { Hotels = hotels.Take(data.MaxOutputSize), Coordinates = coordinates, Cities = cities }));
        }