Example #1
0
        /// <summary>
        /// Create a gadget for the current user. This corresponds to the
        /// gadgets.create Hyves method.
        /// </summary>
        /// <param name="title">The title of the gadget.</param>
        /// <param name="html">The html of the gadget.</param>
        /// <param name="visibility">The visibility of the gadget.</param>
        /// <param name="mayCopy">Allow to copy this gadget.</param>
        /// <returns>The new gadget; null if the call fails.</returns>
        public Gadget CreateGadget(string title, string html, HyvesVisibility visibility, bool mayCopy)
        {
            if (string.IsNullOrEmpty(title))
            {
                throw new ArgumentNullException("title");
            }
            if (string.IsNullOrEmpty(html))
            {
                throw new ArgumentNullException("html");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["title"]      = title;
            request.Parameters["html"]       = html;
            request.Parameters["visibility"] = EnumHelper.GetDescription(visibility);
            request.Parameters["maycopy"]    = mayCopy.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.GadgetsCreate);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessSingleItemResponse <Gadget>("gadget"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired hub from the specified short name. This corresponds to the
        /// hubs.getByShortname Hyves method.
        /// </summary>
        /// <param name="shortName">The short name of the hub.</param>
        /// <param name="hubType">The tybe of hub to retrieve (leave empty for all hub types).</param>
        /// <param name="responsefields">Get extra information from the requested hub.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified hubs; null if the call fails.</returns>
        public Hub GetHubByShortName(string shortName, string hubType, HyvesHubResponsefield responsefields, bool useFancyLayout)
        {
            if (string.IsNullOrEmpty(shortName))
            {
                throw new ArgumentException("shortName cannot be null or empty.", "shortName");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["shortname"] = shortName;
            if (string.IsNullOrEmpty(hubType) == false)
            {
                request.Parameters["hubtype"] = hubType;
            }

            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.HubsGetByShortname, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessSingleItemResponse <Hub>("hub"));
            }

            return(null);
        }
Example #3
0
        /// <summary>
        /// Gets the desired information about the specified gadget. This corresponds to the
        /// gadgets.get Hyves method.
        /// </summary>
        /// <param name="gadgetId">The requested gadgetIds.</param>
        /// <param name="responsefields">Get extra information from the gadget.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified gadget; null if the call fails.</returns>
        public Collection <Gadget> GetGadgets(Collection <string> gadgetIds, HyvesGadgetResponsefield responsefields, bool useFancyLayout)
        {
            if (gadgetIds == null || gadgetIds.Count == 0)
            {
                throw new ArgumentNullException("gadgetIds");
            }

            StringBuilder gadgetIdBuilder = new StringBuilder();

            if (gadgetIds != null)
            {
                foreach (string id in gadgetIds)
                {
                    if (gadgetIdBuilder.Length != 0)
                    {
                        gadgetIdBuilder.Append(",");
                    }
                    gadgetIdBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["gadgetid"]          = gadgetIdBuilder.ToString();
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.GadgetsGet, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Gadget>("gadget"));
            }

            return(null);
        }
Example #4
0
        /// <summary>
        /// Gets the desired media. This corresponds to the media.get Hyves method.
        /// </summary>
        /// <param name="mediaIds">The list of requested media IDs.</param>
        /// <param name="responsefields">Get extra information from the media.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the desired media; null if the call fails.</returns>
        public Collection <Media> GetMedia(Collection <string> mediaIds, HyvesMediaResponsefield responsefields, bool useFancyLayout)
        {
            if (mediaIds == null || mediaIds.Count == 0)
            {
                throw new ArgumentNullException("mediaIds");
            }

            StringBuilder mediaIdBuilder = new StringBuilder();

            if (mediaIds != null)
            {
                foreach (string id in mediaIds)
                {
                    if (mediaIdBuilder.Length != 0)
                    {
                        mediaIdBuilder.Append(",");
                    }
                    mediaIdBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["mediaid"]           = mediaIdBuilder.ToString();
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.MediaGet, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Media>("media"));
            }

            return(null);
        }
Example #5
0
        public string GetUploadMediaStatus(UploadToken token)
        {
            string url = string.Format("http://{0}/status?token={1}", token.Ip, HttpUtility.UrlEncode(token.Token));

            HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);

            webRequest.Method = "GET";

            HttpWebResponse webResponse = null;

            try
            {
                webResponse = (HttpWebResponse)webRequest.GetResponse();
            }
            catch (WebException we)
            {
                webResponse = (HttpWebResponse)we.Response;
            }

            HyvesResponse response = new HyvesResponse(webResponse.GetResponseStream(), HyvesMethod.Unknown);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.RawResponse);
            }

            return(string.Empty);
        }
        /// <summary>
        /// Gets the hub types. This corresponds to the
        /// hubs.getHubTypes Hyves method.
        /// </summary>
        /// <returns>The information about the hub types; null if the call fails.</returns>
        public Collection <string> GetHubTypes()
        {
            HyvesRequest request = new HyvesRequest(this.session);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.HubsGetHubTypes);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                Collection <string> collection = new Collection <string>();
                Debug.Assert(response.Result is Hashtable);
                Hashtable result = (Hashtable)response.Result;

                Debug.Assert(result["hubtype"] is ArrayList);
                ArrayList resultList = (ArrayList)result["hubtype"];

                for (int i = 0; i < resultList.Count; i++)
                {
                    collection.Add((string)resultList[i]);
                }

                return(collection);
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired information about the specified privatespots. This corresponds to the
        /// privatespots.get Hyves method.
        /// </summary>
        /// <param name="privatespotIds">The list of requested privatespot IDs.</param>
        /// <param name="responsefields">Get extra information from the requested privatespot</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified privatespots; null if the call fails.</returns>
        public Collection <PrivateSpot> GetPrivateSpots(Collection <string> privatespotIds, HyvesPrivateSpotResponsefield responsefields, bool useFancyLayout)
        {
            if ((privatespotIds == null) || (privatespotIds.Count == 0))
            {
                throw new ArgumentException("privatespotIds");
            }

            StringBuilder privatespotIdBuilder = new StringBuilder();

            if (privatespotIds != null)
            {
                foreach (string id in privatespotIds)
                {
                    if (privatespotIdBuilder.Length != 0)
                    {
                        privatespotIdBuilder.Append(",");
                    }
                    privatespotIdBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["privatespotid"]     = privatespotIdBuilder.ToString();
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.PrivateSpotsGet, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <PrivateSpot>("privatespot"));
            }

            return(null);
        }
Example #8
0
        /// <summary>
        /// Gets the public media for the loggedin user. This corresponds to the
        /// media.getPublic Hyves method.
        /// </summary>
        /// <param name="sortType">The sorttype</param>
        /// <param name="mediaType">The media type of the results.</param>
        /// <param name="timeSpan">The timespan to select from.</param>
        /// <param name="responsefields">Get extra information from the media.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <param name="page">The requested page.</param>
        /// <param name="resultsPerPage">The number of results per page.</param>
        /// <returns>The information about the specified media; null if the call fails.</returns>
        public Collection <Media> GetPublic(HyvesSortType sortType, HyvesMediaType mediaType, HyvesTimeSpan timeSpan, HyvesMediaResponsefield responsefields, bool useFancyLayout, int page, int resultsPerPage)
        {
            if (sortType == HyvesSortType.NotSpecified)
            {
                throw new ArgumentOutOfRangeException("sortType");
            }

            if (mediaType == HyvesMediaType.Unknown)
            {
                throw new ArgumentOutOfRangeException("mediaType");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["sorttype"]  = EnumHelper.GetDescription(sortType);
            request.Parameters["mediatype"] = EnumHelper.GetDescription(mediaType);
            if (timeSpan == HyvesTimeSpan.NotSpecified)
            {
                request.Parameters["timespan"] = EnumHelper.GetDescription(timeSpan);
            }

            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.MediaGetPublic, useFancyLayout, page, resultsPerPage);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Media>("media"));
            }

            return(null);
        }
        /// <summary>
        /// Send an email to an given userid which has to be loggedin user
        /// or a friend of logged in user. This corresponds to the
        /// users.sendNotificationToFriend Hyves method.
        /// </summary>
        /// <param name="userid">A single userid.</param>
        /// <param name="subject">Subject of the email.</param>
        /// <param name="body">Body of the email. </param>
        /// <param name="senderName">Sender name. </param>
        /// <param name="senderEmail">Sender email address.</param>
        /// <returns><b>True</b> if the call succeeds, otherwise <b>false</b>.</returns>
        /// <remarks>Spam sensitive method (for trusted partners only).</remarks>
        public bool SendNotificationToFriend(string userId, string subject, string body, string senderName, string senderEmail)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentNullException("userId");
            }
            if (string.IsNullOrEmpty(subject))
            {
                throw new ArgumentNullException("subject");
            }
            if (string.IsNullOrEmpty(body))
            {
                throw new ArgumentNullException("body");
            }
            if (string.IsNullOrEmpty(senderName))
            {
                throw new ArgumentNullException("senderName");
            }
            if (string.IsNullOrEmpty(senderEmail))
            {
                throw new ArgumentNullException("senderEmail");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["userid"]       = userId;
            request.Parameters["subject"]      = subject;
            request.Parameters["body"]         = body;
            request.Parameters["sender_name"]  = senderName;
            request.Parameters["sender_email"] = senderEmail;

            HyvesResponse response = request.InvokeMethod(HyvesMethod.UsersSendNotificationToFriend);

            return(response.Status == HyvesResponseStatus.Succeeded);
        }
        /// <summary>
        /// Gets the desired information about the specified region. This corresponds to the
        /// regions.get Hyves method.
        /// </summary>
        /// <param name="regionIDs">The requested region IDs.</param>
        /// <returns>The information about the specified region; null if the call fails.</returns>
        public Collection <Region> GetRegions(Collection <string> regionIDs)
        {
            if ((regionIDs == null) || (regionIDs.Count == 0))
            {
                throw new ArgumentNullException("regionIDs");
            }

            StringBuilder regionIDBuilder = new StringBuilder();

            if (regionIDs != null)
            {
                foreach (string id in regionIDs)
                {
                    if (regionIDBuilder.Length != 0)
                    {
                        regionIDBuilder.Append(",");
                    }
                    regionIDBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["regionid"] = regionIDBuilder.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.RegionsGet);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Region>("region"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired tips from the specified user by user. This corresponds to the
        /// tips.getByUser Hyves method.
        /// </summary>
        /// <param name="userId">The requested user Id.</param>
        /// <param name="tipCategoryId">Filter selecting tips by tip category ID.</param>
        /// <param name="responsefields">Get extra information from the tip.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <param name="page">The requested page.</param>
        /// <param name="resultsPerPage">The number of results per page.</param>
        /// <returns>The information about the specified tip; null if the call fails.</returns>
        public Collection <Tip> GetTipsByUser(string userId, string tipCategoryId, HyvesTipResponsefield responsefields, bool useFancyLayout, int page, int resultsPerPage)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentException("userId");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["userid"] = userId;
            if (string.IsNullOrEmpty(tipCategoryId) == false)
            {
                request.Parameters["tipcategoryid"] = tipCategoryId;
            }

            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.TipsGetByUser, useFancyLayout, page, resultsPerPage);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Tip>("tip"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired information about the specified listener. This corresponds to the
        /// listeners.get Hyves method.
        /// </summary>
        /// <param name="listenerId">The requested listenerIds.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified listener; null if the call fails.</returns>
        public Collection <Listener> GetListeners(Collection <string> listenerIds)
        {
            if (listenerIds == null || listenerIds.Count == 0)
            {
                throw new ArgumentNullException("listenerIds");
            }

            StringBuilder listenerIdBuilder = new StringBuilder();

            if (listenerIds != null)
            {
                foreach (string id in listenerIds)
                {
                    if (listenerIdBuilder.Length != 0)
                    {
                        listenerIdBuilder.Append(",");
                    }
                    listenerIdBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["listenerid"] = listenerIdBuilder.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersGet, false);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Listener>("listener"));
            }

            return(null);
        }
        /// <summary>
        /// Deletes a listener for the ApiConsumer. This corresponds to the
        /// listener.create Hyves method.
        /// </summary>
        /// <param name="listenerId">The requested listenerId.</param>
        /// <returns>The new listener; null if the call fails.</returns>
        public bool DeleteListener(string listenerId)
        {
            if (string.IsNullOrEmpty(listenerId))
            {
                throw new ArgumentException("listenerId");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["listenerid"] = listenerId;

            HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersCreate);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                Debug.Assert(response.Result is Hashtable);
                Hashtable result = (Hashtable)response.Result;

                Debug.Assert(result["success"] is bool);

                return((bool)result["success"]);
            }

            return(false);
        }
        /// <summary>
        /// Create a new listener for the ApiConsumer. This corresponds to the
        /// listener.create Hyves method.
        /// </summary>
        /// <param name="type">Type of listener to create.</param>
        /// <param name="callback">Url to do the callback to.</param>
        /// <returns>The new listener; null if the call fails.</returns>
        public Listener CreateListener(HyvesListenerType type, string callback)
        {
            if (type == HyvesListenerType.NotSpecified)
            {
                throw new ArgumentException("type");
            }

            if (string.IsNullOrEmpty(callback))
            {
                throw new ArgumentException("callback");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            switch (type)
            {
            case HyvesListenerType.AccesstokenRevoke:
                request.Parameters["type"] = "accesstoken_revoke";
                break;
            }

            request.Parameters["callback"] = callback;

            HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersCreate);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessSingleItemResponse <Listener>("listener"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired listeners from the specified type. This corresponds to the
        /// listeners.getByType Hyves method.
        /// </summary>
        /// <param name="type">Type of listeners to retrieve.</param>
        /// <returns>The information about the specified listener; null if the call fails.</returns>
        public Collection <Listener> GetListenersByType(HyvesListenerType type)
        {
            if (type == HyvesListenerType.NotSpecified)
            {
                throw new ArgumentNullException("type");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            switch (type)
            {
            case HyvesListenerType.AccesstokenRevoke:
                request.Parameters["type"] = "accesstoken_revoke";
                break;
            }

            HyvesResponse response = request.InvokeMethod(HyvesMethod.ListenersGetByType, false);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Listener>("listener"));
            }

            return(null);
        }
Example #16
0
        /// <summary>
        /// Creates a ping. This corresponds to the
        /// pings.createByFriend Hyves method.
        /// </summary>
        /// <param name="targetUserId">The title of the ping.</param>
        /// <param name="pingTypeId">The identifier for a ping type.</param>
        /// <param name="body">The html of the ping.</param>
        /// <param name="visibility">The visibility of the ping.</param>
        /// <returns>The new ping; null if the call fails.</returns>
        /// <remarks>Hidden method (for any partner).</remarks>
        public Ping CreatePingByFriend(string targetUserId, string pingTypeId, string body, HyvesVisibility visibility)
        {
            if (string.IsNullOrEmpty(targetUserId))
            {
                throw new ArgumentException("targetUserId cannot be null or empty.", "targetUserId");
            }

            if (string.IsNullOrEmpty(pingTypeId) && string.IsNullOrEmpty(body))
            {
                throw new ArgumentException("Please enter a ping type or a body.");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["target_userid"] = targetUserId;
            if (string.IsNullOrEmpty(body))
            {
                request.Parameters["pingtypeid"] = pingTypeId;
            }
            else
            {
                request.Parameters["body"] = body;
            }

            request.Parameters["visibility"] = EnumHelper.GetDescription(visibility);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.PingsCreateByFriend);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessSingleItemResponse <Ping>("ping"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired information about the specified tip. This corresponds to the
        /// tips.get Hyves method.
        /// </summary>
        /// <param name="tipIds">The requested tipIds.</param>
        /// <param name="responsefields">Get extra information from the tip.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified tip; null if the call fails.</returns>
        public Collection <Tip> GetTips(Collection <string> tipIds, HyvesTipResponsefield responsefields, bool useFancyLayout)
        {
            if (tipIds == null || tipIds.Count == 0)
            {
                throw new ArgumentNullException("tipIds");
            }

            StringBuilder tipIdBuilder = new StringBuilder();

            if (tipIds != null)
            {
                foreach (string id in tipIds)
                {
                    if (tipIdBuilder.Length != 0)
                    {
                        tipIdBuilder.Append(",");
                    }
                    tipIdBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["tipid"]             = tipIdBuilder.ToString();
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.TipsGet, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Tip>("tip"));
            }

            return(null);
        }
        /// <summary>
        /// Search in public wwws. This corresponds to the
        /// wwws.searchPublic Hyves method.
        /// </summary>
        /// <param name="searchterms">The search terms.</param>
        /// <param name="scopeMinId">Only www's posted after this one will be received.</param>
        /// <param name="scopeMaxId">Only www's posted before this one will be received.</param>
        /// <param name="limit">The maximum number of results desired.</param>
        /// <param name="responsefields">Get extra information from the requested www.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified www; null if the call fails.</returns>
        public Collection <Www> SearchPublic(string searchterms, string scopeMinId, string scopeMaxId, int limit, HyvesWwwResponsefield responsefields, bool useFancyLayout)
        {
            HyvesRequest request = new HyvesRequest(this.session);

            if (string.IsNullOrEmpty(searchterms) == false)
            {
                request.Parameters["searchterms"] = searchterms;
            }

            if (string.IsNullOrEmpty(scopeMinId) == false)
            {
                request.Parameters["scope_minid"] = scopeMinId;
            }

            if (string.IsNullOrEmpty(scopeMaxId) == false)
            {
                request.Parameters["scope_maxid"] = scopeMaxId;
            }

            if (limit > 0)
            {
                request.Parameters["limit"] = limit.ToString();
            }

            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.WwwsSearchPublic, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Www>("www"));
            }

            return(null);
        }
        /// <summary>
        /// Creates respect for an tip. This corresponds to the
        /// tip.createRespect Hyves method.
        /// </summary>
        /// <param name="title">The title of the tip.</param>
        /// <param name="body">The body of the tip.</param>
        /// <param name="tipCategoryId">The identifier of a tip category.</param>
        /// <param name="rating">The rating of the tip.</param>
        /// <returns>True if the call succeeds, false if the call fails.</returns>
        public bool CreateTip(string title, string body, string tipCategoryId, int rating)
        {
            if (string.IsNullOrEmpty(title))
            {
                throw new ArgumentException("title");
            }

            if (string.IsNullOrEmpty(body))
            {
                throw new ArgumentException("body");
            }

            if (string.IsNullOrEmpty(tipCategoryId))
            {
                throw new ArgumentException("tipCategoryId");
            }

            if (rating < 1 || rating > 5)
            {
                throw new ArgumentOutOfRangeException("rating", "The rating must be between 1 and 5.");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["title"]         = title;
            request.Parameters["body"]          = body;
            request.Parameters["tipcategoryid"] = tipCategoryId;
            request.Parameters["rating"]        = rating.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.TipsCreate);

            return(response.Status == HyvesResponseStatus.Succeeded);
        }
Example #20
0
        /// <summary>
        /// Retrieve public blogs. This corresponds to the blogs.getPublic Hyves method.
        /// </summary>
        /// <param name="sortType">The sort type.</param>
        /// <param name="timeSpan">The timespan to select from.</param>
        /// <returns>The information about the blogs; null if the call fails.</returns>
        public Collection <Blog> GetPublicBlogs(HyvesSortType sortType, HyvesTimeSpan timeSpan, HyvesBlogResponsefield responsefields, bool useFancyLayout)
        {
            if (sortType == HyvesSortType.NotSpecified)
            {
                throw new ArgumentOutOfRangeException("sortType");
            }

            if (timeSpan == HyvesTimeSpan.NotSpecified)
            {
                throw new ArgumentOutOfRangeException("timeSpan");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["sorttype"]          = EnumHelper.GetDescription(sortType);
            request.Parameters["timespan"]          = EnumHelper.GetDescription(timeSpan);
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.BlogsGetForFriends, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Blog>("blog"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired information about the specified city. This corresponds to the
        /// cities.get Hyves method.
        /// </summary>
        /// <param name="cityIDs">The requested city IDs.</param>
        /// <returns>The information about the specified city; null if the call fails.</returns>
        public Collection <City> GetCities(Collection <string> cityIDs)
        {
            if ((cityIDs == null) || (cityIDs.Count == 0))
            {
                throw new ArgumentNullException("cityIDs");
            }

            StringBuilder cityIDBuilder = new StringBuilder();

            if (cityIDs != null)
            {
                foreach (string id in cityIDs)
                {
                    if (cityIDBuilder.Length != 0)
                    {
                        cityIDBuilder.Append(",");
                    }

                    cityIDBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["cityid"] = cityIDBuilder.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.CitiesGet);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <City>("city"));
            }

            return(null);
        }
Example #22
0
        public bool RemoveMediaFromAlbum(string albumId, Collection <string> mediaIds)
        {
            if (string.IsNullOrEmpty(albumId))
            {
                throw new ArgumentException("albumId");
            }

            if (mediaIds == null)
            {
                throw new ArgumentNullException("mediaIds");
            }

            StringBuilder mediaIdBuilder = new StringBuilder();

            foreach (string id in mediaIds)
            {
                if (mediaIdBuilder.Length != 0)
                {
                    mediaIdBuilder.Append(",");
                }

                mediaIdBuilder.Append(id);
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["albumid"] = albumId;
            request.Parameters["mediaid"] = mediaIdBuilder.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.AlbumsRemoveMedia);

            return(response.Status == HyvesResponseStatus.Succeeded);
        }
Example #23
0
        /// <summary>
        /// Gets the desired information about the specified blog. This corresponds to the
        /// blogs.get Hyves method.
        /// </summary>
        /// <param name="blogIds">The requested blogIds.</param>
        /// <param name="responsefields">Get extra information from the blog.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified blog; null if the call fails.</returns>
        public Collection <Blog> GetBlogs(Collection <string> blogIds, HyvesBlogResponsefield responsefields, bool useFancyLayout)
        {
            if (blogIds == null || blogIds.Count == 0)
            {
                throw new ArgumentException("blogIds");
            }

            StringBuilder blogIdBuilder = new StringBuilder();

            if (blogIds != null)
            {
                foreach (string id in blogIds)
                {
                    if (blogIdBuilder.Length != 0)
                    {
                        blogIdBuilder.Append(",");
                    }
                    blogIdBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["blogid"]            = blogIdBuilder.ToString();
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.BlogsGet, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Blog>("blog"));
            }

            return(null);
        }
Example #24
0
        /// <summary>
        /// Send a private message to multiple targets. This corresponds to the
        /// messages.send Hyves method.
        /// </summary>
        /// <param name="title">Title of the message.</param>
        /// <param name="body">Body of the message.</param>
        /// <param name="targetUserId">A single user.</param>
        /// <returns><b>true</b> if successfull; otherwise <b>false</b>.</returns>
        /// <remarks>Spam sensitive method (for trusted partners only).</remarks>
        public bool SendMessage(string title, string body, string targetUserId)
        {
            if (string.IsNullOrEmpty(title))
            {
                throw new ArgumentNullException("title");
            }
            if (string.IsNullOrEmpty(body))
            {
                throw new ArgumentNullException("body");
            }
            if (string.IsNullOrEmpty(targetUserId))
            {
                throw new ArgumentNullException("targetUserId");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["title"]         = title;
            request.Parameters["body"]          = body;
            request.Parameters["target_userid"] = targetUserId;

            HyvesResponse response = request.InvokeMethod(HyvesMethod.MessagesSend);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(true);
            }

            return(false);
        }
        /// <summary>
        /// Gets the desired information about the specified hubCategory. This corresponds to the
        /// hubCategories.get Hyves method.
        /// </summary>
        /// <param name="hubCategoryId">The requested hubCategoryIds.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified hubCategory; null if the call fails.</returns>
        public Collection <HubCategory> GetHubCategories(Collection <string> hubCategoryIds, bool useFancyLayout)
        {
            if (hubCategoryIds == null || hubCategoryIds.Count == 0)
            {
                throw new ArgumentNullException("hubCategoryIds");
            }

            StringBuilder hubCategoryIdBuilder = new StringBuilder();

            if (hubCategoryIds != null)
            {
                foreach (string id in hubCategoryIds)
                {
                    if (hubCategoryIdBuilder.Length != 0)
                    {
                        hubCategoryIdBuilder.Append(",");
                    }
                    hubCategoryIdBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["hubcategoryid"] = hubCategoryIdBuilder.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.HubCategoriesGet, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <HubCategory>("hubcategory"));
            }

            return(null);
        }
        /// <summary>
        /// Gets the desired information about the specified users. This corresponds to the
        /// users.get Hyves method.
        /// </summary>
        /// <param name="usernames">The list of requested usernames.</param>
        /// <param name="responsefields">Get extra information from the requested user</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified users; null if the call fails.</returns>
        public Collection <User> GetUsersByUserName(Collection <string> usernames, HyvesUserResponsefield responsefields, bool useFancyLayout)
        {
            if ((usernames == null) || (usernames.Count == 0))
            {
                throw new ArgumentNullException("usernames");
            }

            StringBuilder usernameBuilder = new StringBuilder();

            if (usernames != null)
            {
                foreach (string name in usernames)
                {
                    if (usernameBuilder.Length != 0)
                    {
                        usernameBuilder.Append(",");
                    }
                    usernameBuilder.Append(name);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["username"]          = usernameBuilder.ToString();
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields, HyvesUserPrivateResponsefield.None);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.UsersGetByUsername, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <User>("user"));
            }

            return(null);
        }
Example #27
0
        /// <summary>
        /// Revokes all accesstokens for user. This corresponds to the
        /// auth.revoke Hyves method.
        /// </summary>
        /// <param name="userId">The identifier of the user.</param>
        /// <returns>The number of tokens that were rovoked.</returns>
        public int Revoke(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                throw new ArgumentException("userId");
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["userid"] = userId;

            HyvesResponse response = request.InvokeMethod(HyvesMethod.AuthRevoke);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                Debug.Assert(response.Result is Hashtable);
                Hashtable result = (Hashtable)response.Result;

                Debug.Assert(result["deletecount"] is int);

                return((int)result["deletecount"]);
            }

            return(-1);
        }
Example #28
0
        private DateTime TransformBirthday()
        {
            Debug.Assert(birthdayTransformed == false);

            Hashtable table = (Hashtable)this["birthday"];

            int year = HyvesResponse.CoerceInt32(table["year"]);

            if (year == -1)
            {
                year = DateTime.Now.Year;
            }
            int month = HyvesResponse.CoerceInt32(table["month"]);
            int day   = HyvesResponse.CoerceInt32(table["day"]);

            DateTime date = DateTime.MinValue;

            if (month > 0 && day > 0)
            {
                date = new DateTime(year, month, day);
            }
            this["birthday"] = date;

            birthdayTransformed = true;

            return(date);
        }
        /// <summary>
        /// Gets the desired information about the specified www. This corresponds to the
        /// wwws.get Hyves method.
        /// </summary>
        /// <param name="wwwIDs">The requested wwwIDs.</param>
        /// <param name="responsefields">Get extra information from the requested www.</param>
        /// <param name="useFancyLayout">Display information the same way that that is being done on the site, including things like smilies.</param>
        /// <returns>The information about the specified www; null if the call fails.</returns>
        public Collection <Www> GetWwws(Collection <string> wwwIDs, HyvesWwwResponsefield responsefields, bool useFancyLayout)
        {
            if (wwwIDs == null || wwwIDs.Count == 0)
            {
                throw new ArgumentNullException("wwwIDs");
            }

            StringBuilder wwwIDBuilder = new StringBuilder();

            if (wwwIDs != null)
            {
                foreach (string id in wwwIDs)
                {
                    if (wwwIDBuilder.Length != 0)
                    {
                        wwwIDBuilder.Append(",");
                    }
                    wwwIDBuilder.Append(id);
                }
            }

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["wwwid"]             = wwwIDBuilder.ToString();
            request.Parameters["ha_responsefields"] = ConvertResponsefieldsToString(responsefields);

            HyvesResponse response = request.InvokeMethod(HyvesMethod.WwwsGet, useFancyLayout);

            if (response.Status == HyvesResponseStatus.Succeeded)
            {
                return(response.ProcessResponse <Www>("www"));
            }

            return(null);
        }
Example #30
0
        /// <summary>
        /// Adds a list of coma separated tags to a media. This corresponds to the
        /// media.addTag Hyves method.
        /// </summary>
        /// <param name="mediaId">The identifier for the media.</param>
        /// <param name="tags">A list of tags.</param>
        /// <returns>True if the call succeeds, false if the call fails.</returns>
        public bool AddTag(string mediaId, Collection <string> tags)
        {
            if (string.IsNullOrEmpty(mediaId))
            {
                throw new ArgumentException("mediaId");
            }

            StringBuilder tagsStringBuilder = new StringBuilder();

            foreach (string tag in tags)
            {
                tagsStringBuilder.Append(tag);
                tagsStringBuilder.Append(",");
            }

            tagsStringBuilder.Remove(tagsStringBuilder.Length - 1, 1);

            HyvesRequest request = new HyvesRequest(this.session);

            request.Parameters["mediaid"] = mediaId;
            request.Parameters["tag"]     = tagsStringBuilder.ToString();

            HyvesResponse response = request.InvokeMethod(HyvesMethod.MediaAddTag);

            return(response.Status == HyvesResponseStatus.Succeeded);
        }
    /// <summary>
    /// Completes an asynchronous call to create an request token.
    /// </summary>
    /// <param name="asyncResult">The async result from the corresponding BeginCreateRequestToken call.</param>
    /// <param name="requestTokenSecret"></param>
    /// <returns>A new request token on success.</returns>
    public string EndCreateRequestToken(IAsyncResult asyncResult, out string requestTokenSecret)
    {
      requestTokenSecret = string.Empty;

      if (asyncResult == null)
      {
        throw new ArgumentNullException("asyncResult");
      }
      if (asyncRequest == null)
      {
        throw new InvalidOperationException("No method is currently being invoked using this request.");
      }

      string requestToken = null;

      try
      {
        HttpWebResponse webResponse = (HttpWebResponse)asyncRequest.EndGetResponse(asyncResult);

        if (webResponse.StatusCode == HttpStatusCode.OK)
        {
          HyvesResponse requestTokenResponse = new HyvesResponse(webResponse.GetResponseStream(), HyvesMethod.Unknown);
          if (requestTokenResponse.IsError == false)
          {
            Hashtable result = (Hashtable)requestTokenResponse.Result;

            requestToken = (string)result["oauth_token"];
            requestTokenSecret = (string)result["oauth_token_secret"];
          }
        }
      }
      finally
      {
        asyncRequest = null;
      }

      return requestToken;
    }
    /// <summary>
    /// Creates a request token. This corresponds to the Hyves auth.requesttoken method.
    /// </summary>
    /// <param name="requestTokenSecret">The request token secret to use to sign the request.</param>
    /// <returns>A new requesttoken on success.</returns>
    public string CreateRequestToken(out string tokenSecret, HyvesExpirationType expirationType)
    {
      tokenSecret = string.Empty;
      string token = null;
      HttpWebResponse webResponse = null;

      HttpWebRequest webRequest = CreateRequest(null, null, expirationType, session);
      try
      {
        webResponse = (HttpWebResponse)webRequest.GetResponse();
      }
      catch (WebException we)
      {
        webResponse = (HttpWebResponse)we.Response;
      }

      HyvesResponse requestTokenResponse = new HyvesResponse(webResponse.GetResponseStream(), HyvesMethod.Unknown);

      if (requestTokenResponse.IsError == false)
      {
        Hashtable result = requestTokenResponse.Result as Hashtable;
        if (result != null)
        {
          token = (string)result["oauth_token"];

          tokenSecret = (string)result["oauth_token_secret"];
        }
      }

      return token;
    }
    /// <summary>
    /// Completes an asynchronous call to create an new access token.
    /// </summary>
    /// <param name="asyncResult">The async result from the corresponding BeginCreateAccessToken call.</param>
    /// <param name="tokenSecret"></param>
    /// <param name="userId">The user Id associated with the access token.</param>
    /// <param name="expireDate">Date when the created access token expireDate.</param>
    /// <returns>A new access token.</returns>
    public string EndCreateAccessToken(IAsyncResult asyncResult, out string tokenSecret, out string userId, out DateTime expireDate)
    {
      tokenSecret = string.Empty;
      userId = string.Empty;
      expireDate = DateTime.Now;

      if (asyncResult == null)
      {
        throw new ArgumentNullException("asyncResult");
      }

      if (asyncRequest == null)
      {
        throw new InvalidOperationException("No method is currently being invoked using this request.");
      }

      string token = null;

      try
      {
        HttpWebResponse webResponse = (HttpWebResponse)asyncRequest.EndGetResponse(asyncResult);

        if (webResponse.StatusCode == HttpStatusCode.OK)
        {
          HyvesResponse accessResponse = new HyvesResponse(webResponse.GetResponseStream(), HyvesMethod.Unknown);
          if (accessResponse.IsError == false)
          {
            Hashtable result = accessResponse.Result as Hashtable;
            if (result != null)
            {
              token = (string)result["oauth_token"];
              tokenSecret = (string)result["oauth_token_secret"];
              userId = (string)result["userid"];
              expireDate = HyvesResponse.CoerceDateTime(result["expiredate"]);
            }
          }
        }
      }
      finally
      {
        asyncRequest = null;
      }

      return token;
    }
    public string GetUploadMediaStatus(UploadToken token)
    {
      string url = string.Format("http://{0}/status?token={1}", token.Ip, HttpUtility.UrlEncode(token.Token));

      HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
      webRequest.Method = "GET";
      
      HttpWebResponse webResponse = null;
      try
      {
        webResponse = (HttpWebResponse)webRequest.GetResponse();
      }
      catch (WebException we)
      {
        webResponse = (HttpWebResponse)we.Response;
      }

      HyvesResponse response = new HyvesResponse(webResponse.GetResponseStream(), HyvesMethod.Unknown);
      if (response.Status == HyvesResponseStatus.Succeeded)
      {
        return response.RawResponse;
      }

      return string.Empty;
    }
    /// <summary>
    /// Completes an asynchronous call to invoke an API method.
    /// </summary>
    /// <param name="asyncResult">The async result from the corresponding BeginCreateAccessToken call.</param>
    /// <returns>The resulting response.</returns>
    public HyvesResponse EndInvokeMethod(IAsyncResult asyncResult)
    {
      if (asyncRequest == null)
      {
        throw new InvalidOperationException("No method is currently being invoked using this request.");
      }

      HyvesResponse response = null;

      try
      {
        HttpWebResponse webResponse = (HttpWebResponse)asyncRequest.EndGetResponse(asyncResult);
        if (webResponse.StatusCode != HttpStatusCode.OK)
        {
          response = new HyvesResponse(webResponse.StatusCode, asyncMethod);
        }
        else
        {
          Stream responseStream = webResponse.GetResponseStream();
          response = new HyvesResponse(responseStream, asyncMethod);
        }
      }
      finally
      {
        asyncRequest = null;
        asyncMethod = HyvesMethod.Unknown;
      }

      session.LogResponse(response);
      return response;
    }
    /// <summary>
    /// Invokes the specified API method.
    /// </summary>
    /// <param name="method">The name of the API method to invoke.</param>
    /// <param name="method">Indicate if the response must be converted to fancy layout (smilies etc.).</param>
    /// <param name="page">The .</param>
    /// <param name="resultsPerPage">Number of results in the resultset</param>
    /// <returns>The resulting response.</returns>
    public HyvesResponse InvokeMethod(HyvesMethod method, bool useFancyLayout, int page, int resultsPerPage)
    {
      HttpWebRequest webRequest = CreateRequest(method, useFancyLayout, page, resultsPerPage, session, parameters);

      HyvesResponse response = null;

      HttpWebResponse webResponse = null;
      try
      {
        webResponse = (HttpWebResponse)webRequest.GetResponse();
      }
      catch (WebException we)
      {
        webResponse = (HttpWebResponse)we.Response;
      }

      Stream responseStream = webResponse.GetResponseStream();
      response = new HyvesResponse(responseStream, method);

      session.LogResponse(response);
      return response;
    }
    /// <summary>
    /// Creates a new access token. This corresponds to the Hyves auth.accesstoken method.
    /// </summary>
    /// <param name="requestToken">The request token to use to create the access token.</param>
    /// <param name="requestTokenSecret">The request token secret to use to sign the request.</param>
    /// <param name="tokenSecret"></param>
    /// <param name="userId">The user Id associated with the session.</param>
    /// <param name="expireDate">Date when the created access token expireDate.</param>
    /// <returns>A access token.</returns>
    public string CreateAccessToken(string requestToken, string requestTokenSecret, out string tokenSecret, out string userId, out DateTime expireDate)
    {
      tokenSecret = string.Empty;
      userId = string.Empty;
      expireDate = DateTime.Now;

      if (string.IsNullOrEmpty(requestToken))
      {
        throw new ArgumentException("requestToken");
      }

      if (string.IsNullOrEmpty(requestTokenSecret))
      {
        throw new ArgumentException("requestTokenSecret");
      }

      string token = null;

      HttpWebRequest webRequest = CreateRequest(requestToken, requestTokenSecret, HyvesExpirationType.Default, session);
      HttpWebResponse webResponse = null;

      try
      {
        webResponse = (HttpWebResponse)webRequest.GetResponse();
      }
      catch (WebException we)
      {
        webResponse = (HttpWebResponse)we.Response;
      }

      if (webResponse.StatusCode == HttpStatusCode.OK)
      {
        HyvesResponse sessionResponse = new HyvesResponse(webResponse.GetResponseStream(), HyvesMethod.Unknown);
        if (sessionResponse.IsError == false)
        {
          Hashtable result = sessionResponse.Result as Hashtable;
          if (result != null)
          {
            token = (string)result["oauth_token"];
            tokenSecret = (string)result["oauth_token_secret"];
            userId = (string)result["userid"];
            expireDate = HyvesResponse.CoerceDateTime(result["expiredate"]);
          }
        }
      }

      return token;
    }
		internal void LogResponse(HyvesResponse response)
		{
      this.lastResponse = response;
		}