# encoding: utf-8require_relative'../../../api'moduleGithub# The Release Assets APIclassClient::Repos::Releases::Assets<APIVALID_ASSET_PARAM_NAMES=%w[
name
label
content_type
].freeze# :nodoc:# List assets for a release## @example# github = Github.new# github.repos.releases.assets.list 'owner', 'repo', 'id'# github.repos.releases.assets.list 'owner', 'repo', 'id' { |asset| ... }## @api publicdeflist(*args)arguments(args,required: [:owner,:repo,:id]).paramsresponse=get_request("/repos/#{arguments.owner}/#{arguments.repo}/releases/#{arguments.id}/assets",arguments.params)returnresponseunlessblock_given?response.each{|el|yieldel}endalias:all:list# Get a single release asset## @example# github = Github.new# github.repos.releases.assets.get 'owner', 'repo', 'id'## @api publicdefget(*args)arguments(args,required: [:owner,:repo,:id]).paramsget_request("/repos/#{arguments.owner}/#{arguments.repo}/releases/assets/#{arguments.id}",arguments.params)endalias:find:get# Upload a release asset## @param [Hash] params# @input params [String] :name# Required string. The file name of the asset# @input params [String] :content_type# Required string. The content type of the asset.# Example: “application/zip”.## @example# github = Github.new# github.repos.releases.assets.upload 'owner', 'repo', 'id', 'file-path'# name: "batman.jpg",# content_type: "application/octet-stream"## @api publicdefupload(*args)arguments(args,required: [:owner,:repo,:id,:filepath])dopermitVALID_ASSET_PARAM_NAMESendparams=arguments.paramsunlesstype=params['content_type']type=infer_media(arguments.filepath)endfile=Faraday::UploadIO.new(arguments.filepath,type)options={headers: {content_type: type},endpoint: upload_endpoint,query: {'name'=>params['name']}}params['data']=file.readparams['options']=optionspost_request("/repos/#{arguments.owner}/#{arguments.repo}/releases/#{arguments.id}/assets",params)ensurefile.closeiffileend# Infer media type of the asset#definfer_media(filepath)require'mime/types'types=MIME::Types.type_for(filepath)types.empty??'application/octet-stream':types.firstrescueLoadErrorraiseGithub::Error::UnknownMedia.new(filepath)end# Edit a release asset## Users with push access to the repository can edit a release asset.## @param [Hash] params# @input params [String] :name# Required. The file name of the asset.# @input params [String] :label# An alternate short description of the asset.# Used in place of the filename.## @example# github = Github.new# github.repos.releases.assets.edit 'owner', 'repo', 'id',# name: "foo-1.0.0-osx.zip",# label: "Mac binary"## @api publicdefedit(*args)arguments(args,required: [:owner,:repo,:id])dopermitVALID_ASSET_PARAM_NAMESendpatch_request("/repos/#{arguments.owner}/#{arguments.repo}/releases/assets/#{arguments.id}",arguments.params)endalias:update:edit# Delete a release asset## @example# github = Github.new# github.repos.releases.assets.delete 'owner', 'repo', 'id'## @api publicdefdelete(*args)arguments(args,required: [:owner,:repo,:id])delete_request("/repos/#{arguments.owner}/#{arguments.repo}/releases/assets/#{arguments.id}",arguments.params)endend# Client::Repos::Releases::Assetsend# Github