Class: MagicPipe::Transports::Https

Inherits:
Base
  • Object
show all
Defined in:
lib/magic_pipe/transports/https.rb

Instance Attribute Summary collapse

Attributes inherited from Base

#logger, #metrics

Instance Method Summary collapse

Constructor Details

#initialize(config, metrics) ⇒ Https

Returns a new instance of Https.



10
11
12
13
14
15
# File 'lib/magic_pipe/transports/https.rb', line 10

def initialize(config, metrics)
  super(config, metrics)
  @options = @config.https_transport_options
  @conn = build_connection
  @path_builder = @options[:dynamic_path_builder]
end

Instance Attribute Details

#connObject (readonly)

Returns the value of attribute conn.



17
18
19
# File 'lib/magic_pipe/transports/https.rb', line 17

def conn
  @conn
end

Instance Method Details

#submit!(payload, metadata) ⇒ Object

TODO: should this raise an error on failure? So that it can be retried?



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/magic_pipe/transports/https.rb', line 23

def submit!(payload, )
  username, password = basic_auth([:topic])
  @conn.basic_auth(username, password || "x")
  resp = @conn.post do |r|
    path = dynamic_path([:topic])
    r.url(path) if path

    r.body = payload
    r.headers["X-MagicPipe-Sent-At"] = [:time]
    r.headers["X-MagicPipe-Topic"] = [:topic]
    r.headers["X-MagicPipe-Producer"] = [:producer]
  end

  unless resp.success?
    msg = %Q{HTTP response: status=#{resp.status} body="#{resp.body}"}
    raise SubmitFailedError.new(self.class, msg)
  end
end