You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: collect_and_tag_flaky_tests.rb
    path of file: ./repos/uyuni/testsuite/ext-tools
    
    the code of the file until where you have to start completion: # Copyright (c) 2023 SUSE LLC.
# Licensed under the terms of the MIT license.

# Collect all the issues from a GitHub project board column
# and tag the corresponding Cucumber feature files with a given tag
#
# Usage: ruby collect_and_tag_flaky_tests.rb <directory_path>
# Example: ruby collect_and_tag_flaky_tests.rb <repository_path>/testsuite/features

require 'json'
require 'net/http'
require 'netrc'
require 'find'

# Function to fetch issues from a GitHub project board column
def fetch_github_issues(organization, project_number, column, headers)
  after = ''
  graphql_endpoint = URI('https://api.github.com/graphql')
  graphql_query = <<~GRAPHQL
    query($organization: String!, $number: Int!, $after: String) {
      organization(login: $organization) {
        projectV2(number: $number) {
          items(first: 100, after: $after) {
            pageInfo {
     
    
def fetch_github_issues(organization, project_number, column, headers)
  after = ''
  graphql_endpoint = URI('https://api.github.com/graphql')
  graphql_query = <<~GRAPHQL
    query($organization: String!, $number: Int!, $after: String) {
      organization(login: $organization) {
        projectV2(number: $number) {
          items(first: 100, after: $after) {
            pageInfo {
              endCursor
              hasNextPage
            }
            nodes {
              fieldValueByName(name: "Status") {
                ... on ProjectV2ItemFieldSingleSelectValue {
                  name
                  item {
                    content {
                      ... on Issue {
                        title
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  GRAPHQL

  gh_card_titles = []

  loop do
    request_body = {
      query: graphql_query,
      variables: { organization: organization, number: project_number, after: after }
    }.to_json

    http = Net::HTTP.new(graphql_endpoint.host, graphql_endpoint.port)
    http.use_ssl = true
    request = Net::HTTP::Post.new(graphql_endpoint.request_uri)
    request.body = request_body
    headers.each { |key, value| request[key] = value }
    response = http.request(request)

    if response.code == '200'
      parsed_response = JSON.parse(response.body)
      if parsed_response['data']
        items = parsed_response['data']['organization']['projectV2']['items']
        nodes = items['nodes']
        nodes.each do |item|
          status_field = item['fieldValueByName']
          next if status_field['name'] != column

          if status_field && status_field['item'] && status_field['item']['content']
            issue_title = status_field['item']['content']['title']
            gh_card_titles.push(issue_title)
            puts "\e[36mCard found\e[0m => #{issue_title}"
          else
            puts "No data found in the GraphQL response for this item.: #{item}"
          end
        end
        page_info = items['pageInfo']
        break unless page_info && page_info['hasNextPage']

        after = page_info['endCursor']
      else
        puts 'No data found in the GraphQL response.'
      end