Я наконец обернул (на данный момент) свой небольшой побочный проект, в обертку C # вокруг v2.0
Я начал писать его в начале прошлого года, когда вышел API v0.1, чтобы узнать больше об API и оттачивать свои навыки в C #, но это устарело в пользу (намного лучше) API v2.0. В начале этого года я отметил тег v0.1 и
Использование
Ghost разделяет их API на две проблемные области, в зависимости от того, чего вы хотите достичь -
Чтобы начать использовать его,
Доступ к API контента
Чтобы получить доступ к API содержимого, возьмите URL-адрес API и ключ API содержимого на
Вывод:
Welcome to Grant Winney: We learn by doing. We've all got something to contribute.
Navigation: Home, APIs, Lambda, Rasp PI, About Me, CV
Доступ к API администратора
Чтобы получить доступ к API администратора, получите URL-адрес API и ключ API администратора, также на
Вывод:
Welcome to <a href='
Running Ghost v2.23
Проблемы
Все прошло гладко, даже немного скучно и до тех пор, пока я не занялся последней стабильной конечной точкой API администратора - загрузкой изображений. Документы утверждают, что
Но когда я попытался отправить сообщение в конечную точку, используя RestSharp с добавленным заголовком, единственный ответ, который я смог получить, был что-то вроде «пожалуйста, выберите изображение». Я часами изучал, как загрузить файл изображения, и попробовал полдюжины разных способов.
Решение? Удалить заголовок.
Я понятия не имею, почему это было проблемой, и у меня мало желания копаться в кишках RestSharp, чтобы понять это. Каким-то образом этот заголовок испортил запрос, так что Ghost подумал, что изображение не загружается. Может я неправильно использовал шапку? Добавление файла некорректно для работы с этим заголовком? Может быть AddFile(), что-то скрывается за кулисами, что сделало все это очень-очень неправильным?
Ну что ж!
Чему я научился?
Грузы ...
JsonProperty
Если вам нужно получить / опубликовать поля с нижними или нижними подчеркиваниями в них, но вы хотите, чтобы все ваши классы были в паскале (или в другом формате), вам может понадобиться способ перевода между ними.
Трэвис CI
Потратьте несколько минут, чтобы импортировать в него свои проекты, особенно если у вас есть тесты. Тогда вы можете просто продолжать вносить изменения, весело и головокружительно не зная о последствиях, и у
CodeFactor
Команда Ghost очень отзывчива
Я задал довольно много вопросов на их
Ссылка скрыта от гостей
. Я называю это GhostSharp , и он доступен на
Ссылка скрыта от гостей
. Проверьте исходный код или узнайте больше об API и связанных инструментах и библиотеках в
Ссылка скрыта от гостей
.Я начал писать его в начале прошлого года, когда вышел API v0.1, чтобы узнать больше об API и оттачивать свои навыки в C #, но это устарело в пользу (намного лучше) API v2.0. В начале этого года я отметил тег v0.1 и
Ссылка скрыта от гостей
.Использование
Ghost разделяет их API на две проблемные области, в зависимости от того, чего вы хотите достичь -
Ссылка скрыта от гостей
и
Ссылка скрыта от гостей
. Первый касается доступа только для чтения, позволяющего потребителям отображать общедоступные данные, тогда как второй касается создания и управления (администрирования) этих же данных.Чтобы начать использовать его,
Ссылка скрыта от гостей
и зацепите сгенерированный ключ Content API и ключ API администратора. Будьте осторожны, с кем вы им делитесь, особенно с ключом API администратора ... при этом кто-то может изменить (или удалить) большую часть данных на вашем сайте!Доступ к API контента
Чтобы получить доступ к API содержимого, возьмите URL-адрес API и ключ API содержимого на
Ссылка скрыта от гостей
. Получив эти фрагменты информации, вы можете получить доступ к любому «общедоступному» контенту, доступному только для чтения.
Код:
var ghost = new GhostSharp.GhostContentAPI("https://grantwinney.com", "a6d33f1b95ff17adf0f787a70a");
var settings = ghost.GetSettings();
Console.WriteLine($"Welcome to {settings.Title}: {settings.Description}\r\n");
Console.WriteLine($"Navigation: {string.Join(", ", settings.Navigation.Select(x => x.Label))}");
Вывод:
Welcome to Grant Winney: We learn by doing. We've all got something to contribute.
Navigation: Home, APIs, Lambda, Rasp PI, About Me, CV
Доступ к API администратора
Чтобы получить доступ к API администратора, получите URL-адрес API и ключ API администратора, также на
Ссылка скрыта от гостей
. Получив эти фрагменты информации, вы можете получить доступ к «частному» контенту, а также создавать, изменять или даже удалять много «открытого» контента.
Код:
var ghost = new GhostSharp.GhostAdminAPI("https://grantwinney.com",
"5cf706fd7d4a33066550627a:9e5ed2b90e40f68573b0ccaf4aef666b047fc9867ad285b2e219eed5503bae53");
var site = ghost.GetSite();
Console.WriteLine($"Welcome to <a href='{site.Url}'>{site.Title}</a>\r\n");
Console.WriteLine($"Running Ghost v{site.Version}");
Вывод:
Welcome to <a href='
Ссылка скрыта от гостей
'>Grant Winney</a>Running Ghost v2.23
Проблемы
Все прошло гладко, даже немного скучно и до тех пор, пока я не занялся последней стабильной конечной точкой API администратора - загрузкой изображений. Документы утверждают, что
Они выкладывают пример использования curlсЧтобы загрузить изображение, отправьте запрос составных данных из нескольких частей, указав 'Content-Type': 'multipart/form-data;'заголовок ...
Ссылка скрыта от гостей
. Я не пробовал, но это соответствует тому, что они просят.curl -X POST -F 'file=@/path/to/images/my-image.jpg' -F 'ref=path/to/images/my-image.jpg' -H "Authorization: 'Ghost $token'" https://{admin_domain}/ghost/api/{version}/admin/images/upload/
Но когда я попытался отправить сообщение в конечную точку, используя RestSharp с добавленным заголовком, единственный ответ, который я смог получить, был что-то вроде «пожалуйста, выберите изображение». Я часами изучал, как загрузить файл изображения, и попробовал полдюжины разных способов.
Код:
var request = new RestRequest("images/upload/", Method.POST);
request.AddHeader("Content-Type", "multipart/form-data");
Решение? Удалить заголовок.
Код:
var request = new RestRequest("images/upload/", Method.POST);
if (image.FilePath != null)
request.AddFile("file", image.FilePath, GetMimeType(image.ImageType));
else
request.AddFile("file", image.File, image.FileName, GetMimeType(image.ImageType));
request.AddParameter("purpose", image.Purpose.ToString().ToLower());
request.AddParameter("ref", image.Reference);
return Execute<ImageResponse>(request).Images[0]; // adds authentication and execute s the query
Я понятия не имею, почему это было проблемой, и у меня мало желания копаться в кишках RestSharp, чтобы понять это. Каким-то образом этот заголовок испортил запрос, так что Ghost подумал, что изображение не загружается. Может я неправильно использовал шапку? Добавление файла некорректно для работы с этим заголовком? Может быть AddFile(), что-то скрывается за кулисами, что сделало все это очень-очень неправильным?
Ну что ж!
Чему я научился?
Грузы ...
JsonProperty
Если вам нужно получить / опубликовать поля с нижними или нижними подчеркиваниями в них, но вы хотите, чтобы все ваши классы были в паскале (или в другом формате), вам может понадобиться способ перевода между ними.
Ссылка скрыта от гостей
на помощь. Он помогает RestSharp в переводе между именами свойств C # и именами полей JSON.
Код:
namespace GhostSharp.Entities
{
public class Author
{
[JsonProperty("id")]
public string Id { get; set; }
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("profile_image")]
public string ProfileImage { get; set; }
[JsonProperty("cover_image")]
public string CoverImage { get; set; }
Трэвис CI
Потратьте несколько минут, чтобы импортировать в него свои проекты, особенно если у вас есть тесты. Тогда вы можете просто продолжать вносить изменения, весело и головокружительно не зная о последствиях, и у
Ссылка скрыта от гостей
есть ваша спина. Или что-то вроде того.CodeFactor
Ссылка скрыта от гостей
- еще один
Ссылка скрыта от гостей
сервис. Он также следит за вашим репо, предлагая исправления кода. У меня было несколько десятков из того, что я бы назвал «косметическими» изменениями - несколько классов в одном файле, лишние пустые строки и т. Д. - но все же было приятно немного почистить вещи и увидеть эту большую зеленую полосу.Команда Ghost очень отзывчива
Я задал довольно много вопросов на их
Ссылка скрыта от гостей
, и они были полезны ...-
Ссылка скрыта от гостей
-
Ссылка скрыта от гостей
-
Ссылка скрыта от гостей
-
Ссылка скрыта от гостей
Ссылка скрыта от гостей