Example #1
0
        public Group[] GetGroups(long?uid, long[] gids)
        {
            List <FacebookParam> param_list = new List <FacebookParam>();

            param_list.Add(FacebookParam.Create("session_key", session_info.SessionKey));
            param_list.Add(FacebookParam.Create("call_id", DateTime.Now.Ticks));
            if (uid != null)
            {
                param_list.Add(FacebookParam.Create("uid", uid));
            }

            if (gids != null)
            {
                param_list.Add(FacebookParam.Create("gids", gids));
            }

            GroupsResponse rsp = util.GetResponse <GroupsResponse>("facebook.groups.get", param_list.ToArray());

            foreach (Group gr in rsp.Groups)
            {
                gr.Session = this;
            }

            return(rsp.Groups);
        }
Example #2
0
 public bool HasAppPermission(string permission)
 {
     return(util.GetBoolResponse("facebook.users.hasAppPermission",
                                 FacebookParam.Create("call_id", DateTime.Now.Ticks),
                                 FacebookParam.Create("session_key", session_info.session_key),
                                 FacebookParam.Create("ext_perm", permission)));
 }
Example #3
0
        public Album CreateAlbum(string name, string description, string location)
        {
            // create parameter list
            List <FacebookParam> param_list = new List <FacebookParam> ();

            param_list.Add(FacebookParam.Create("session_key", session_info.SessionKey));
            param_list.Add(FacebookParam.Create("call_id", DateTime.Now.Ticks));
            param_list.Add(FacebookParam.Create("name", name));

            if (description != null && description != string.Empty)
            {
                param_list.Add(FacebookParam.Create("description", description));
            }

            if (location != null && location != string.Empty)
            {
                param_list.Add(FacebookParam.Create("location", location));
            }

            // create the albums
            Album new_album = util.GetResponse <Album> ("facebook.photos.createAlbum", param_list.ToArray());

            new_album.Session = this;

            // return
            return(new_album);
        }
Example #4
0
        internal FacebookParam[] Sign(string method_name, FacebookParam[] parameters)
        {
            List <FacebookParam> list = new List <FacebookParam> (parameters);

            list.Add(FacebookParam.Create("method", method_name));
            list.Add(FacebookParam.Create("api_key", api_key));
            list.Add(VersionParam);
            list.Sort();

            StringBuilder values = new StringBuilder();

            foreach (FacebookParam param in list)
            {
                values.Append(param.ToString());
            }

            values.Append(secret);

            byte[] md5_result = MD5.Create().ComputeHash(Encoding.ASCII.GetBytes(values.ToString()));

            StringBuilder sig_builder = new StringBuilder();

            foreach (byte b in md5_result)
            {
                sig_builder.Append(b.ToString("x2"));
            }

            list.Add(FacebookParam.Create("sig", sig_builder.ToString()));

            return(list.ToArray());
        }
Example #5
0
        public Tag[] GetTags()
        {
            StringBuilder pids = new StringBuilder();

            foreach (Photo p in GetPhotos())
            {
                if (pids.Length > 0)
                {
                    pids.Append(",");
                }

                pids.Append(p.PId);
            }

            PhotoTagsResponse rsp = Session.Util.GetResponse <PhotoTagsResponse> ("facebook.photos.getTags",
                                                                                  FacebookParam.Create("pids", pids),
                                                                                  FacebookParam.Create("session_key", Session.SessionKey),
                                                                                  FacebookParam.Create("call_id", System.DateTime.Now.Ticks));

            foreach (Tag t in rsp.Tags)
            {
                t.Session = Session;
            }

            return(rsp.Tags);
        }
Example #6
0
        public Event[] GetEvents(long?uid, long[] eids, long start_time, long end_time, string rsvp_status)
        {
            List <FacebookParam> param_list = new List <FacebookParam>();

            param_list.Add(FacebookParam.Create("session_key", session_info.SessionKey));
            param_list.Add(FacebookParam.Create("call_id", DateTime.Now.Ticks));
            if (uid != null)
            {
                param_list.Add(FacebookParam.Create("uid", uid));
            }

            if (eids != null)
            {
                param_list.Add(FacebookParam.Create("eids", eids));
            }

            param_list.Add(FacebookParam.Create("start_time", start_time));
            param_list.Add(FacebookParam.Create("end_time", start_time));
            if (rsvp_status != null)
            {
                param_list.Add(FacebookParam.Create("rsvp_status", rsvp_status));
            }

            EventsResponse rsp = util.GetResponse <EventsResponse>("facebook.events.get", param_list.ToArray());

            foreach (Event evt in rsp.Events)
            {
                evt.Session = this;
            }

            return(rsp.Events);
        }
Example #7
0
 public bool RevokeAppPermission(string permission)
 {
     return(util.GetBoolResponse
                ("facebook.auth.revokeExtendedPermission",
                FacebookParam.Create("call_id", DateTime.Now.Ticks),
                FacebookParam.Create("session_key", session_info.session_key),
                FacebookParam.Create("perm", permission)));
 }
Example #8
0
        public XmlDocument Query(string sql_query)
        {
            XmlDocument doc = Util.GetResponse("facebook.fql.query",
                                               FacebookParam.Create("session_key", SessionKey),
                                               FacebookParam.Create("call_id", DateTime.Now.Ticks),
                                               FacebookParam.Create("query", sql_query));

            return(doc);
        }
Example #9
0
        public bool AreFriends(long uid1, long uid2)
        {
            AreFriendsResponse response = Util.GetResponse <AreFriendsResponse>("facebook.friends.areFriends",
                                                                                FacebookParam.Create("session_key", SessionKey),
                                                                                FacebookParam.Create("call_id", DateTime.Now.Ticks),
                                                                                FacebookParam.Create("uids1", uid1),
                                                                                FacebookParam.Create("uids2", uid2));

            return(response.friend_infos[0].AreFriends);
        }
Example #10
0
        public SessionInfo GetSessionFromToken(string auth_token)
        {
            this.session_info = util.GetResponse <SessionInfo>("facebook.auth.getSession",
                                                               FacebookParam.Create("auth_token", auth_token));
            this.util.SharedSecret = session_info.Secret;

            this.auth_token = string.Empty;

            return(session_info);
        }
Example #11
0
        public Photo[] GetPhotos()
        {
            PhotosResponse rsp = Session.Util.GetResponse <PhotosResponse> ("facebook.photos.get",
                                                                            FacebookParam.Create("aid", aid),
                                                                            FacebookParam.Create("session_key", Session.SessionKey),
                                                                            FacebookParam.Create("call_id", DateTime.Now.Ticks));

            foreach (Photo p in rsp.Photos)
            {
                p.Session = Session;
            }

            return(rsp.Photos);
        }
Example #12
0
        // does not work right now: cannot tag photo already visible on facebook
        public Tag AddTag(string tag_text, float x, float y)
        {
            Tag new_tag = Session.Util.GetResponse <Tag> ("facebook.photos.addTag",
                                                          FacebookParam.Create("pid", PId),
                                                          FacebookParam.Create("tag_text", tag_text),
                                                          FacebookParam.Create("x", x),
                                                          FacebookParam.Create("y", y),
                                                          FacebookParam.Create("session_key", Session.SessionKey),
                                                          FacebookParam.Create("call_id", System.DateTime.Now.Ticks));

            new_tag.Session = Session;

            return(new_tag);
        }
Example #13
0
        public Tag[] GetTags()
        {
            PhotoTagsResponse rsp = Session.Util.GetResponse <PhotoTagsResponse> ("facebook.photos.getTags",
                                                                                  FacebookParam.Create("pids", PId),
                                                                                  FacebookParam.Create("session_key", Session.SessionKey),
                                                                                  FacebookParam.Create("call_id", System.DateTime.Now.Ticks));

            foreach (Tag t in rsp.Tags)
            {
                t.Session = Session;
            }

            return(rsp.Tags);
        }
Example #14
0
        public Album[] GetAlbums()
        {
            AlbumsResponse rsp = util.GetResponse <AlbumsResponse> ("facebook.photos.getAlbums",
                                                                    FacebookParam.Create("uid", session_info.UId),
                                                                    FacebookParam.Create("session_key", session_info.SessionKey),
                                                                    FacebookParam.Create("call_id", DateTime.Now.Ticks));

            foreach (Album album in rsp.Albums)
            {
                album.Session = this;
            }

            return(rsp.Albums);
        }
Example #15
0
        public Photo GetPhoto()
        {
            PhotosResponse rsp = Session.Util.GetResponse <PhotosResponse> ("facebook.photos.get", FacebookParam.Create("pids", PId),
                                                                            FacebookParam.Create("session_key", Session.SessionKey),
                                                                            FacebookParam.Create("call_id", System.DateTime.Now.Ticks));

            if (rsp.Photos.Length < 1)
            {
                return(null);
            }

            rsp.Photos[0].Session = Session;
            return(rsp.Photos[0]);
        }
Example #16
0
        public Notifications GetNotifications()
        {
            Notifications notifications = util.GetResponse <Notifications>("facebook.notifications.get",
                                                                           FacebookParam.Create("uid", session_info.UId),
                                                                           FacebookParam.Create("session_key", session_info.SessionKey),
                                                                           FacebookParam.Create("call_id", DateTime.Now.Ticks));

            foreach (Friend f in notifications.FriendRequests)
            {
                f.Session = this;
            }

            return(notifications);
        }
Example #17
0
        public Album GetAlbum()
        {
            AlbumsResponse rsp = Session.Util.GetResponse <AlbumsResponse> ("facebook.photos.getAlbums",
                                                                            FacebookParam.Create("aids", AId),
                                                                            FacebookParam.Create("session_key", Session.SessionKey),
                                                                            FacebookParam.Create("call_id", System.DateTime.Now.Ticks));

            if (rsp.Albums.Length < 1)
            {
                return(null);
            }

            rsp.Albums[0].Session = Session;
            return(rsp.Albums[0]);
        }
Example #18
0
        public Friend[] GetFriends()
        {
            FriendsResponse response = Util.GetResponse <FriendsResponse>("facebook.friends.get",
                                                                          FacebookParam.Create("session_key", SessionKey),
                                                                          FacebookParam.Create("call_id", DateTime.Now.Ticks));

            Friend[] friends = new Friend[response.UIds.Length];

            for (int i = 0; i < friends.Length; i++)
            {
                friends[i] = new Friend(response.UIds[i], this);
            }

            return(friends);
        }
Example #19
0
        public User[] GetUserInfo(long[] uids, string[] fields)
        {
            List <FacebookParam> param_list = new List <FacebookParam>();

            param_list.Add(FacebookParam.Create("session_key", session_info.SessionKey));
            param_list.Add(FacebookParam.Create("call_id", DateTime.Now.Ticks));

            if (uids == null || uids.Length == 0)
            {
                throw new Exception("uid not provided");
            }

            param_list.Add(FacebookParam.Create("uids", uids));
            param_list.Add(FacebookParam.Create("fields", fields));

            UserInfoResponse rsp = util.GetResponse <UserInfoResponse>("facebook.users.getInfo", param_list.ToArray());

            return(rsp.Users);
        }
Example #20
0
        public Album[] GetAlbums()
        {
            try {
                var rsp = util.GetResponse <AlbumsResponse> ("facebook.photos.getAlbums",
                                                             FacebookParam.Create("uid", session_info.uid),
                                                             FacebookParam.Create("session_key", session_info.session_key),
                                                             FacebookParam.Create("call_id", DateTime.Now.Ticks));

                var profile_rsp = util.GetResponse <AlbumsResponse> ("facebook.photos.getAlbums",
                                                                     FacebookParam.Create("uid", session_info.uid),
                                                                     FacebookParam.Create("session_key", session_info.session_key),
                                                                     FacebookParam.Create("call_id", DateTime.Now.Ticks),
                                                                     FacebookParam.Create("aid", -3));

                // Filters out Profile pictures album, can't upload there.
                return(rsp.albums.Where((a) => a.aid != profile_rsp.album [0].aid).ToArray());
            } catch (FormatException) {
                return(new Album[0]);
            }
        }
Example #21
0
        public FriendInfo[] AreFriends(long[] uids1, long[] uids2)
        {
            List <FacebookParam> param_list = new List <FacebookParam> ();

            param_list.Add(FacebookParam.Create("session_key", session_info.SessionKey));
            param_list.Add(FacebookParam.Create("call_id", DateTime.Now.Ticks));

            if (uids1 == null || uids1.Length == 0)
            {
                throw new Exception("uids1 not provided");
            }

            if (uids2 == null || uids2.Length == 0)
            {
                throw new Exception("uids2 not provided");
            }

            param_list.Add(FacebookParam.Create("uids1", uids1));
            param_list.Add(FacebookParam.Create("uids2", uids2));

            AreFriendsResponse rsp = util.GetResponse <AreFriendsResponse> ("facebook.friends.areFriends", param_list.ToArray());

            return(rsp.friend_infos);
        }
Example #22
0
        public GroupMemberList GetMembers()
        {
            GroupMembersResponse rsp = Session.Util.GetResponse <GroupMembersResponse>("facebook.groups.getMembers",
                                                                                       FacebookParam.Create("gid", GId),
                                                                                       FacebookParam.Create("call_id", DateTime.Now.Ticks),
                                                                                       FacebookParam.Create("session_key", Session.SessionKey));

            GroupMemberList members = new GroupMemberList();

            members.Members = new Friend [rsp.Members.UIds.Length];
            for (int i = 0; i < members.Members.Length; i++)
            {
                members.Members [i] = new Friend(rsp.Members.UIds [i], this.Session);
            }

            members.Admins = new Friend [rsp.Admins.UIds.Length];
            for (int i = 0; i < members.Admins.Length; i++)
            {
                members.Admins [i] = new Friend(rsp.Admins.UIds [i], this.Session);
            }

            members.NotReplied = new Friend [rsp.NotReplied.UIds.Length];
            for (int i = 0; i < members.NotReplied.Length; i++)
            {
                members.NotReplied [i] = new Friend(rsp.NotReplied.UIds [i], this.Session);
            }

            members.Officers = new Friend [rsp.Officers.UIds.Length];
            for (int i = 0; i < members.Officers.Length; i++)
            {
                members.Officers [i] = new Friend(rsp.Officers.UIds [i], this.Session);
            }

            return(members);
        }
Example #23
0
        internal Photo Upload(long aid, string caption, string path, string session_key)
        {
            // check for file
            FileInfo file = new FileInfo(path);

            if (!file.Exists)
            {
                throw new FileNotFoundException("Upload file not found", path);
            }

            // create parameter string
            List <FacebookParam> parameter_list = new List <FacebookParam>();

            parameter_list.Add(FacebookParam.Create("call_id", DateTime.Now.Ticks));
            parameter_list.Add(FacebookParam.Create("session_key", session_key));
            parameter_list.Add(FacebookParam.Create("aid", aid));

            if (caption != null && caption != string.Empty)
            {
                parameter_list.Add(FacebookParam.Create("caption", caption));
            }

            FacebookParam[] param_array  = Sign("facebook.photos.upload", parameter_list.ToArray());
            string          param_string = string.Empty;

            foreach (FacebookParam param in param_array)
            {
                param_string = param_string + "--" + BOUNDARY + LINE;
                param_string = param_string + "Content-Disposition: form-data; name=\"" + param.Name + "\"" + LINE + LINE + param.Value + LINE;
            }

            param_string = param_string + "--" + BOUNDARY + LINE
                           + "Content-Disposition: form-data; name=\"filename\"; filename=\"" + file.Name + "\"" + LINE
                           + "Content-Type: image/jpeg" + LINE + LINE;

            string closing_string = LINE + "--" + BOUNDARY + "--";

            // get bytes
            byte[] param_bytes   = System.Text.Encoding.Default.GetBytes(param_string);
            byte[] closing_bytes = System.Text.Encoding.Default.GetBytes(closing_string);

            byte[] file_bytes = System.IO.File.ReadAllBytes(path);

            // compose
            List <byte> byte_list = new List <byte>(param_bytes.Length + file_bytes.Length + closing_bytes.Length);

            byte_list.AddRange(param_bytes);
            byte_list.AddRange(file_bytes);
            byte_list.AddRange(closing_bytes);

            byte[] final_bytes = new byte[byte_list.Count];
            byte_list.CopyTo(final_bytes);

            // create request
            WebClient wc = new WebClient();

            wc.Headers.Set("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
            wc.Headers.Add("MIME-version", "1.0");

            // upload
            byte[] response = wc.UploadData("http://api.facebook.com/restserver.php?", "POST", final_bytes);

            // deserialize
            XmlSerializer photo_serializer = new XmlSerializer(typeof(Photo));

            try {
                return((Photo)photo_serializer.Deserialize(new MemoryStream(response)));
            }
            catch {
                Error error = (Error)ErrorSerializer.Deserialize(new MemoryStream(response));
                throw new FacebookException(error.ErrorCode, error.ErrorMsg);
            }
        }