---

- name: Check Matrix Federation API
  uri:
    url: "{{ matrix_synapse_federation_api_url_endpoint_public }}"
    follow_redirects: false
    validate_certs: "{{ matrix_synapse_self_check_validate_certificates }}"
  register: result_matrix_synapse_federation_api
  ignore_errors: true
  when: matrix_synapse_enabled|bool

- name: Fail if Matrix Federation API not working
  fail:
    msg: "Failed checking Matrix Federation API is up at `{{ matrix_server_fqn_matrix }}` (checked endpoint: `{{ matrix_synapse_federation_api_url_endpoint_public }}`). Is Synapse running? Is port 8448 open in your firewall? Full error: {{ result_matrix_synapse_federation_api }}"
  when: "matrix_synapse_enabled|bool and matrix_synapse_federation_enabled|bool and (result_matrix_synapse_federation_api.failed or 'json' not in result_matrix_synapse_federation_api)"

- name: Fail if Matrix Federation API unexpectedly enabled
  fail:
      msg: "Matrix Federation API is up at `{{ matrix_server_fqn_matrix }}` (checked endpoint: `{{ matrix_synapse_federation_api_url_endpoint_public }}`) despite being disabled."
  when: "matrix_synapse_enabled|bool and not matrix_synapse_federation_enabled|bool and not result_matrix_synapse_federation_api.failed"

- name: Report working Matrix Federation API
  debug:
    msg: "The Matrix Federation API at `{{ matrix_server_fqn_matrix }}` (checked endpoint: `{{ matrix_synapse_federation_api_url_endpoint_public }}`) is working"
  when: "matrix_synapse_enabled|bool and matrix_synapse_federation_enabled|bool"