Я пытаюсь написать плагин для моего сайта Jekyll, который записывает отсортированный ответ JSON в файл данных, но у меня возникают проблемы с ограничением элементов в ответе. Основной ответ выглядит так:
{
"current_page": 1,
"per_page": 50,
"total_pages": 19,
"url": "https://web.consonance.app/api/v2/products.json",
"products": [
{
...
"pub_date": "2017-05-01"
...
},
...
]
}
где products
- это массив книг, которые я хочу отсортировать по дате их публикации (pub_date
). Нет next_page
URL, только current_page
и total_pages
. Мой плагин очень простой. Он использует httparty
для выполнения запроса API, затем сортирует ответ как хеш по pub_date
. Пока это выглядит так:
require 'rubygems'
require 'httparty'
require 'json'
# http request to api
url = 'https://web.consonance.app/api/v2/products.json'
query = {
}
headers = {
Authorization: "Token token=**************"
}
response = HTTParty.get(url, query: query, headers: headers)
# convert response to hash array
hash = JSON.parse(response.body)
# reverse sort product in products by date published
hash_sorted = hash['products'].sort_by! { |o| o['pub_date'] }.reverse!
# open _data file and write json response
File.open("./_data/products.json", "w") { |file|
file.puts JSON.pretty_generate(hash_sorted)
}
, который дает мне JSON-ответ первых 50 элементов, отсортированных по pub_date
. Мой вопрос:
Как получить самую последнюю опубликованную книгу (product
) из всего массива, а не только из первых 50 результатов?
Я пытался увеличить лимит на страницу до максимума, который составляет 500 единиц, но общее количество книг охватывает более одной страницы, поэтому у меня все еще есть проблема с нумерацией страниц.
Доступные параметры для запроса задокументированы здесь .
NB - я использую httparty
, потому что мне было легко сделать запрос, но я открыт для использования других гемов / методов. Я только начал изучать Ruby, поэтому, пожалуйста, потерпите меня.