class GemHadar::GitHub::ReleaseCreator
def initialize(owner:, repo:, token:, api_version: '2022-11-28')
def initialize(owner:, repo:, token:, api_version: '2022-11-28') @owner = owner @repo = repo @token = token @api_version = api_version end
def perform(tag_name:, target_commitish:, body:, name: tag_name, draft: false, prerelease: false)
def perform(tag_name:, target_commitish:, body:, name: tag_name, draft: false, prerelease: false) uri = URI("#{self.class.github_api_url}/repos/#{@owner}/#{@repo}/releases") headers = { "Accept" => "application/vnd.github+json", "Authorization" => "Bearer #{@token}", "X-GitHub-Api-Version" => @api_version } data = { tag_name:, target_commitish:, body:, name:, draft:, prerelease:, }.compact req = Net::HTTP::Post.new(uri.request_uri, headers) req.body = JSON(data) response = Net::HTTP.start(uri.host, uri.port, use_ssl: true) do |http| http.request(req) end case response when Net::HTTPSuccess puts "Release created successfully!" response.body else error_msg = "Failed to create release. Status: #{response.code}" raise error_msg end rescue => e warn "Error creating release: #{e.message}" nil end