Class: Interactsh::HttpClient

Inherits:
Object
  • Object
show all
Defined in:
lib/interactsh/http_client.rb

Overview

HTTP client for Interactsh API

Instance Method Summary collapse

Constructor Details

#initialize(server, token) ⇒ HttpClient

Returns a new instance of HttpClient.



6
7
8
9
# File 'lib/interactsh/http_client.rb', line 6

def initialize(server, token)
  @server = server
  @token = token
end

Instance Method Details

#make_poll_request(correlation_id, secret) ⇒ Net::HTTPResponse

Makes the HTTP request to poll for interaction data

Parameters:

  • correlation_id (String)

    The correlation ID to poll for

  • secret (String)

    The secret key

Returns:

  • (Net::HTTPResponse)

    The HTTP response



16
17
18
19
20
21
22
23
24
25
26
# File 'lib/interactsh/http_client.rb', line 16

def make_poll_request(correlation_id, secret)
  uri = URI.parse("https://#{@server}/poll?id=#{correlation_id}&secret=#{secret}")
  http = setup_http_client(uri)

  request = Net::HTTP::Get.new(uri.request_uri)
  apply_headers(request)

  http.request(request)
rescue StandardError => e
  raise HTTPRequestError, "HTTP request error: #{e.message}"
end

#make_register_request(data) ⇒ Net::HTTPResponse

Makes the HTTP request to register a correlation ID

Parameters:

  • data (Hash)

    The data to send

Returns:

  • (Net::HTTPResponse)

    The HTTP response



32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/interactsh/http_client.rb', line 32

def make_register_request(data)
  uri = URI.parse("https://#{@server}/register")
  http = setup_http_client(uri)

  request = Net::HTTP::Post.new(uri.request_uri)
  apply_headers(request, 'Content-Type' => 'application/json')
  request.body = data.to_json

  http.request(request)
rescue StandardError => e
  raise HTTPRequestError, "HTTP request error: #{e.message}"
end

#response_successful?(response) ⇒ Boolean

Checks if the HTTP response was successful

Parameters:

  • response (Net::HTTPResponse, nil)

    The HTTP response

Returns:

  • (Boolean)

    True if response is successful

Raises:

  • (PollError)

    If response is not successful



50
51
52
53
54
# File 'lib/interactsh/http_client.rb', line 50

def response_successful?(response)
  return true if response&.code&.to_i == 200

  handle_error_response(response)
end