Class: MFYNAB::MoneyForward::AccountStatus

Inherits:
Object
  • Object
show all
Defined in:
lib/mfynab/money_forward/account_status.rb

Defined Under Namespace

Classes: Fetcher

Constant Summary collapse

FRESHNESS_LIMIT =

1 day

24 * 60 * 60

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(id_hash:, name:, raw_status:, updated_at:) ⇒ AccountStatus

Returns a new instance of AccountStatus.



74
75
76
77
78
79
# File 'lib/mfynab/money_forward/account_status.rb', line 74

def initialize(id_hash:, name:, raw_status:, updated_at:)
  @id_hash = id_hash
  @name = name
  @raw_status = raw_status
  @updated_at = updated_at
end

Instance Attribute Details

#id_hash ⇒ Object (readonly)

Returns the value of attribute id_hash.



72
73
74
# File 'lib/mfynab/money_forward/account_status.rb', line 72

def id_hash
  @id_hash
end

#key ⇒ Object (readonly)

Returns the value of attribute key.



72
73
74
# File 'lib/mfynab/money_forward/account_status.rb', line 72

def key
  @key
end

#message ⇒ Object (readonly)

Returns the value of attribute message.



72
73
74
# File 'lib/mfynab/money_forward/account_status.rb', line 72

def message
  @message
end

#name ⇒ Object (readonly)

Returns the value of attribute name.



72
73
74
# File 'lib/mfynab/money_forward/account_status.rb', line 72

def name
  @name
end

#raw_status ⇒ Object (readonly)

Returns the value of attribute raw_status.



72
73
74
# File 'lib/mfynab/money_forward/account_status.rb', line 72

def raw_status
  @raw_status
end

#updated_at ⇒ Object (readonly)

Returns the value of attribute updated_at.



72
73
74
# File 'lib/mfynab/money_forward/account_status.rb', line 72

def updated_at
  @updated_at
end

Instance Method Details

#assign_status_data(key:, message: nil) ⇒ Object



81
82
83
84
# File 'lib/mfynab/money_forward/account_status.rb', line 81

def assign_status_data(key:, message: nil)
  @key = key
  @message = message
end

#failed_state? ⇒ Boolean

Returns:

  • (Boolean)


103
104
105
# File 'lib/mfynab/money_forward/account_status.rb', line 103

def failed_state?
  !%i[success processing].include?(key)
end

#invalid_state_warning ⇒ Object



86
87
88
89
90
# File 'lib/mfynab/money_forward/account_status.rb', line 86

def invalid_state_warning
  warning = "The Money Forward account named #{name} is in an invalid state: #{key}"
  warning << " (#{message})" if message
  warning << ". Please handle the issue manually to resume syncing."
end

#outdated? ⇒ Boolean

Returns:

  • (Boolean)


92
93
94
95
96
# File 'lib/mfynab/money_forward/account_status.rb', line 92

def outdated?
  # Require accounts to have been updated in the last day
  # FIXME: make configurable?
  updated_at < Time.now - FRESHNESS_LIMIT
end

#should_update?(update_invalid:) ⇒ Boolean

Returns:

  • (Boolean)


98
99
100
101
# File 'lib/mfynab/money_forward/account_status.rb', line 98

def should_update?(update_invalid:)
  (key == :success && outdated?) ||
    (update_invalid && failed_state?)
end

#trigger_update(session) ⇒ Object



107
108
109
110
111
112
113
# File 'lib/mfynab/money_forward/account_status.rb', line 107

def trigger_update(session)
  session.http_post(
    "/faggregation_queue2/#{id_hash}",
    URI.encode_www_form(commit: "更新"),
    "X-CSRF-Token" => session.csrf_token,
  )
end