Sha256: d4302bc8d11f203b46283f09a87dcb62172d01b11cd424589f5be5a7763e25aa

Contents?: true

Size: 1.13 KB

Versions: 1

Compression:

Stored size: 1.13 KB

Contents

# frozen_string_literal: true

require 'uri'
require 'net/http'
require 'arbetsformedlingen/api/response'

begin
  require 'nokogiri'
rescue LoadError
end

module Arbetsformedlingen
  module API
    # API SOAP request
    class SOAPRequest
      # SOAP response
      # Response = KeyStruct.new(:code, :body, :xml)

      attr_reader :locale, :uri, :url

      # Initialize SOAP request
      def initialize(url, locale: nil)
        unless Object.const_defined?(:Nokogiri)
          raise(ArgumentError, "unable to require 'nokogiri' gem, please install it")
        end

        @url = url
        @uri = URI(url)
        @locale = locale
      end

      # Performs a POST request
      # @param [String] body
      # @return [Response] the response
      def post(body)
        http = Net::HTTP.new(uri.host, uri.port)
        http.use_ssl = true if uri.scheme == 'https'

        request = Net::HTTP::Post.new(uri)
        request['Content-Type'] = 'text/xml'
        request['Accept-Language'] = locale if locale
        request.body = body

        response = http.request(request)

        Response.new(response, uri)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
arbetsformedlingen-0.7.0 lib/arbetsformedlingen/api/soap_request.rb