class_docstr: Salesforce StreamAlert Base App
  
  SalesforceApp will audit 5 types of event logs include 'Console', 'Login',
  'LoginAs', 'Report' and 'ReportExport' for user access audit and data loss
  prevention, although Salesforce provides 42 types of event logs.
  
  This base class will be inherited by different subclasssed based on different
  event types.
  
  Console events:
      contain information about the performance and use of Salesforce Consoles.
  
  Login events:
      contain details about your org's user login history.
  
  LoginAs events:
      contain details about what a Salesforce admin did while logged in as another user.
  
  Report events:
      contain information about what happened when a user ran a report and
      captures report's size.
  
  ReportExport:
      events contain details about reports that a user exported.
docstr: Validate status code from get response
  
  Args:
      resp (Response): The response object from get request
  
  Returns:
      bool: Returns True if status_code is 200. Otherwise returns False,
          except
code: def _validate_status_code(self, resp):
      """Validate status code from get response
  
      Args:
          resp (Response): The response object from get request
  
      Returns:
          bool: Returns True if status_code is 200. Otherwise returns False,
              except
      """
      if resp.status_code == 200:
          return True
      if resp.status_code == 401:
          # The OAuth token used has expired or is invalid.
          # Retry to renew OAuth token
          LOGGER.error(
              "The OAuth token used has expired or is invalid. "
              "Error code %s, error message %s",
              resp.json().get("errorCode", None),
              resp.json().get("message", None),
          )
          self._request_token()
  
          # Get request will retry when SalesforceAppError exception raised
          raise SalesforceAppError
      if (
          resp.status_code == 403
          and resp.json().get("errorCode") == "REQUEST_LIMIT_EXCEEDED"
      ):
          # Exceeded API request limits in your org. Log this information for
          # future reference.
          LOGGER.error("Exceeded API request limits")
          return False
      if resp.status_code == 500:
          # Server internal error. Get request will retry.
          raise SalesforceAppError
      if resp.status_code > 200:
          LOGGER.error(
              "Unexpected status code %d detected, error message %s",
              resp.status_code,
              resp.json(),
          )
          return False
  
imports: import calendar
  from datetime import datetime
  import re
  import time
  import backoff
  import requests
  from .None import AppIntegration, StreamAlertApp, get_logger
label_desc: Use image node_id 8 for calling the SalesforceApp obj's underlying member method code with example usage: obj._validate_status_code(resp) and returns: True, False, False