Class: Api::V5::BlogPostsController

Inherits:
BaseController
  • Object
show all
Defined in:
app/controllers/api/v5/blog_posts_controller.rb

Overview

typed: ignore

Constant Summary

Constants inherited from BaseController

Api::V5::BaseController::CACHE_NAMESPACE, Api::V5::BaseController::INTERNAL_SERVER_ERROR_MESSAGE, Api::V5::BaseController::ResponseSchema

Instance Method Summary collapse

Methods inherited from BaseController

#identity_cache_memoization

Methods included from LogrageCustomLogger

#append_info_to_payload

Methods included from ResponseCacheConcern

#my_response_cache

Instance Method Details

#indexObject



3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/controllers/api/v5/blog_posts_controller.rb', line 3

def index
  page = params.fetch(:page, 1)
  per_page = params.fetch(:per_page, 10)
  cache_key = "#{Date.today}:#{Time.zone.now.hour}:#{page}:#{per_page}"

  my_response_cache(cache_key, :json, public: true) do
    url = "https://blog.hungryhub.com/wp-json/wp/v2/posts?page=#{page}&per_page=#{per_page}&embed"
    response = DefaultFaradayClient.create_faraday_connection.get url

    if response.status == 200
      data = JSON.parse(response.body).map do |item|
        {
          title: item['title']['rendered'],
          link: item['link'],
          cover: find_cover_url(item)
        }
      end

      { success: true, data: data, message: '' }
    else
      { success: false, data: '', message: 'Something went wrong' }
    end
  end
end