module Support
  module Services
    class OwsLedger
      include HTTParty

      base_uri DOMAINS[:ows_ledger]

      class << self
        def post_ledger_payee(body)
          path = "/ledger/bulk"

          response = post(path, headers: { "Content-Type" => "application/json" }, body: body.to_json)

          verify_success(response)
          response
        end

        def generate_ledger_payee(abacus_event_id,
                                  payee_id,
                                  amount = 50.5,
                                  currency_code = "USD",
                                  ledger_type = "credit")
          [
            { "currency_amount": amount,
              "currency_code": currency_code,
              "model_type": "payee",
              "abacus_event_id": abacus_event_id,
              "ledger_type": ledger_type,
              "payee_id": payee_id }
          ]
        end

        private

        def verify_success(response)
          return if response.code == 201
          fail(
            "request to ows-ledger did not succeed:"\
            " #{JSON.parse(response.body)}"
          )
        end
      end
    end
  end
end
