Пока Google чистит свои API решил немного доработать модуль для работы с Яндекс.Метрикой. Об этом модуле я писал пока всего один раз и за прошедшее время этот API вышел “из подполья”, т.е. теперь ссылка на API Метрики светится как в списке всех API Яндекса, так и на страничке Метрики сверху.
Теперь в модуле есть методы для доступа ко всем ресурсам сервиса, для которых используется метод GET, а также появился базовый метод для выполнения POST-запросов к Метрике.
Итак, если вы впервые читаете в блоге про API Яндекс.Метрики, то советую Вам сначала ознакомиться с первым сообщением в котором рассматривается первоначальный модуль. Ну, а для тех, кто уже в курсе, что и как работает в этом модуле – список добавленных методов:
{Возвращает информацию о целях счетчика.} function GetGoals(id: integer):string; {возвращает информацию по цели} function GetGoalInfo(id,goal_id:integer):string; {Возвращает информацию о фильтрах счетчика.} function GetFilters(id: integer):string; {Возвращает информацию об указанном фильтре счетчика.} function GetFilterInfo(id, filter_id:integer):string; {Возвращает информацию об операциях счетчика.} function GetOperations(id: integer):string; {Возвращает информацию об указанной операции счетчика.} function GetOperationInfo(id, operation_id:integer):string; {Возвращает информацию о разрешениях на управление счетчиком и просмотр статистики.} function GetGrants(id: integer):string; {Возвращает информацию об указанном разрешении на управление счетчиком и просмотр статистики.} function GetGrantInfo(id:integer; user_login:string):string; {Возвращает список представителей, которым предоставлен полный доступ к аккаунту текущего пользователя} function GetDelegates():string; {Возвращает список аккаунтов, представителем которых является текущий пользователь.} function GetAccounts():string;
Все методы возвращают строку. Если надо предоставить полученный объект в формате JSON или XML в виде какого-либо объекта Delphi, то парсите эту строку чем угодно: Superobject для JSON, NativeXML или MSXML для работы с XML и т.д.
Также у класса TYandexMetrica появился новый приватный метод для отправки POST запроса:
function TYandexMetrica.POSTCommand(Method: string; Params: TStringList): string; var URL, ParamsStr, outFormat: string; Data: TStringStream; begin if not FAuthorizer.Authorized then Exit; outFormat :=GetEnumName(TypeInfo(TOutputFormat), ord(OutputFormat)); outFormat := Copy(outFormat, 3, Length(outFormat) - 2); URL := Format(cApiURL, [Method, LowerCase(outFormat),FAuthorizer.OAuthToken]); Data := TStringStream.Create; try with THTTPSend.Create do begin Params.SaveToStream(Document); MimeType:=GetMimeType; Headers.Add('Accept : '+GetMimeType); if HTTPMethod('POST', URL) then begin Data.LoadFromStream(Document); Result := Data.DataString; end else raise Exception.Create('Ошибка отправки запроса'); end; finally Data.Free; end; end;
Этот метод в качестве входных параметров принимает название ресурса, к которому необходимо получить доступ (Method) и список параметров, которые будут помещены в тело запроса.
Например, чтобы создать новый счётчик в своем аккаунте можно воспользоваться этим методом так (после успешной авторизации, естественно):
var Params: TStringList; begin Params:=TStringList.Create; Params.Add('{"counter":{"site":"www.example.ru"}}'); ShowMessage(POSTCommand('counters',Params)); end;
После этого в вашем аккаунте в Метрике появится новый счётчик для сайта www.example.ru, а все параметры нового счётчика будут показаны в сообщении.
Книжная полка
Описание: Рассмотрены практические вопросы по разработке клиент-серверных приложений в среде Delphi 7 и Delphi 2005 с использованием СУБД MS SQL Server 2000, InterBase и Firebird. Приведена информация о теории построения реляционных баз данных и языке SQL. Освещены вопросы эксплуатации и администрирования СУБД.
|
||
Название: О чем не пишут в книгах по Delphi
Описание: Рассмотрены малоосвещенные вопросы программирования в Delphi. Описаны методы интеграции VCL и API. Показаны внутренние механизмы VCL и приведены примеры вмешательства в эти механизмы. Рассмотрено использование сокетов в Delphi: различные режимы их работы, особенности для протоколов TCP и UDP и др.
|
К сожалению на данные момент уже не работает(( как это исправить?