Class: GustoEmbedded::RecoveryCases

Inherits:
Object
  • Object
show all
Extended by:
T::Sig
Defined in:
lib/gusto_embedded/recoverycases.rb

Instance Method Summary collapse

Constructor Details

#initialize(sdk_config) ⇒ RecoveryCases

Returns a new instance of RecoveryCases.



17
18
19
# File 'lib/gusto_embedded/recoverycases.rb', line 17

def initialize(sdk_config)
  @sdk_configuration = sdk_config
end

Instance Method Details

#get(company_uuid, x_gusto_api_version = nil) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/gusto_embedded/recoverycases.rb', line 23

def get(company_uuid, x_gusto_api_version = nil)
  # get - Get all recovery cases for a company
  # Fetch all recovery cases for a company.
  # 
  # scope: `recovery_cases:read`
  request = ::GustoEmbedded::Operations::GetRecoveryCasesRequest.new(
    
    company_uuid: company_uuid,
    x_gusto_api_version: x_gusto_api_version
  )
  url, params = @sdk_configuration.get_server_details
  base_url = Utils.template_url(url, params)
  url = Utils.generate_url(
    ::GustoEmbedded::Operations::GetRecoveryCasesRequest,
    base_url,
    '/v1/companies/{company_uuid}/recovery_cases',
    request
  )
  headers = Utils.get_headers(request)
  headers['Accept'] = 'application/json'
  headers['user-agent'] = @sdk_configuration.user_agent

  r = @sdk_configuration.client.get(url) do |req|
    req.headers = headers
    security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
    Utils.configure_request_security(req, security) if !security.nil?
  end

  content_type = r.headers.fetch('Content-Type', 'application/octet-stream')

  res = ::GustoEmbedded::Operations::GetRecoveryCasesResponse.new(
    status_code: r.status, content_type: content_type, raw_response: r
  )
  if r.status == 200
    if Utils.match_content_type(content_type, 'application/json')
      out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), T::Array[::GustoEmbedded::Shared::RecoveryCase])
      res.recovery_case_list = out
    end
  elsif r.status == 404
  end

  res
end

#redebit(recovery_case_uuid, x_gusto_api_version = nil) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/gusto_embedded/recoverycases.rb', line 69

def redebit(recovery_case_uuid, x_gusto_api_version = nil)
  # redebit - Initiate a redebit for a recovery case
  # After resolving the underlying bank error, initiate a redebit for an open recovery case. This submission is asynchronous and a successful request responds with a 202 HTTP status.
  # 
  # It may take up to four business days for the ACH debit to process; in the meantime, the status of the recovery case will be in the `initiated_redebit` state. When funds are successfully redebited, the recovery case is transitioned to the `recovered` state.
  # 
  # If the company has exceeded maximum redebit attempts, or if the recovery case is not in a redebitable state, the response will be 422 Unprocessable Entity.
  # 
  # scope: `recovery_cases:write`
  request = ::GustoEmbedded::Operations::RedebitRecoveryCaseRequest.new(
    
    recovery_case_uuid: recovery_case_uuid,
    x_gusto_api_version: x_gusto_api_version
  )
  url, params = @sdk_configuration.get_server_details
  base_url = Utils.template_url(url, params)
  url = Utils.generate_url(
    ::GustoEmbedded::Operations::RedebitRecoveryCaseRequest,
    base_url,
    '/v1/recovery_cases/{recovery_case_uuid}/redebit',
    request
  )
  headers = Utils.get_headers(request)
  headers['Accept'] = 'application/json'
  headers['user-agent'] = @sdk_configuration.user_agent

  r = @sdk_configuration.client.put(url) do |req|
    req.headers = headers
    security = !@sdk_configuration.nil? && !@sdk_configuration.security_source.nil? ? @sdk_configuration.security_source.call : nil
    Utils.configure_request_security(req, security) if !security.nil?
  end

  content_type = r.headers.fetch('Content-Type', 'application/octet-stream')

  res = ::GustoEmbedded::Operations::RedebitRecoveryCaseResponse.new(
    status_code: r.status, content_type: content_type, raw_response: r
  )
  if r.status == 202
  elsif r.status == 404
  elsif r.status == 422
    if Utils.match_content_type(content_type, 'application/json')
      out = Crystalline.unmarshal_json(JSON.parse(r.env.response_body), ::GustoEmbedded::Shared::UnprocessableEntityErrorObject)
      res.unprocessable_entity_error_object = out
    end
  end

  res
end