Class: Crefo::Service::Request

Inherits:
Object
  • Object
show all
Defined in:
lib/crefo/service/request.rb

Constant Summary collapse

@@transmissiontimestamp =
nil

Class Attribute Summary collapse

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(request_id: nil, **options) ⇒ Request

Returns a new instance of Request.



9
10
11
12
# File 'lib/crefo/service/request.rb', line 9

def initialize(request_id: nil, **options)
  @request_id = request_id || Crefo.config.transactionreference || generate_request_id
  @options = options
end

Class Attribute Details

.request_nameObject

Returns the value of attribute request_name.



52
53
54
# File 'lib/crefo/service/request.rb', line 52

def request_name
  @request_name
end

.response_classObject

Returns the value of attribute response_class.



51
52
53
# File 'lib/crefo/service/request.rb', line 51

def response_class
  @response_class
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



7
8
9
# File 'lib/crefo/service/request.rb', line 7

def options
  @options
end

#request_idObject (readonly)

Returns the value of attribute request_id.



7
8
9
# File 'lib/crefo/service/request.rb', line 7

def request_id
  @request_id
end

Class Method Details

.mock_transmissiontimestamp(time = Time.now, &block) ⇒ Object



60
61
62
63
64
# File 'lib/crefo/service/request.rb', line 60

def mock_transmissiontimestamp(time = Time.now, &block)
  @@transmissiontimestamp = time
  block.call
  @@transmissiontimestamp = nil
end

.transmissiontimestampObject



56
57
58
# File 'lib/crefo/service/request.rb', line 56

def transmissiontimestamp
  @@transmissiontimestamp
end

Instance Method Details

#connectionObject



25
26
27
28
29
30
31
32
33
34
# File 'lib/crefo/service/request.rb', line 25

def connection
  @connection ||= begin
    options = Crefo.config.connection_options
    Faraday.new(options) do |connection|
      connection.headers[:user_agent] = user_agent
      connection.request :multipart
      connection.adapter :net_http
    end
  end
end

#envelopeObject



14
15
16
# File 'lib/crefo/service/request.rb', line 14

def envelope
  @envelope ||= XML::Request::Envelope.new(request: self).build
end

#send(url) ⇒ Object



18
19
20
21
22
23
# File 'lib/crefo/service/request.rb', line 18

def send(url)
  connection.post url do |reqest|
    reqest.headers[:content_type] = 'application/xop+xml'
    reqest.body = envelope
  end
end

#transmissiontimestampObject



36
37
38
# File 'lib/crefo/service/request.rb', line 36

def transmissiontimestamp
  self.class.transmissiontimestamp || Time.now
end