isMutatingRequest method

bool isMutatingRequest(
  1. BaseRequest request
)

Determines if an HTTP request is mutating (writes/updates/deletes data).

Note: Firestore REST API uses POST for :runQuery, :runAggregationQuery, and :listCollectionIds, which are read-only operations and must NOT be treated as mutating requests.

Implementation

bool isMutatingRequest(http.BaseRequest request) {
  final method = request.method;
  if (method == 'GET' || method == 'HEAD' || method == 'OPTIONS') {
    return false;
  }

  final path = request.url.path;
  if (method == 'POST' &&
      (path.endsWith(':runQuery') ||
          path.endsWith(':runAggregationQuery') ||
          path.endsWith(':listCollectionIds'))) {
    return false;
  }

  return true;
}