Ruby スクリプト
upload_to_gist.rb
require 'json'
require 'net/http'
# 環境変数 GITHUB_USERNAME に GitHub のユーザ名を設定しておく。
username = ENV['GITHUB_USERNAME']
# 環境変数 GITHUB_PASSWORD に GitHub のパスワードを設定しておく。
password = ENV['GITHUB_PASSWORD']
# コマンドライン引数の第 1 引数にアップロードするファイルのパスを指定する。
filepath = ARGV[0]
content = File.read(filepath)
filename = File.basename(filepath)
uri = URI.parse('https://api.github.com/gists')
request = Net::HTTP::Post.new(uri.path, { 'Content-Type' => 'application/json' })
request.basic_auth(username, password)
request.body = {
# private でアップロードする。public でアップロードしたい場合は true を指定する。
public: false,
files: {
filename => { content: content }
}
}.to_json
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
response = http.request(request)
body = JSON.parse(response.body)
puts("#{filename} を #{body['html_url']} にアップロードしました。")
Python スクリプト
upload_to_gist.py
from requests.auth import HTTPBasicAuth # pip install requests
import json
import os
import requests
import sys
# 環境変数 GITHUB_USERNAME に GitHub のユーザ名を設定しておく。
username = os.getenv('GITHUB_USERNAME')
# 環境変数 GITHUB_PASSWORD に GitHub のパスワードを設定しておく。
password = os.getenv('GITHUB_PASSWORD')
# コマンドライン引数の第 1 引数にアップロードするファイルのパスを指定する。
filepath = sys.argv[1]
content = open(filepath, 'r').read()
filename = os.path.basename(filepath)
payload = {'files': {filename: {'content': content}}}
response = requests.post('https://api.github.com/gists',
data=json.dumps(payload),
auth=HTTPBasicAuth(username, password))
body = response.json()
url = body['html_url']
print(f'{filename} を {url} にアップロードしました。')
使用例
上記の Ruby スクリプト自身を Gist にアップロードする。
$ ruby upload_to_gist.rb upload_to_gist.rb
upload_to_gist.rb を https://gist.github.com/f98fdcbf58539da7f2df69be0cb3bb35 にアップロードしました。
表示された URL にアクセスすると
アップロードできてる
同様に Python スクリプトも試してみる。
$ python upload_to_gist.py upload_to_gist.py
upload_to_gist.py を https://gist.github.com/bc874dc72d0f9a6f2c92c494fc8e04ed にアップロードしました。
表示された URL にアクセスすると
アップロードできてる