lib/gds_api/gov_uk_delivery.rb



require_relative 'base'
require_relative 'exceptions'
require 'json'

class GdsApi::GovUkDelivery < GdsApi::Base
  def initialize(endpoint_url, options = {})
    super(endpoint_url, options.merge(timeout: 10))
  end

  def subscribe(email, feed_urls)
    data = { email: email, feed_urls: feed_urls }
    url = "#{base_url}/subscriptions"
    post_url(url, data)
  end

  def topic(feed_url, title, description = nil)
    data = { feed_url: feed_url, title: title, description: description }
    url = "#{base_url}/lists"
    post_url(url, data)
  end

  def signup_url(feed_url)
    response = get_json("#{base_url}/list-url?feed_url=#{CGI.escape(feed_url)}")
    if response
      response['list_url']
    end
  end

  def notify(feed_urls, subject, body, logging_params = {})
    data = { feed_urls: feed_urls, subject: subject, body: body, logging_params: logging_params }
    url = "#{base_url}/notifications"
    post_url(url, data)
  end

  def enable_list(gov_delivery_id)
    data = { gov_delivery_id: gov_delivery_id }
    url = "#{base_url}/lists/enable"
    post_url(url, data)
  end

  def disable_list(gov_delivery_id)
    data = { gov_delivery_id: gov_delivery_id }
    url = "#{base_url}/lists/disable"
    post_url(url, data)
  end

private

  def base_url
    endpoint
  end

  def post_url(url, data)
    if ! @options[:noop]
      post_json(url, data)
    elsif @options[:noop] && @options[:stdout]
      puts "Would POST #{data.to_json} to #{url}"
    end
  end
end