module ThumbsYup::ServerEmbed

Public Class Methods

render_public_reviews(page: nil) click to toggle source
# File lib/thumbs_yup/server_embed.rb, line 9
def render_public_reviews(page: nil)
  check_user_identifer!

  review_data = json_review_data(page: page)
  reviews = review_data["reviews"]
  metadata = review_data["metadata"]

  html = if review_data["message"]
    ThumbsYup::ErrorRenderer::render_page(
      message: review_data["message"]
    )
  else
    ThumbsYup::TemplateRenderer::render_page(
      settings: settings,
      pagination: pagination(metadata),
      reviews: reviews
    )
  end

  html.respond_to?(:html_safe) ? html.html_safe : html
end

Private Class Methods

check_user_identifer!() click to toggle source
# File lib/thumbs_yup/server_embed.rb, line 33
      def check_user_identifer!
        if ThumbsYup.configuration.user_identifier.nil?
          raise <<-EOS
            Create your user_identifier in: config/initializers/thumbs_yup_init.rb
            ThumbsYup.configure do |config|
              config.user_identifier = "your-website-identifier"
            end
          EOS
        end
      end
json_review_data(page:) click to toggle source
# File lib/thumbs_yup/server_embed.rb, line 44
def json_review_data(page:)
  url = ThumbsYup.configuration.thumbs_yup_url + '/site/' + ThumbsYup.configuration.user_identifier

  uri = URI.parse(url)
  params = { :page => page }
  uri.query = URI.encode_www_form(params)

  request = Net::HTTP::Get.new(uri.request_uri)
  request["User-Agent"] = "My User Agent"
  request["Accept"] = "application/json"

  http = Net::HTTP.new(uri.host, uri.port)
  http.use_ssl = true

  response = http.request(request) rescue nil

  if response.present? && !response.body.blank?
    JSON.parse(response.body)
  else
    { "message" => "Service unavailable" }
  end
end
pagination(metadata) click to toggle source
# File lib/thumbs_yup/server_embed.rb, line 77
def pagination(metadata)
  return nil if metadata.nil?
  {
    current_page: metadata["current_page"],
    total_count: metadata["total_count"],
    per_page: metadata["per_page"]
  }
end
settings() click to toggle source
# File lib/thumbs_yup/server_embed.rb, line 67
def settings
  {
    review_style: ThumbsYup.configuration.review_style,
    review_color: ThumbsYup.configuration.review_color,
    review_background: ThumbsYup.configuration.review_background,
    review_size: ThumbsYup.configuration.review_size,
    thumbs_yup_url: ThumbsYup.configuration.thumbs_yup_url
  }
end