Показать сообщение отдельно
Старый 23.07.2010, 16:26
udaaff вне форума Посмотреть профиль Отправить личное сообщение для udaaff Найти все сообщения от udaaff
  № 12  
Ответить с цитированием
udaaff
...

модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
Цитата:
Казалось что руками быстрее перечислить параметры запроса.
Там функция та несчастная в несколько строк получается.
Код AS3:
//
//  Copyright 2009 Vitali Sosnovski
//
//  NOTICE: You may distribute this class freely, 
//  provided it is not modified in any way (including
//  removing this header or changing the package path).
//
//  Please contact udaaff[at]gmail.com prior to distributing 
//  modified versions of this class.
//
////////////////////////////////////////////////////////////////////////////////
 
 
package by.typing.vkontakte.net
{
 
        import com.adobe.crypto.MD5;
 
        import flash.net.URLVariables;
 
        /**
         * Класс предназначен для задания параметров, передаваемых в запросе, а также 
         * для генерации сигнатуры на основании этих параметров.
         */
        public dynamic class VkontakteVariables extends URLVariables
        {
 
                //--------------------------------------------------------------------------
                //
                //  Constructor
                //
                //--------------------------------------------------------------------------
 
                /**
                 * Создает объект <code>VkontakteVariables</code>. 
                 * 
                 */             
                public function VkontakteVariables()
                {
                        super();
                }
 
 
                //--------------------------------------------------------------------------
                //
                //  Methods
                //
                //--------------------------------------------------------------------------
 
                /**
                 * Генерирует сигнатуру на основании заданных переменных. Необходимо вызывать
                 * после задания всех необходимых параметров.
                 *  
                 * @param viewer_id             Id пользователя.
                 * @param privateKey    Приватный ключ со страницы редактирования.
                 * 
                 */             
                public function buildSignature(viewer_id:String, privateKey:String):void
                {
                        // необходимо удалить, иначе неправильно вычислится hash при повторном
                        // вызове
                        delete this['sig'];
 
                        var array:Array = [];
                        for (var field:String in this)
                        {
                                array.push({ name: field, value: this[field] });
                        }
                        array.sortOn("name");
 
                        var sig:String = viewer_id;
                        for each (var o:Object in array)
                        {
                                sig += o.name + "=" + o.value;
                        }
                        sig += privateKey;
 
                        this['sig'] = MD5.hash(sig);
                }
 
        }
 
}