Итак, что же такое PageGlimpse? PageGlimpse.com – это бесплатный сервис, который предоставляет услуги по созданию скриншотов к сайтам. В действительности сервис очень может пригодиться если у вас есть свой сайт, на котором есть много ссылок на другие ресурсы и вам хочется кроме названия ресурса показать пользователю еще и уменьшенное изображение страницы. Сервис является бесплатным и для его использования нужно просто пройти бесплатную регистрацию по окончании, которой вам выдадут свой персональный ключ на использование данного сервиса.
Вся информация по использованию сервиса расположена на одной странице: http://www.pageglimpse.com/features/api
Для того, чтобы продемонстрировать возможности сервиса пройдите регистрацию и получите свой уникальный ключ. После введите в браузере следующий адрес: http://images.pageglimpse.com/v1/thumbnails?url=http://www.itcommunity.ru/&size=large&devkey=123456789
Нас здесь интересуют следующие значения:
url – адрес страницы, изображение, которой мы хотим получить.
size – размер изображения:
small 150x108 ~ 4kb
medium 280x202 ~ 11kb
large 430x310 ~ 25kb
devkey – ключ, который вы получили после регистрации.
Если все было указано правильно, то вы получите изображение сайта сделанное сервисом PageGlimpse.com.
Как же теперь использовать полученную нами информацию? Я покажу использование данного сервиса на ASP.NET сайте, и для этого напишу и зарегистрирую новый HttpHandler.
В только, что созданный сайт на ASP.NET добавьте новый модуль – PageGlimpseHandler.
public class PageGlimpseHandler:IHttpHandler
{
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
if (context.Request.Params["site"] != null)
{
string uri = "http://images.pageglimpse.com/v1/thumbnails?url=";
string size = "&size=large";
string devkey = "&devkey=hjk34h342j3h4kj23n42j3h4";
uri += context.Request.Params["site"] + size + devkey;
System.Net.WebRequest request = System.Net.WebRequest.Create(uri);
System.Net.WebResponse response = request.GetResponse();
BinaryReader reader = new BinaryReader(response.GetResponseStream());
byte[] buffer = reader.ReadBytes((int)response.ContentLength);
if (buffer != null)
{
context.Response.ContentType = "image/jpeg";
context.Response.BinaryWrite(buffer);
context.Response.End();
}
context.Response.StatusCode = 404;
}
}
}
Созданный нами класс является наследником IHttpHandler и реализует его метод: ProcessRequest, который обрабатывает HTTP запрос и свойство IsReusable.
В ProcessRequest мы формируем запрос к нашему сервису, получаем от него данные в виде массива байтов.
Теперь нам осталось только зарегистрировать наш PageGlimpseHandler в web.config. Для этого найдите раздел httpHandlers и добавьте в него следующую строку
<add verb="GET" path="pageglimpse.aspx" type="PageGlimpseHandler"/>
Вот собственно и все.. Откройте страницу Default.aspx и добавьте на неё вызов изображения какого-либо сайта.
<img src="pageglimpse.aspx?site=http://www.google.com/" />
<img src="pageglimpse.aspx?site=http://www.microsoft.com/" />
Конечно же в реальном приложении все настройки сервиса не должны храниться в коде их лучше перенести в web.config и забирать когда нужно оттуда.