From e61a174ae375298af9f03d3900c1b4e2266390cc Mon Sep 17 00:00:00 2001 From: xxq250 Date: Wed, 7 May 2025 11:45:49 +0800 Subject: [PATCH] fixed add rake --- lib/tasks/github_api.rake | 54 ++++++++++++++++++++++++++++++++++++++ public/orgs.xlsx | Bin 0 -> 13826 bytes 2 files changed, 54 insertions(+) create mode 100644 lib/tasks/github_api.rake create mode 100644 public/orgs.xlsx diff --git a/lib/tasks/github_api.rake b/lib/tasks/github_api.rake new file mode 100644 index 000000000..4da3af5fb --- /dev/null +++ b/lib/tasks/github_api.rake @@ -0,0 +1,54 @@ +namespace :github_api do + desc "github_api" + task org: :environment do + file = ENV['file'] || "orgs.xlsx" + user_type = ENV['type'] || "User" + doc = SimpleXlsxReader.open("#{Rails.root}/public/#{file}") + data = doc.sheets.first.rowsm + data.each_with_index do |row, index| + next if index==0 + org = row[3].to_s.gsub("https://github.com/","") + url = URI("https://api.github.com/orgs/#{org}") + https = Net::HTTP.new(url.host, url.port) + https.use_ssl = true + + request = Net::HTTP::Get.new(url) + request["Authorization"] = "Bearer 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" + request["Accept"] = "application/vnd.github+json" + request["X-GitHub-Api-Version"] = "2022-11-28" + + response = https.request(request) + data= JSON.parse(response.read_body) + if data.present? + puts "#{org},#{data["public_repos"]}" + end + + end + # data.each_with_index do |row, index| + # next if index == 0 + # begin + # user = (user_type == "User" ? User.find_by(login: row[1]) : Owner.find_by(login: row[1])) + # project = user.projects.find_by(identifier: row[4]) + # unless project.present? + # p_category = ProjectCategory.find_or_create_by(name: row[6]) + # p_language = ProjectLanguage.find_or_create_by(name: row[7].to_s.split("/")[0]) if row[7] + # p_license = License.find_by(name: row[8]) + # + # mirror_params = { + # user_id: user.id, + # name: row[5], + # description: row[9], + # repository_name: row[4], + # project_category_id: p_category.id, + # project_language_id: p_language&.id, + # clone_addr: row[10] + # } + # Projects::MigrateService.call(user, mirror_params) + # end + # puts "sync outer repository to gitlink Success repo: #{row[5]} username: #{row[0]}" + # rescue Exception => e + # puts "sync outer repository to gitlink Error repo: #{row[5]} username: #{row[0]}, error:#{e}" + # end + # end + end +end \ No newline at end of file diff --git a/public/orgs.xlsx b/public/orgs.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..16f8d4d435254c4e8cadcb7ea923236dec3b650b GIT binary patch literal 13826 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 literal 0 HcmV?d00001