Esempio n. 1
0
        public List<PinModel> GetFriendsBreads(string accessToken, double startTime, int takeCount)
        {
            IDataHelper db = Container.getInstance("dataHelper").Resolve<IDataHelper>();
            IFacebookHelper fb = Container.getInstance("facebookHelper").Resolve<IFacebookHelper>();

            //get facebook profile and friend list
            List<string> friends = fb.GetUsersFriends(accessToken);

            List<Dictionary<string, object>> tempPinSet = db.GetPinWithUserIDs(friends, startTime, takeCount);
            List<PinModel> retval = new List<PinModel>();
            PinModel tempPin = null;
            foreach (var item in tempPinSet)
            {
                tempPin = new PinModel()
                {
                    Title = item["Title"].ToString(),
                    OwnerID = item["Owner"].ToString(),
                    OwnerHeadshot = item["OwnerHeadshot"].ToString(),
                    OwnerName = item["OwnerName"].ToString(),
                    Latitude = Convert.ToDouble(item["Latitude"]),
                    Longitude = Convert.ToDouble(item["Longitude"]),
                    PinDate = Convert.ToDouble(item["PinDate"]),
                    Images = (List<string>)item["Images"]
                };
                retval.Add(tempPin);
            }
            return retval;
        }
Esempio n. 2
0
 public List<PinModel> GetPinsWithUserID(string userID, double since, int takeCnt)
 {
     IDataHelper db = Container.getInstance("dataHelper").Resolve<IDataHelper>();
     List<Dictionary<string, object>> tempPinSet = db.GetPinWithUserID(userID, since, takeCnt);
     List<PinModel> retval = new List<PinModel>();
     PinModel tempPin = null;
     foreach (var item in tempPinSet)
     {
         tempPin = new PinModel()
         {
             Title = item["Title"].ToString(),
             OwnerID = item["Owner"].ToString(),
             OwnerHeadshot = item["OwnerHeadshot"].ToString(),
             OwnerName = item["OwnerName"].ToString(),
             Latitude = Convert.ToDouble(item["Latitude"]),
             Longitude = Convert.ToDouble(item["Longitude"]),
             PinDate = Convert.ToDouble(item["PinDate"]),
             Images = (List<string>)item["Images"]
         };
         retval.Add(tempPin);
     }
     return retval;
 }
        public async Task<HttpResponseMessage> StorePin()
        {
            PinModel pin = new PinModel();
            Dictionary<string, object> retval = new Dictionary<string, object>();
            try
            {
                if (!Request.Content.IsMimeMultipartContent())
                {
                    throw new HttpResponseException(HttpStatusCode.UnsupportedMediaType);
                }

                Dictionary<string, Stream> files = new Dictionary<string, Stream>();
                string accessToken = "";
                await Request.Content.ReadAsMultipartAsync<MultipartMemoryStreamProvider>(new MultipartMemoryStreamProvider()).ContinueWith((tsk) =>
                {
                    MultipartMemoryStreamProvider prvdr = tsk.Result;

                    foreach (HttpContent ctnt in prvdr.Contents)
                    {
                        switch (ctnt.Headers.ContentDisposition.Name)
                        {
                            case "\"accessToken\"":
                                accessToken = ctnt.ReadAsStringAsync().Result.ToString();
                                break;
                            case "\"Title\"":
                                pin.Title = ctnt.ReadAsStringAsync().Result.ToString();
                                break;
                            case "\"PinDate\"":
                                pin.PinDate = Convert.ToDouble(ctnt.ReadAsStringAsync().Result.ToString());
                                break;
                            case "\"Latitude\"":
                                pin.Latitude = Convert.ToDouble(ctnt.ReadAsStringAsync().Result.ToString());
                                break;
                            case "\"Longitude\"":
                                pin.Longitude = Convert.ToDouble(ctnt.ReadAsStringAsync().Result.ToString());
                                break;
                            //case "\"LastSyncDate\"":
                            //    pin.LastSyncDate = Convert.ToDouble(ctnt.ReadAsStringAsync().Result.ToString());
                            //    break;
                            case "\"File\"":
                                pin.Images.Add(ConfigurationManager.AppSettings["S3Path"] + pin.OwnerName + @"\" + pin.PinDate.ToString("0") + ctnt.Headers.ContentDisposition.FileName.Replace(@"""", ""));
                                files.Add(pin.PinDate.ToString("0") + ctnt.Headers.ContentDisposition.FileName.Replace(@"""", ""), ctnt.ReadAsStreamAsync().Result);
                                break;
                            default:
                                break;
                        }
                    }
                    if (files.Count > 0)
                    {
                        PinsService pinService = new PinsService();
                        retval = pinService.StorePin(pin, files, accessToken);
                    }
                });

            }
            catch (Exception ext)
            {
                retval.Add("state", false);
                retval.Add("message", ext.Message);
                throw;
            }


            string yourJson = JsonConvert.SerializeObject(retval);
            var response = this.Request.CreateResponse(HttpStatusCode.OK);
            response.Content = new StringContent(yourJson, Encoding.UTF8, "application/json");
            return response;
        }
Esempio n. 4
0
 public PinModel GetPinWithPinID(string owner, double pinID)
 {
     IDataHelper db = Container.getInstance("dataHelper").Resolve<IDataHelper>();
     Dictionary<string, object> tempPin = db.GetPinWithPinID(owner, pinID);
     PinModel retval = new PinModel()
     {
         Title = tempPin["Title"].ToString(),
         OwnerID = tempPin["Owner"].ToString(),
         OwnerHeadshot = tempPin["OwnerHeadshot"].ToString(),
         OwnerName = tempPin["OwnerName"].ToString(),
         Latitude = Convert.ToDouble(tempPin["Latitude"].ToString()),
         Longitude = Convert.ToDouble(tempPin["Longitude"].ToString()),
         PinDate = Convert.ToDouble(tempPin["PinDate"].ToString()),
         Images = (List<string>)tempPin["Images"]
     };
     return retval;
 }
Esempio n. 5
0
        public Dictionary<string, object> StorePin(PinModel pin, Dictionary<string, Stream> files, string accessToken)
        {
            Dictionary<string, object> retval = new Dictionary<string, object>();
            try
            {
                //instance handlers
                IDataHelper db = Container.getInstance("dataHelper").Resolve<IDataHelper>();
                IS3Helper s3 = Container.getInstance("s3Helper").Resolve<IS3Helper>();
                IFacebookHelper fb = Container.getInstance("facebookHelper").Resolve<IFacebookHelper>();

                //get facebook profile and friend list
                dynamic fbProfile = fb.GetUserHeadshot(accessToken);
                pin.OwnerID = fbProfile.id;
                pin.OwnerHeadshot = fbProfile.picture.data.url;
                pin.OwnerName = fbProfile.name;

                //insert db
                pin.LastSyncDate = DateTime.UtcNow.ToUnixTimestamp();
                db.StorePin(pin.GenerateToDictionary());

                //upload to S3
                foreach (var item in files)
                {
                    if (!s3.Upload(pin.OwnerID, item.Key, item.Value))
                    {
                        //return false;
                    }
                }
                retval.Add("state", true);
                retval.Add("message", "");

            }
            catch (Exception ext)
            {

                retval.Add("state", false);
                retval.Add("message", ext.Message);
                throw;
            }
            return retval;
        }