Compare commits

..

2 Commits
main ... devel

Author SHA1 Message Date
randomuser e66952360c update the README.md with project goals and license information
- add project goals to readme
- add license declaration to readme
2024-03-24 18:12:16 -05:00
randomuser 224ca9d099 add a shell.nix 2024-03-24 18:06:46 -05:00
34 changed files with 46 additions and 2646 deletions

2
.gitignore vendored
View File

@ -1,2 +0,0 @@
__pycache__/
testing_configuration.cfg

View File

@ -1,3 +0,0 @@
{
"nixEnvSelector.nixFile": "${workspaceFolder}/shell.nix"
}

23
LICENSE
View File

@ -210,3 +210,26 @@ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY C
17. Interpretation of Sections 15 and 16. 17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.
gitea-github-sync
Copyright (C) 2024 rndusr
This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements.
You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see <http://www.gnu.org/licenses/>.

View File

@ -1,11 +1,18 @@
# gitea-github-sync # gitea-github-sync
Automatically mirror from a private code forge to Github, and bidirectionally synchronize issues between two repos synchronize git repos, and associated issues, prs, and other repo metadata
## Implementation notes ## things to do
- [ ] write a nix derivation for [giteapy](https://github.com/dblueai/giteapy)
- [ ] integrate it into the shell.nix
- [ ] define configuration
- [ ] do the main thing
- [ ] standardize the issue, pr, and other event objects
- [ ] write a 'diff' function to return the delta between two objects
- [ ] return a series of api calls to reconcile the problems
- [ ] handle race conditions?
- [ ] write documentation
- The implementation matches up issue numbers, instead of coorelating them with a database or something. This is fine because we're only using this software on repos that have no issues (e.g. are brand new) and so therefore all the issue numbers will line up. For two mirrors with different issues, you'll have to pick one side to keep and another to purge. ## license
licensed agpl. see LICENSE for more details.
## License gitea-github-sync is copyright rndusr, randomuser, stupidcomputer, et. al. 2024
Licensed under the GNU Affero v3 license. (c) 2024 randomuser, stupidcomputer, etc.

View File

@ -1,332 +0,0 @@
from flask import Flask, request, redirect, abort, render_template
import requests
from .webgit import Gitea, Github
from .utils import issue_sentinel, generate_sentinel, create_signature
app = Flask(
__name__,
static_url_path="/bridge/static",
static_folder="./static"
)
app.config.from_envvar('GIT_BRIDGE_SETTINGS')
@app.route("/bridge")
def index():
gitea = Gitea(
api_token=app.config["GITEA_ACCESS_TOKEN"],
instance_name=app.config["GITEA_INSTANCE_DOMAIN"],
)
repos = gitea.get_user_repos().json()
output = []
for repo in repos:
if not repo["private"]:
output.append({
"name": repo["name"],
"desc": repo["description"],
"url": repo["html_url"],
})
return render_template("index.html", repos=output)
@app.route("/bridge/endpoints/gitea/repo", methods=["POST"])
def gitea_handle_repo_action():
"""
Our plan of action for handling these events:
- ignore deleting repositories -- this is a potentially destructive operation
that *only* *the* *user* *should* *do*
- create a cooresponding repo on github
- create a push mirror to github so pushes to gitea get to github
- create webhooks for issues (and in the future, pull requests) on both
Gitea and Github ends
"""
gitea = Gitea(
api_token=app.config["GITEA_ACCESS_TOKEN"],
instance_name=app.config["GITEA_INSTANCE_DOMAIN"]
)
github = Github(app.config["GITHUB_ACCESS_TOKEN"])
data = request.json
try:
repository = data["repository"]
repo_action = data["action"]
repo_id = repository["id"]
repo_owner = repository["owner"]["login"]
repo_name = repository["name"]
repo_description = repository["description"]
except KeyError:
abort(400) # the data isn't formatted correctly
if repo_action == "created":
new_repo = github.create_repo(
repo_name, repo_description
)
new_repo_url = new_repo.json()["html_url"]
gitea.add_push_target(
repo_owner, repo_name, new_repo_url, repo_owner,
app.config["GITHUB_ACCESS_TOKEN"]
)
gitea.force_push_target(
repo_owner,
repo_name
)
github.create_webhook(
repo_owner,
repo_name,
"https://{}/bridge/endpoints/github/issue".format(
app.config["GITEA_INSTANCE_DOMAIN"]
),
["issues", "issue_comment"]
)
gitea.create_webhook(
repo_owner,
repo_name,
"https://{}/bridge/endpoints/gitea/issue".format(
app.config["GITEA_INSTANCE_DOMAIN"]
),
["issues", "issue_comment"]
)
elif repo_action == "deleted":
github.delete_repo(repo_owner, repo_name)
return ''
@app.route("/bridge/endpoints/gitea/issue", methods=["POST"])
def gitea_handle_issue_action():
"""
firstly, check if the sentinal is in the issue body
- if it is, then stop processing the event
(we don't want infinite loops)
if we've opened an issue:
- create a new one on the Github side
- make it relate to the Gitea one
- make the Gitea one related to the Github one
if we've commented:
- add a comment to the cooresponding Github issue
if we've closed:
- add a cooresponding comment and close the Github issue
"""
gitea = Gitea(
api_token=app.config["GITEA_ACCESS_TOKEN"],
instance_name=app.config["GITEA_INSTANCE_DOMAIN"]
)
github = Github(app.config["GITHUB_ACCESS_TOKEN"])
data = request.json
try:
event_type = data["action"]
repo_owner = data["repository"]["owner"]["login"]
repo_name = data["repository"]["name"]
issue_user = data["issue"]["user"]["login"]
issue_user_url = "https://{}/{}".format(
app.config["GITEA_INSTANCE_DOMAIN"],
issue_user,
)
issue_number = data["issue"]["number"]
if event_type == "opened": # new issue created
event_title = data["issue"]["title"]
event_body = data["issue"]["body"]
elif event_type == "created": # new comment on that issue
event_title = None
event_body = data["comment"]["body"]
elif event_type == "closed": # issue closed
event_title = None
event_body = data["issue"]["body"]
event_url = data["issue"]["url"]
except KeyError as e:
print(e, type(e))
abort(400) # the data isn't formatted correctly
issue_sentinel_present = issue_sentinel in event_body
if event_type == "opened" and not issue_sentinel_present:
issue_footer = create_signature(
issue_user,
issue_user_url,
app.config["GITEA_INSTANCE_DOMAIN"],
event_url,
)
issue_body = "\n\n".join([
event_body,
issue_footer
])
new_issue = github.create_issue(
repo_owner,
repo_name,
event_title,
issue_body,
)
returned_data = new_issue.json()
issue_comment_body = create_signature(
"mirrored",
returned_data["html_url"],
app.config["GITEA_INSTANCE_DOMAIN"],
returned_data["url"],
)
gitea.leave_comment_on_issue_by_number(
repo_owner,
repo_name,
issue_number,
issue_comment_body,
)
elif event_type == "created" and not issue_sentinel_present:
comment_user = data["comment"]["user"]["login"]
comment_user_url = "https://{}/{}".format(
app.config["GITEA_INSTANCE_DOMAIN"],
comment_user,
)
comment_footer = create_signature(
comment_user,
comment_user_url,
app.config["GITEA_INSTANCE_DOMAIN"],
event_url,
)
comment_body = "\n\n".join([
event_body,
comment_footer,
])
github.leave_comment_on_issue_by_number(
repo_owner,
repo_name,
issue_number,
comment_body,
)
elif event_type == "closed":
github.close_issue_by_number(
repo_owner,
repo_name,
issue_number,
)
return ''
@app.route("/bridge/endpoints/github/issue", methods=["POST"])
def github_handle_issue_action():
gitea = Gitea(
api_token=app.config["GITEA_ACCESS_TOKEN"],
instance_name=app.config["GITEA_INSTANCE_DOMAIN"]
)
github = Github(app.config["GITHUB_ACCESS_TOKEN"])
data = request.json
try:
event_type = data["action"]
repo_owner = data["repository"]["owner"]["login"]
repo_name = data["repository"]["name"]
issue_user = data["issue"]["user"]["login"]
issue_user_url = "https://github.com/{}".format(
issue_user,
)
issue_number = data["issue"]["number"]
if event_type == "opened": # new issue created
event_title = data["issue"]["title"]
event_body = data["issue"]["body"]
elif event_type == "created": # new comment on that issue
event_title = None
event_body = data["comment"]["body"]
elif event_type == "closed": # issue closed
event_title = None
event_body = data["issue"]["body"]
if not event_body: event_body = ""
event_url = data["issue"]["url"]
except KeyError as e:
print(e, type(e))
abort(400) # the data isn't formatted correctly
issue_sentinel_present = issue_sentinel in event_body
if event_type == "opened" and not issue_sentinel_present:
issue_footer = create_signature(
issue_user,
issue_user_url,
app.config["GITEA_INSTANCE_DOMAIN"],
event_url,
)
issue_body = "\n\n".join([
event_body,
issue_footer
])
new_issue = gitea.create_issue(
repo_owner,
repo_name,
event_title,
issue_body
)
returned_data = new_issue.json()
issue_comment_body = create_signature(
"mirrored",
returned_data["html_url"],
app.config["GITEA_INSTANCE_DOMAIN"],
returned_data["url"],
)
github.leave_comment_on_issue_by_number(
repo_owner,
repo_name,
issue_number,
issue_comment_body,
)
elif event_type == "created" and not issue_sentinel_present:
comment_user = data["comment"]["user"]["login"]
comment_user_url = "https://github.com/{}".format(
comment_user,
)
comment_footer = create_signature(
comment_user,
comment_user_url,
app.config["GITEA_INSTANCE_DOMAIN"],
event_url,
)
comment_body = "\n\n".join([
event_body,
comment_footer,
])
gitea.leave_comment_on_issue_by_number(
repo_owner,
repo_name,
issue_number,
comment_body
)
elif event_type == "closed":
gitea.close_issue_by_number(
repo_owner,
repo_name,
issue_number,
)
return ''

View File

@ -1,151 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.92381453"
inkscape:cx="361.0032"
inkscape:cy="323.65804"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1"><pattern
inkscape:collect="always"
xlink:href="#pattern2853"
id="pattern2864"
patternTransform="translate(42.23939,37.38575)" /><pattern
inkscape:collect="always"
xlink:href="#pattern2838"
id="pattern2845"
patternTransform="translate(44.04167,18.04166)" /><linearGradient
id="linearGradient2826"><stop
style="stop-color:#dfb585;stop-opacity:1;"
offset="0"
id="stop2828" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2830" /></linearGradient><linearGradient
id="linearGradient2791"><stop
style="stop-color:#4d95ee;stop-opacity:1;"
offset="0"
id="stop2793" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2795" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2791"
id="linearGradient2797"
x1="213.11461"
y1="113.20445"
x2="213.11461"
y2="351.95709"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,6)" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2826"
id="linearGradient2832"
x1="193.60881"
y1="116.54642"
x2="193.60881"
y2="345.21436"
gradientUnits="userSpaceOnUse" /><pattern
patternUnits="userSpaceOnUse"
width="31.916666"
height="9.916667"
patternTransform="translate(19.375,-47.29167)"
id="pattern2838"><rect
y="0.625"
x="0.625"
height="8.666667"
width="30.666666"
id="rect2836"
style="opacity:1;fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /></pattern><pattern
patternUnits="userSpaceOnUse"
width="34.958335"
height="9.916667"
patternTransform="translate(44.04167,18.04167)"
id="pattern2853"><g
id="g2849"
transform="translate(-44.04167,-18.04167)"><rect
style="fill:url(#pattern2845);stroke:none"
width="31.916666"
height="9.916667"
x="44.041668"
y="18.041666"
id="rect2841" /><rect
style="opacity:0;fill:#00cd0f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2847"
width="9.166667"
height="2.5833333"
x="69.833336"
y="21.916666" /></g></pattern></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><g
id="g4"
transform="matrix(0.15875,0,0,0.15875,-3.8018304,-0.36145313)"> <path
id="teabag"
style="fill:#ffffff"
d="M 395.9,484.2 269,423.2 c -12.5,-6 -17.9,-21.2 -11.8,-33.8 l 61,-126.9 c 6,-12.5 21.2,-17.9 33.8,-11.8 17.2,8.3 27.1,13 27.1,13 l -0.1,-109.2 16.7,-0.1 0.1,117.1 c 0,0 57.4,24.2 83.1,40.1 3.7,2.3 10.2,6.8 12.9,14.4 2.1,6.1 2,13.1 -1,19.3 l -61,126.9 c -6.2,12.7 -21.4,18.1 -33.9,12 z" /> <g
id="g3"
transform="translate(-3.8,-19.6)"> <g
id="g2"> <path
style="fill:#609926"
d="m 622.7,149.8 c -4.1,-4.1 -9.6,-4 -9.6,-4 0,0 -117.2,6.6 -177.9,8 -13.3,0.3 -26.5,0.6 -39.6,0.7 0,39.1 0,78.2 0,117.2 -5.5,-2.6 -11.1,-5.3 -16.6,-7.9 0,-36.4 -0.1,-109.2 -0.1,-109.2 -29,0.4 -89.2,-2.2 -89.2,-2.2 0,0 -141.4,-7.1 -156.8,-8.5 -9.8,-0.6 -22.5,-2.1 -39,1.5 -8.7,1.8 -33.5,7.4 -53.8,26.9 -45,40.1 -33.5,103.9 -32.1,113.5 1.7,11.7 6.9,44.2 31.7,72.5 45.8,56.1 144.4,54.8 144.4,54.8 0,0 12.1,28.9 30.6,55.5 25,33.1 50.7,58.9 75.7,62 63,0 188.9,-0.1 188.9,-0.1 0,0 12,0.1 28.3,-10.3 14,-8.5 26.5,-23.4 26.5,-23.4 0,0 12.9,-13.8 30.9,-45.3 5.5,-9.7 10.1,-19.1 14.1,-28 0,0 55.2,-117.1 55.2,-231.1 -1.1,-34.5 -9.6,-40.6 -11.6,-42.6 z M 125.6,353.9 c -25.9,-8.5 -36.9,-18.7 -36.9,-18.7 0,0 -19.1,-13.4 -28.7,-39.8 -16.5,-44.2 -1.4,-71.2 -1.4,-71.2 0,0 8.4,-22.5 38.5,-30 13.8,-3.7 31,-3.1 31,-3.1 0,0 7.1,59.4 15.7,94.2 7.2,29.2 24.8,77.7 24.8,77.7 0,0 -26.1,-3.1 -43,-9.1 z m 300.3,107.6 c 0,0 -6.1,14.5 -19.6,15.4 -5.8,0.4 -10.3,-1.2 -10.3,-1.2 0,0 -0.3,-0.1 -5.3,-2.1 l -112.9,-55 c 0,0 -10.9,-5.7 -12.8,-15.6 -2.2,-8.1 2.7,-18.1 2.7,-18.1 L 322,273 c 0,0 4.8,-9.7 12.2,-13 0.6,-0.3 2.3,-1 4.5,-1.5 8.1,-2.1 18,2.8 18,2.8 L 467.4,315 c 0,0 12.6,5.7 15.3,16.2 1.9,7.4 -0.5,14 -1.8,17.2 -6.3,15.4 -55,113.1 -55,113.1 z"
id="path1" /> <path
style="fill:#609926"
d="m 326.8,380.1 c -8.2,0.1 -15.4,5.8 -17.3,13.8 -1.9,8 2,16.3 9.1,20 7.7,4 17.5,1.8 22.7,-5.4 5.1,-7.1 4.3,-16.9 -1.8,-23.1 l 24,-49.1 c 1.5,0.1 3.7,0.2 6.2,-0.5 4.1,-0.9 7.1,-3.6 7.1,-3.6 4.2,1.8 8.6,3.8 13.2,6.1 4.8,2.4 9.3,4.9 13.4,7.3 0.9,0.5 1.8,1.1 2.8,1.9 1.6,1.3 3.4,3.1 4.7,5.5 1.9,5.5 -1.9,14.9 -1.9,14.9 -2.3,7.6 -18.4,40.6 -18.4,40.6 -8.1,-0.2 -15.3,5 -17.7,12.5 -2.6,8.1 1.1,17.3 8.9,21.3 7.8,4 17.4,1.7 22.5,-5.3 5,-6.8 4.6,-16.3 -1.1,-22.6 1.9,-3.7 3.7,-7.4 5.6,-11.3 5,-10.4 13.5,-30.4 13.5,-30.4 0.9,-1.7 5.7,-10.3 2.7,-21.3 -2.5,-11.4 -12.6,-16.7 -12.6,-16.7 -12.2,-7.9 -29.2,-15.2 -29.2,-15.2 0,0 0,-4.1 -1.1,-7.1 -1.1,-3.1 -2.8,-5.1 -3.9,-6.3 4.7,-9.7 9.4,-19.3 14.1,-29 -4.1,-2 -8.1,-4 -12.2,-6.1 -4.8,9.8 -9.7,19.7 -14.5,29.5 -6.7,-0.1 -12.9,3.5 -16.1,9.4 -3.4,6.3 -2.7,14.1 1.9,19.8 -8.2,16.8 -16.4,33.6 -24.6,50.4 z"
id="path2" /> </g> </g> </g><g
id="g1"
transform="matrix(0.50182484,0,0,0.35249319,-51.630035,18.972095)"><path
id="path2799"
style="fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="m 341.66665,225.23539 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 L 418.05691,30.666667 H -18.056812 L -47.00002,120.00004 c 0,-29.072012 23.594674,-52.666688 52.666691,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.222179,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.22219,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535"
sodipodi:nodetypes="cssccccssccsssccsssc" /><path
style="opacity:0.7;fill:url(#linearGradient2797);fill-opacity:1;fill-rule:evenodd;stroke:#447cc1;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -6.6627813,217.65413 c 0,-28.37004 -13.1115797,-86.58823 0.4458511,-86.32344 84.6560832,1.65344 142.3439102,8.5 158.4814802,9.29365 32.27513,1.5873 58.20106,-4.23281 97.8836,-6.34921 39.68254,-2.1164 74.60317,3.70371 107.93651,3.17461 33.33333,-0.52911 37.43386,-3.96826 49.73545,-2.64551 24.08055,2.58931 3.8201,42.09524 3.8201,86.01059"
id="path1884"
sodipodi:nodetypes="csssssc" /><path
style="fill:url(#linearGradient2832);fill-opacity:1;fill-rule:evenodd;stroke:#784e1f;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 421.31443,97.523845 c 0,45.301975 0.5609,104.044905 0.5609,134.045145 -16.37801,0 -353.393449,-0.38532 -443.099849,-0.38532 0,-56.46314 2.984043,-109.38808 2.984043,-131.793769 18.28607177,11.882619 77.988729,47.037439 100.205554,47.891979 20.738622,0.25077 67.905562,22.79584 87.636022,28.15857 27.56341,2.34862 53.84138,-12.31897 81.50416,-8.10339 24.90771,1.58959 53.62348,2.5399 72.71854,-17.45229 15.32619,-12.89213 35.5339,-14.37299 53.87064,-18.56564 13.90946,-6.12504 36.38842,-20.82213 43.61999,-33.795285 z"
id="path1875"
sodipodi:nodetypes="cccccccccc" /><rect
style="opacity:1;fill:url(#pattern2864);fill-opacity:1;fill-rule:nonzero;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2834"
width="445.33334"
height="10"
x="-24.468958"
y="17.34409" /></g></g><metadata
id="metadata1"><rdf:RDF><cc:Work
rdf:about=""><cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,130 +0,0 @@
:root { /* stolen from gitea */
--bg-color: rgb(32, 36, 48);
--lighter-bg: rgb(48, 51, 64);
--top-bar: rgb(35, 40, 52);
--reg-text: rgb(203, 208, 218);
--links: rgb(135, 171, 99);
--border-color: rgb(82, 87, 103);
--fonts-regular: -apple-system, "Segoe UI", system-ui, Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", "Twemoji Mozilla"
}
div#navbar {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
background-color: var(--top-bar);
border-style: solid;
border-width: 0px 0px 0.9px 0px;
border-bottom-color: var(--border-color);
gap: 0.5em;
padding-left: 0.5em;
}
div#container {
display: flex;
flex-direction: column;
margin-left: 0.5em;
margin-right: 0.5em;
margin-bottom: 0.5em;
padding: 0.25em;
gap: 0.5em;
}
img {
height: 3em;
}
.navelem {
margin: 0.4em;
display: flex;
justify-content: center;
align-items: center;
}
body {
background-color: var(--bg-color);
color: var(--reg-text);
font-family: var(--fonts-regular);
margin: 0px;
display: flex;
flex-direction: column;
}
a {
color: var(--links);
text-decoration: none;
}
a:hover {
text-decoration: underline dotted;
}
.repodisplay {
display: flex;
flex-direction: row;
background-color: var(--lighter-bg);
padding: 0.5em;
border: 0.9px;
border-style: solid;
border-radius: 5px;
border-color: var(--border-color);
gap: 2px;
}
div.navelem {
padding-left: 0.5em;
padding-right: 0.5em;
border-radius: 5px;
}
div.navelem > a {
color: var(--reg-text);
}
div.navelem > a:hover {
text-decoration: none;
}
div.navelem:hover {
color: var(--reg-text);
background-color: rgba(255, 255, 255, 0.55);
}
#title {
font-size: 4em;
font-weight: 400;
text-align: center;
}
#small {
vertical-align: top;
}
#titlespan {
width: 100%;
padding-top: 0.5em;
}
.reponame {
font-size: 2em;
}
.mainrepoinfo {
display: flex;
flex-direction: column;
}
.repostatusarea {
margin-left: auto;
display: flex;
flex-direction: column;
}

View File

@ -1,24 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>gitweb bridge</title>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charset="UTF-8" />
<link rel="stylesheet" href="{{ url_for('static', filename='main.css') }}">
</head>
<body>
<div id="navbar">
<div class="navelem">
<a href="/bridge">
<img src="{{ url_for('static', filename='logo.svg') }}" />
</a>
</div>
<div class="navelem">
<a href="/">Back to Gitea</a>
</div>
</div>
<div id="container">
{% block content %}{% endblock %}
</div>
</body>
</html>

View File

@ -1,26 +0,0 @@
{% extends 'base.html' %}
{% block content %}
<div id="titlespan">
<span id="title">bridge</span> <span id="small"><a href="https://git.beepboop.systems/stupidcomputer/gitea-github-sync"><i>[what is this?]</i></a></span>
</div>
{% for repo in repos %}
<div class="repodisplay">
<div class="mainrepoinfo">
<a href="{{ repo.url }}"><span class="reponame">{{ repo.name }}</span></a>
<span class="repodescription"><i>{{ repo.desc }}</i></span>
</div>
<div class="repostatusarea">
<span class="repostatus">active</span>
<a href="/bridge/{{ repo.name }}">[status]</a>
</div>
</div>
{% endfor %}
{% endblock %}

View File

@ -1,40 +0,0 @@
import base64
def to_base64(s: str) -> str:
return base64.b64encode(
s.encode("utf-8")
).decode("utf-8")
def from_base64(s: str) -> str:
return base64.b64decode(
s.encode("utf-8")
).decode("utf-8")
issue_sentinel = "GITEA_GITHUB_ISSUE_SYNC_SENTINEL"
def generate_sentinel(url: str) -> str:
return ' '.join([issue_sentinel, to_base64(url)])
def create_signature(
username: str,
username_url: str,
domain_base: str,
url_to_encode: str,
):
return """
---
[{}]({}) via [gitea-github-sync](https://{}/bridge/about)
<details>
<summary>Internal information</summary>
{}
</details>
""".format(
username,
username_url,
domain_base,
generate_sentinel(url_to_encode),
)

View File

@ -1,201 +0,0 @@
from typing import Any
from dataclasses import dataclass, field
import requests
from requests import Request, Session
from requests.exceptions import HTTPError
from flask import abort
@dataclass
class WebgitClient:
"""
A quite thin wrapper around various code forges' REST APIs.
Designed to be subclassed.
"""
api_token: str
headers: Any = field(init=False)
api_prefix: str = field(init=False)
def _post_request(self, request_obj):
try:
request_obj.raise_for_status()
except HTTPError as e:
print("An exception occured: {}({})".format(
type(e).__name__, e
))
abort(500)
def _request_wrapper(self, method, *args, **kwargs):
s = Session()
r = Request(method, *args, **kwargs, headers=self.headers)
prepped = s.prepare_request(r)
settings = s.merge_environment_settings(prepped.url, {}, None, None, None)
r = s.send(prepped, **settings)
self._post_request(r)
return r
def get(self, *args, **kwargs):
return self._request_wrapper("GET", *args, **kwargs)
def post(self, *args, **kwargs):
return self._request_wrapper("POST", *args, **kwargs)
def patch(self, *args, **kwargs):
return self._request_wrapper("PATCH", *args, **kwargs)
def delete(self, *args, **kwargs):
return self._request_wrapper("DELETE", *args, **kwargs)
def create_repo(self, name, description):
return self.post(
self.api_prefix + "/user/repos",
json={
"name": name,
"description": description,
},
)
def create_issue(self, owner, repo_name, title, body):
return self.post(
self.api_prefix + "/repos/{}/{}/issues".format(
owner,
repo_name,
),
json={
"title": title,
"body": body,
},
)
def leave_comment_on_issue_by_number(self, owner, repo_name, issue_number, body):
return self.post(
self.api_prefix + "/repos/{}/{}/issues/{}/comments".format(
owner,
repo_name,
issue_number,
),
json={
"body": body,
},
)
def leave_comment_on_issue_by_url(self, url, body):
return self.post(
url + "/comments",
json={
"body": body,
},
)
def close_issue_by_number(self, owner, repo_name, issue_number):
return self.patch(
self.api_prefix + "/repos/{}/{}/issues/{}".format(
owner,
repo_name,
issue_number,
),
json={
"state": "closed",
},
)
def close_issue_by_url(self, url):
return self.patch(
url,
json={
"state": "closed",
},
)
def delete_repo(self, owner, repo_name):
return self.delete(
self.api_prefix + "/repos/{}/{}".format(owner, repo_name)
)
@dataclass
class Github(WebgitClient):
"""
A quite thin wrapper around Github's REST API.
"""
def __post_init__(self):
self.headers = {
"Accept": "application/vnd.github+json",
"Authorization": "token " + self.api_token,
"X-GitHub-Api-Version": "2022-11-28",
}
self.api_prefix = "https://api.github.com"
def create_webhook(self, owner, repo_name, http_endpoint, events: list[str]):
return self.post(
self.api_prefix + "/repos/{}/{}/hooks".format(
owner,
repo_name,
),
json={
"name": "web",
"config": {
"url": http_endpoint,
"content_type": "json",
},
"events": events,
},
)
@dataclass
class Gitea(WebgitClient):
"""
A quite thin wrapper around Gitea's REST API.
"""
instance_name: str
def __post_init__(self):
self.headers = {
"Authorization": "token " + self.api_token,
}
self.api_prefix = "https://{}/api/v1".format(self.instance_name)
def add_push_target(self, owner, repo_name, address, username, password):
return self.post(
self.api_prefix + "/repos/{}/{}/push_mirrors".format(
owner, repo_name
),
json={
"interval": "8h0m0s",
"remote_address": address,
"remote_password": password,
"remote_username": username,
"sync_on_commit": True,
},
)
def force_push_target(self, owner, repo_name):
return self.post(
self.api_prefix + "/repos/{}/{}/push_mirrors-sync".format(
owner,
repo_name
),
)
def create_webhook(self, owner, repo_name, http_endpoint, events: list[str]):
return self.post(
self.api_prefix + "/repos/{}/{}/hooks".format(
owner,
repo_name,
),
json={
"active": True,
"config": {
"url": http_endpoint,
"content_type": "json",
},
"events": events,
"type": "gitea",
},
)
def get_user_repos(self):
return self.get(
self.api_prefix + "/user/repos"
)

View File

@ -1,4 +0,0 @@
SECRET_KEY="replace_me"
GITHUB_ACCESS_TOKEN="replace_me"
GITEA_ACCESS_TOKEN="replace_me"
GITEA_INSTANCE_DOMAIN="git.beepboop.systems"

View File

@ -1,19 +0,0 @@
{ lib, pkgs, config, ... }:
let
cfg = config.services.gitea-github-bridge;
appEnv = pkgs.python3.withPackages (p: with p; [ waitress (callPackage ./bridge/default.nix {}) ]);
in {
options.services.gitea-github-bridge = {
enable = lib.mkEnableOption "Enable the Gitea-Github bridge";
};
config = lib.mkIf cfg.enable {
systemd.services.gitea-github-bridge = {
wantedBy = [ "multi-user.target" ];
serviceConfig = {
ExecStart = "${appEnv}/bin/waitress-serve --port=8041 bridge:app";
StandardOutput = "journal";
};
};
};
}

View File

@ -1,20 +0,0 @@
{ pkgs, pythonPackages ? (import <nixpkgs> {}).python3Packages }:
pythonPackages.buildPythonPackage {
name = "gitea-github-bridge";
src = ./bridge;
propagatedBuildInputs = [ pythonPackages.flask pythonPackages.requests ];
installPhase = ''
runHook preInstall
mkdir -p $out/${pythonPackages.python.sitePackages}
cp -r . $out/${pythonPackages.python.sitePackages}/bridge
runHook postInstall
'';
shellHook = "export FLASK_APP=bridge";
format = "other";
}

View File

@ -1,167 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
id="svg2"
sodipodi:version="0.32"
inkscape:version="0.44"
width="400"
height="200"
version="1.0"
sodipodi:docbase="D:\wiki_svg"
sodipodi:docname="Bridgedrawing.png.svg">
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs5">
<pattern
inkscape:collect="always"
xlink:href="#pattern2853"
id="pattern2864"
patternTransform="translate(42.23939,37.38575)" />
<pattern
inkscape:collect="always"
xlink:href="#pattern2838"
id="pattern2845"
patternTransform="translate(44.04167,18.04166)" />
<linearGradient
id="linearGradient2826">
<stop
style="stop-color:#dfb585;stop-opacity:1;"
offset="0"
id="stop2828" />
<stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2830" />
</linearGradient>
<linearGradient
id="linearGradient2791">
<stop
style="stop-color:#4d95ee;stop-opacity:1;"
offset="0"
id="stop2793" />
<stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2795" />
</linearGradient>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2791"
id="linearGradient2797"
x1="213.11461"
y1="113.20445"
x2="213.11461"
y2="351.95709"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,6)" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2826"
id="linearGradient2832"
x1="193.60881"
y1="116.54642"
x2="193.60881"
y2="345.21436"
gradientUnits="userSpaceOnUse" />
<pattern
patternUnits="userSpaceOnUse"
width="31.916666"
height="9.916667"
patternTransform="translate(19.375,-47.29167)"
id="pattern2838">
<rect
y="0.625"
x="0.625"
height="8.666667"
width="30.666666"
id="rect2836"
style="opacity:1;fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
</pattern>
<pattern
patternUnits="userSpaceOnUse"
width="34.958335"
height="9.916667"
patternTransform="translate(44.04167,18.04167)"
id="pattern2853">
<g
id="g2849"
transform="translate(-44.04167,-18.04167)">
<rect
style="fill:url(#pattern2845);stroke:none"
width="31.916666"
height="9.916667"
x="44.041668"
y="18.041666"
id="rect2841" />
<rect
style="opacity:0;fill:#00cd0f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2847"
width="9.166667"
height="2.5833333"
x="69.833336"
y="21.916666" />
</g>
</pattern>
</defs>
<sodipodi:namedview
inkscape:window-height="632"
inkscape:window-width="853"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
guidetolerance="10.0"
gridtolerance="10.0"
objecttolerance="10.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showborder="true"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:zoom="0.1875"
inkscape:cx="173.32657"
inkscape:cy="364.01333"
inkscape:window-x="3"
inkscape:window-y="60"
inkscape:current-layer="svg2" />
<path
id="path2799"
style="fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.2500006;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="M 341.66665,225.23539 C 341.66665,212.34027 341.66665,134.53605 341.66665,120.00004 C 341.66665,90.928028 365.26132,67.333352 394.33334,67.333352 C 423.40535,67.333352 447.00002,90.928028 447.00002,120.00004 L 418.05691,30.666667 L -18.056812,30.666667 L -47.00002,120.00004 C -47.00002,90.928028 -23.405346,67.333352 5.666671,67.333352 C 34.738681,67.333352 58.333351,90.928028 58.333351,120.00004 C 58.333351,134.53605 58.333351,212.94015 58.333351,225.23539 M 82.55553,225.23539 C 82.55553,212.34027 82.55553,134.53605 82.55553,120.00004 C 82.55553,90.928028 106.1502,67.333352 135.22222,67.333352 C 164.29423,67.333352 187.8889,90.928028 187.8889,120.00004 C 187.8889,134.53605 187.8889,212.94015 187.8889,225.23539 M 212.11109,225.23539 C 212.11109,212.34027 212.11109,134.53605 212.11109,120.00004 C 212.11109,90.928028 235.70576,67.333352 264.77778,67.333352 C 293.84979,67.333352 317.44446,90.928028 317.44446,120.00004 C 317.44446,134.53605 317.44446,212.94015 317.44446,225.23539"
sodipodi:nodetypes="cssccccssccsssccsssc" />
<path
style="opacity:0.7;fill:url(#linearGradient2797);fill-opacity:1;fill-rule:evenodd;stroke:#447cc1;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M -6.6627813,217.65413 C -6.6627813,189.28409 -19.774361,131.0659 -6.2169302,131.33069 C 78.439153,132.98413 136.12698,139.83069 152.26455,140.62434 C 184.53968,142.21164 210.46561,136.39153 250.14815,134.27513 C 289.83069,132.15873 324.75132,137.97884 358.08466,137.44974 C 391.41799,136.92063 395.51852,133.48148 407.82011,134.80423 C 431.90066,137.39354 411.64021,176.89947 411.64021,220.81482"
id="path1884"
sodipodi:nodetypes="csssssc" />
<path
style="fill:url(#linearGradient2832);fill-opacity:1.0;fill-rule:evenodd;stroke:#784e1f;stroke-width:1.00000012px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 421.31443,97.523845 C 421.31443,142.82582 421.87533,201.56875 421.87533,231.56899 C 405.49732,231.56899 68.481881,231.18367 -21.224519,231.18367 C -21.224519,174.72053 -18.240476,121.79559 -18.240476,99.389901 C 0.045595773,111.27252 59.748253,146.42734 81.965078,147.28188 C 102.7037,147.53265 149.87064,170.07772 169.6011,175.44045 C 197.16451,177.78907 223.44248,163.12148 251.10526,167.33706 C 276.01297,168.92665 304.72874,169.87696 323.8238,149.88477 C 339.14999,136.99264 359.3577,135.51178 377.69444,131.31913 C 391.6039,125.19409 414.08286,110.497 421.31443,97.523845 z "
id="path1875"
sodipodi:nodetypes="cccccccccc" />
<rect
style="opacity:1;fill:url(#pattern2864);fill-opacity:1;fill-rule:nonzero;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2834"
width="445.33334"
height="10"
x="-24.468958"
y="17.34409" />
</svg>

Before

Width:  |  Height:  |  Size: 7.4 KiB

View File

@ -1 +0,0 @@
<svg version="1.1" id="main_outline" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" style="enable-background:new 0 0 640 640;" xml:space="preserve" viewBox="5.67 143.05 628.65 387.55"> <g> <path id="teabag" style="fill:#FFFFFF" d="M395.9,484.2l-126.9-61c-12.5-6-17.9-21.2-11.8-33.8l61-126.9c6-12.5,21.2-17.9,33.8-11.8 c17.2,8.3,27.1,13,27.1,13l-0.1-109.2l16.7-0.1l0.1,117.1c0,0,57.4,24.2,83.1,40.1c3.7,2.3,10.2,6.8,12.9,14.4 c2.1,6.1,2,13.1-1,19.3l-61,126.9C423.6,484.9,408.4,490.3,395.9,484.2z"></path> <g> <g> <path style="fill:#609926" d="M622.7,149.8c-4.1-4.1-9.6-4-9.6-4s-117.2,6.6-177.9,8c-13.3,0.3-26.5,0.6-39.6,0.7c0,39.1,0,78.2,0,117.2 c-5.5-2.6-11.1-5.3-16.6-7.9c0-36.4-0.1-109.2-0.1-109.2c-29,0.4-89.2-2.2-89.2-2.2s-141.4-7.1-156.8-8.5 c-9.8-0.6-22.5-2.1-39,1.5c-8.7,1.8-33.5,7.4-53.8,26.9C-4.9,212.4,6.6,276.2,8,285.8c1.7,11.7,6.9,44.2,31.7,72.5 c45.8,56.1,144.4,54.8,144.4,54.8s12.1,28.9,30.6,55.5c25,33.1,50.7,58.9,75.7,62c63,0,188.9-0.1,188.9-0.1s12,0.1,28.3-10.3 c14-8.5,26.5-23.4,26.5-23.4s12.9-13.8,30.9-45.3c5.5-9.7,10.1-19.1,14.1-28c0,0,55.2-117.1,55.2-231.1 C633.2,157.9,624.7,151.8,622.7,149.8z M125.6,353.9c-25.9-8.5-36.9-18.7-36.9-18.7S69.6,321.8,60,295.4 c-16.5-44.2-1.4-71.2-1.4-71.2s8.4-22.5,38.5-30c13.8-3.7,31-3.1,31-3.1s7.1,59.4,15.7,94.2c7.2,29.2,24.8,77.7,24.8,77.7 S142.5,359.9,125.6,353.9z M425.9,461.5c0,0-6.1,14.5-19.6,15.4c-5.8,0.4-10.3-1.2-10.3-1.2s-0.3-0.1-5.3-2.1l-112.9-55 c0,0-10.9-5.7-12.8-15.6c-2.2-8.1,2.7-18.1,2.7-18.1L322,273c0,0,4.8-9.7,12.2-13c0.6-0.3,2.3-1,4.5-1.5c8.1-2.1,18,2.8,18,2.8 l110.7,53.7c0,0,12.6,5.7,15.3,16.2c1.9,7.4-0.5,14-1.8,17.2C474.6,363.8,425.9,461.5,425.9,461.5z"></path> <path style="fill:#609926" d="M326.8,380.1c-8.2,0.1-15.4,5.8-17.3,13.8c-1.9,8,2,16.3,9.1,20c7.7,4,17.5,1.8,22.7-5.4 c5.1-7.1,4.3-16.9-1.8-23.1l24-49.1c1.5,0.1,3.7,0.2,6.2-0.5c4.1-0.9,7.1-3.6,7.1-3.6c4.2,1.8,8.6,3.8,13.2,6.1 c4.8,2.4,9.3,4.9,13.4,7.3c0.9,0.5,1.8,1.1,2.8,1.9c1.6,1.3,3.4,3.1,4.7,5.5c1.9,5.5-1.9,14.9-1.9,14.9 c-2.3,7.6-18.4,40.6-18.4,40.6c-8.1-0.2-15.3,5-17.7,12.5c-2.6,8.1,1.1,17.3,8.9,21.3c7.8,4,17.4,1.7,22.5-5.3 c5-6.8,4.6-16.3-1.1-22.6c1.9-3.7,3.7-7.4,5.6-11.3c5-10.4,13.5-30.4,13.5-30.4c0.9-1.7,5.7-10.3,2.7-21.3 c-2.5-11.4-12.6-16.7-12.6-16.7c-12.2-7.9-29.2-15.2-29.2-15.2s0-4.1-1.1-7.1c-1.1-3.1-2.8-5.1-3.9-6.3c4.7-9.7,9.4-19.3,14.1-29 c-4.1-2-8.1-4-12.2-6.1c-4.8,9.8-9.7,19.7-14.5,29.5c-6.7-0.1-12.9,3.5-16.1,9.4c-3.4,6.3-2.7,14.1,1.9,19.8 C343.2,346.5,335,363.3,326.8,380.1z"></path> </g> </g> </g> </svg>

Before

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -1,8 +0,0 @@
<?xml version="1.0"?>
<svg xmlns="http://www.w3.org/2000/svg" width="560" height="162" fill="none" stroke="#000">
<clipPath id="c"><path d="m20,110q76,0 128-90 130,154 260,0 52,92 128,90"/></clipPath>
<path stroke-width="100" stroke-dasharray="1,9" clip-path="url(#c)"
d="m23,70h120m10,0h250m10,0h120"/>
<path stroke-width="10" d="m148,18v124m260,0V18"/>
<path stroke-width="2" d="m20,110q76,0 128-90 130,154 260,0 52,92 128,90H20m0,2h516"/>
</svg>

Before

Width:  |  Height:  |  Size: 448 B

View File

@ -1,151 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg1"
xml:space="preserve"
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
sodipodi:docname="logo.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:cc="http://creativecommons.org/ns#"><sodipodi:namedview
id="namedview1"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
inkscape:zoom="0.92381453"
inkscape:cx="361.0032"
inkscape:cy="323.65804"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1" /><defs
id="defs1"><pattern
inkscape:collect="always"
xlink:href="#pattern2853"
id="pattern2864"
patternTransform="translate(42.23939,37.38575)" /><pattern
inkscape:collect="always"
xlink:href="#pattern2838"
id="pattern2845"
patternTransform="translate(44.04167,18.04166)" /><linearGradient
id="linearGradient2826"><stop
style="stop-color:#dfb585;stop-opacity:1;"
offset="0"
id="stop2828" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2830" /></linearGradient><linearGradient
id="linearGradient2791"><stop
style="stop-color:#4d95ee;stop-opacity:1;"
offset="0"
id="stop2793" /><stop
style="stop-color:black;stop-opacity:1;"
offset="1"
id="stop2795" /></linearGradient><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2791"
id="linearGradient2797"
x1="213.11461"
y1="113.20445"
x2="213.11461"
y2="351.95709"
gradientUnits="userSpaceOnUse"
gradientTransform="translate(0,6)" /><linearGradient
inkscape:collect="always"
xlink:href="#linearGradient2826"
id="linearGradient2832"
x1="193.60881"
y1="116.54642"
x2="193.60881"
y2="345.21436"
gradientUnits="userSpaceOnUse" /><pattern
patternUnits="userSpaceOnUse"
width="31.916666"
height="9.916667"
patternTransform="translate(19.375,-47.29167)"
id="pattern2838"><rect
y="0.625"
x="0.625"
height="8.666667"
width="30.666666"
id="rect2836"
style="opacity:1;fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /></pattern><pattern
patternUnits="userSpaceOnUse"
width="34.958335"
height="9.916667"
patternTransform="translate(44.04167,18.04167)"
id="pattern2853"><g
id="g2849"
transform="translate(-44.04167,-18.04167)"><rect
style="fill:url(#pattern2845);stroke:none"
width="31.916666"
height="9.916667"
x="44.041668"
y="18.041666"
id="rect2841" /><rect
style="opacity:0;fill:#00cd0f;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2847"
width="9.166667"
height="2.5833333"
x="69.833336"
y="21.916666" /></g></pattern></defs><g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"><g
id="g4"
transform="matrix(0.15875,0,0,0.15875,-3.8018304,-0.36145313)"> <path
id="teabag"
style="fill:#ffffff"
d="M 395.9,484.2 269,423.2 c -12.5,-6 -17.9,-21.2 -11.8,-33.8 l 61,-126.9 c 6,-12.5 21.2,-17.9 33.8,-11.8 17.2,8.3 27.1,13 27.1,13 l -0.1,-109.2 16.7,-0.1 0.1,117.1 c 0,0 57.4,24.2 83.1,40.1 3.7,2.3 10.2,6.8 12.9,14.4 2.1,6.1 2,13.1 -1,19.3 l -61,126.9 c -6.2,12.7 -21.4,18.1 -33.9,12 z" /> <g
id="g3"
transform="translate(-3.8,-19.6)"> <g
id="g2"> <path
style="fill:#609926"
d="m 622.7,149.8 c -4.1,-4.1 -9.6,-4 -9.6,-4 0,0 -117.2,6.6 -177.9,8 -13.3,0.3 -26.5,0.6 -39.6,0.7 0,39.1 0,78.2 0,117.2 -5.5,-2.6 -11.1,-5.3 -16.6,-7.9 0,-36.4 -0.1,-109.2 -0.1,-109.2 -29,0.4 -89.2,-2.2 -89.2,-2.2 0,0 -141.4,-7.1 -156.8,-8.5 -9.8,-0.6 -22.5,-2.1 -39,1.5 -8.7,1.8 -33.5,7.4 -53.8,26.9 -45,40.1 -33.5,103.9 -32.1,113.5 1.7,11.7 6.9,44.2 31.7,72.5 45.8,56.1 144.4,54.8 144.4,54.8 0,0 12.1,28.9 30.6,55.5 25,33.1 50.7,58.9 75.7,62 63,0 188.9,-0.1 188.9,-0.1 0,0 12,0.1 28.3,-10.3 14,-8.5 26.5,-23.4 26.5,-23.4 0,0 12.9,-13.8 30.9,-45.3 5.5,-9.7 10.1,-19.1 14.1,-28 0,0 55.2,-117.1 55.2,-231.1 -1.1,-34.5 -9.6,-40.6 -11.6,-42.6 z M 125.6,353.9 c -25.9,-8.5 -36.9,-18.7 -36.9,-18.7 0,0 -19.1,-13.4 -28.7,-39.8 -16.5,-44.2 -1.4,-71.2 -1.4,-71.2 0,0 8.4,-22.5 38.5,-30 13.8,-3.7 31,-3.1 31,-3.1 0,0 7.1,59.4 15.7,94.2 7.2,29.2 24.8,77.7 24.8,77.7 0,0 -26.1,-3.1 -43,-9.1 z m 300.3,107.6 c 0,0 -6.1,14.5 -19.6,15.4 -5.8,0.4 -10.3,-1.2 -10.3,-1.2 0,0 -0.3,-0.1 -5.3,-2.1 l -112.9,-55 c 0,0 -10.9,-5.7 -12.8,-15.6 -2.2,-8.1 2.7,-18.1 2.7,-18.1 L 322,273 c 0,0 4.8,-9.7 12.2,-13 0.6,-0.3 2.3,-1 4.5,-1.5 8.1,-2.1 18,2.8 18,2.8 L 467.4,315 c 0,0 12.6,5.7 15.3,16.2 1.9,7.4 -0.5,14 -1.8,17.2 -6.3,15.4 -55,113.1 -55,113.1 z"
id="path1" /> <path
style="fill:#609926"
d="m 326.8,380.1 c -8.2,0.1 -15.4,5.8 -17.3,13.8 -1.9,8 2,16.3 9.1,20 7.7,4 17.5,1.8 22.7,-5.4 5.1,-7.1 4.3,-16.9 -1.8,-23.1 l 24,-49.1 c 1.5,0.1 3.7,0.2 6.2,-0.5 4.1,-0.9 7.1,-3.6 7.1,-3.6 4.2,1.8 8.6,3.8 13.2,6.1 4.8,2.4 9.3,4.9 13.4,7.3 0.9,0.5 1.8,1.1 2.8,1.9 1.6,1.3 3.4,3.1 4.7,5.5 1.9,5.5 -1.9,14.9 -1.9,14.9 -2.3,7.6 -18.4,40.6 -18.4,40.6 -8.1,-0.2 -15.3,5 -17.7,12.5 -2.6,8.1 1.1,17.3 8.9,21.3 7.8,4 17.4,1.7 22.5,-5.3 5,-6.8 4.6,-16.3 -1.1,-22.6 1.9,-3.7 3.7,-7.4 5.6,-11.3 5,-10.4 13.5,-30.4 13.5,-30.4 0.9,-1.7 5.7,-10.3 2.7,-21.3 -2.5,-11.4 -12.6,-16.7 -12.6,-16.7 -12.2,-7.9 -29.2,-15.2 -29.2,-15.2 0,0 0,-4.1 -1.1,-7.1 -1.1,-3.1 -2.8,-5.1 -3.9,-6.3 4.7,-9.7 9.4,-19.3 14.1,-29 -4.1,-2 -8.1,-4 -12.2,-6.1 -4.8,9.8 -9.7,19.7 -14.5,29.5 -6.7,-0.1 -12.9,3.5 -16.1,9.4 -3.4,6.3 -2.7,14.1 1.9,19.8 -8.2,16.8 -16.4,33.6 -24.6,50.4 z"
id="path2" /> </g> </g> </g><g
id="g1"
transform="matrix(0.50182484,0,0,0.35249319,-51.630035,18.972095)"><path
id="path2799"
style="fill:#7b6c52;fill-opacity:1;fill-rule:nonzero;stroke:#2d271e;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1"
d="m 341.66665,225.23539 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 L 418.05691,30.666667 H -18.056812 L -47.00002,120.00004 c 0,-29.072012 23.594674,-52.666688 52.666691,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.222179,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535 m 24.22219,0 c 0,-12.89512 0,-90.69934 0,-105.23535 0,-29.072012 23.59467,-52.666688 52.66669,-52.666688 29.07201,0 52.66668,23.594676 52.66668,52.666688 0,14.53601 0,92.94011 0,105.23535"
sodipodi:nodetypes="cssccccssccsssccsssc" /><path
style="opacity:0.7;fill:url(#linearGradient2797);fill-opacity:1;fill-rule:evenodd;stroke:#447cc1;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m -6.6627813,217.65413 c 0,-28.37004 -13.1115797,-86.58823 0.4458511,-86.32344 84.6560832,1.65344 142.3439102,8.5 158.4814802,9.29365 32.27513,1.5873 58.20106,-4.23281 97.8836,-6.34921 39.68254,-2.1164 74.60317,3.70371 107.93651,3.17461 33.33333,-0.52911 37.43386,-3.96826 49.73545,-2.64551 24.08055,2.58931 3.8201,42.09524 3.8201,86.01059"
id="path1884"
sodipodi:nodetypes="csssssc" /><path
style="fill:url(#linearGradient2832);fill-opacity:1;fill-rule:evenodd;stroke:#784e1f;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="m 421.31443,97.523845 c 0,45.301975 0.5609,104.044905 0.5609,134.045145 -16.37801,0 -353.393449,-0.38532 -443.099849,-0.38532 0,-56.46314 2.984043,-109.38808 2.984043,-131.793769 18.28607177,11.882619 77.988729,47.037439 100.205554,47.891979 20.738622,0.25077 67.905562,22.79584 87.636022,28.15857 27.56341,2.34862 53.84138,-12.31897 81.50416,-8.10339 24.90771,1.58959 53.62348,2.5399 72.71854,-17.45229 15.32619,-12.89213 35.5339,-14.37299 53.87064,-18.56564 13.90946,-6.12504 36.38842,-20.82213 43.61999,-33.795285 z"
id="path1875"
sodipodi:nodetypes="cccccccccc" /><rect
style="opacity:1;fill:url(#pattern2864);fill-opacity:1;fill-rule:nonzero;stroke-width:1.25;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2834"
width="445.33334"
height="10"
x="-24.468958"
y="17.34409" /></g></g><metadata
id="metadata1"><rdf:RDF><cc:Work
rdf:about=""><cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" /></cc:Work><cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/"><cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" /><cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" /><cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" /></cc:License></rdf:RDF></metadata></svg>

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,13 +1,9 @@
{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05") {} }: { pkgs ? import <nixpkgs> {} }:
let
pkgs.mkShell { my-python-packages = ps: with ps; [
packages = [ requests
(pkgs.python3.withPackages (ps: [ gitpython
ps.flask github3_py
ps.requests
]))
pkgs.curl
pkgs.jq
]; ];
} my-python = pkgs.python3.withPackages my-python-packages;
in my-python.env

View File

@ -1,3 +0,0 @@
# a ""test"" ""suite"", if it could be called that
This directory contains a bunch of programs for auditing the behavior of the Flask app under different requests from different services. It contains some captured verbatim websockets callbacks so I can develop on them.

View File

@ -1,169 +0,0 @@
{
"action": "closed",
"number": 1,
"issue": {
"id": 42,
"url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf/issues/1",
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf/issues/1",
"number": 1,
"user": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"original_author": "",
"original_author_id": 0,
"title": "another testing issue",
"body": "",
"ref": "",
"assets": [],
"labels": [],
"milestone": null,
"assignee": null,
"assignees": null,
"state": "closed",
"is_locked": false,
"comments": 1,
"created_at": "2024-10-09T01:07:19-05:00",
"updated_at": "2024-10-09T01:27:16-05:00",
"closed_at": "2024-10-09T01:27:16-05:00",
"due_date": null,
"pull_request": null,
"repository": {
"id": 73,
"name": "sadkfjasdf",
"owner": "stupidcomputer",
"full_name": "stupidcomputer/sadkfjasdf"
},
"pin_order": 0
},
"repository": {
"id": 73,
"owner": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"name": "sadkfjasdf",
"full_name": "stupidcomputer/sadkfjasdf",
"description": "",
"empty": true,
"private": false,
"fork": false,
"template": false,
"parent": null,
"mirror": false,
"size": 28,
"language": "",
"languages_url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf/languages",
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf",
"url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf",
"link": "",
"ssh_url": "gitea@git.beepboop.systems:stupidcomputer/sadkfjasdf.git",
"clone_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf.git",
"original_url": "",
"website": "https://github.com/stupidcomputer/sadkfjasdf",
"stars_count": 0,
"forks_count": 0,
"watchers_count": 1,
"open_issues_count": 1,
"open_pr_counter": 0,
"release_counter": 0,
"default_branch": "main",
"archived": false,
"created_at": "2024-10-08T22:47:49-05:00",
"updated_at": "2024-10-09T01:05:10-05:00",
"archived_at": "1969-12-31T18:00:00-06:00",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"has_issues": true,
"internal_tracker": {
"enable_time_tracker": true,
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true
},
"has_wiki": true,
"has_pull_requests": true,
"has_projects": true,
"has_releases": true,
"has_packages": true,
"has_actions": false,
"ignore_whitespace_conflicts": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_squash_merge": true,
"allow_rebase_update": true,
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_allow_maintainer_edit": false,
"avatar_url": "",
"internal": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"repo_transfer": null
},
"sender": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"commit_id": ""
}

View File

@ -1,203 +0,0 @@
{
"action": "created",
"issue": {
"id": 42,
"url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf/issues/1",
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf/issues/1",
"number": 1,
"user": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"original_author": "",
"original_author_id": 0,
"title": "another testing issue",
"body": "",
"ref": "",
"assets": [],
"labels": [],
"milestone": null,
"assignee": null,
"assignees": null,
"state": "open",
"is_locked": false,
"comments": 0,
"created_at": "2024-10-09T01:07:19-05:00",
"updated_at": "2024-10-09T01:13:12-05:00",
"closed_at": null,
"due_date": null,
"pull_request": null,
"repository": {
"id": 73,
"name": "sadkfjasdf",
"owner": "stupidcomputer",
"full_name": "stupidcomputer/sadkfjasdf"
},
"pin_order": 0
},
"comment": {
"id": 155,
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf/issues/1#issuecomment-155",
"pull_request_url": "",
"issue_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf/issues/1",
"user": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"original_author": "",
"original_author_id": 0,
"body": "Here's another additional, helpful comment.",
"assets": [],
"created_at": "2024-10-09T01:13:12-05:00",
"updated_at": "2024-10-09T01:13:12-05:00"
},
"repository": {
"id": 73,
"owner": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"name": "sadkfjasdf",
"full_name": "stupidcomputer/sadkfjasdf",
"description": "",
"empty": true,
"private": false,
"fork": false,
"template": false,
"parent": null,
"mirror": false,
"size": 28,
"language": "",
"languages_url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf/languages",
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf",
"url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf",
"link": "",
"ssh_url": "gitea@git.beepboop.systems:stupidcomputer/sadkfjasdf.git",
"clone_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf.git",
"original_url": "",
"website": "https://github.com/stupidcomputer/sadkfjasdf",
"stars_count": 0,
"forks_count": 0,
"watchers_count": 1,
"open_issues_count": 1,
"open_pr_counter": 0,
"release_counter": 0,
"default_branch": "main",
"archived": false,
"created_at": "2024-10-08T22:47:49-05:00",
"updated_at": "2024-10-09T01:05:10-05:00",
"archived_at": "1969-12-31T18:00:00-06:00",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"has_issues": true,
"internal_tracker": {
"enable_time_tracker": true,
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true
},
"has_wiki": true,
"has_pull_requests": true,
"has_projects": true,
"has_releases": true,
"has_packages": true,
"has_actions": false,
"ignore_whitespace_conflicts": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_squash_merge": true,
"allow_rebase_update": true,
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_allow_maintainer_edit": false,
"avatar_url": "",
"internal": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"repo_transfer": null
},
"sender": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"is_pull": false
}

View File

@ -1,169 +0,0 @@
{
"action": "opened",
"number": 1,
"issue": {
"id": 42,
"url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf/issues/1",
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf/issues/1",
"number": 1,
"user": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"original_author": "",
"original_author_id": 0,
"title": "another testing issue",
"body": "",
"ref": "",
"assets": [],
"labels": [],
"milestone": null,
"assignee": null,
"assignees": null,
"state": "open",
"is_locked": false,
"comments": 0,
"created_at": "2024-10-09T01:07:19-05:00",
"updated_at": "2024-10-09T01:07:19-05:00",
"closed_at": null,
"due_date": null,
"pull_request": null,
"repository": {
"id": 73,
"name": "sadkfjasdf",
"owner": "stupidcomputer",
"full_name": "stupidcomputer/sadkfjasdf"
},
"pin_order": 0
},
"repository": {
"id": 73,
"owner": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"name": "sadkfjasdf",
"full_name": "stupidcomputer/sadkfjasdf",
"description": "",
"empty": true,
"private": false,
"fork": false,
"template": false,
"parent": null,
"mirror": false,
"size": 28,
"language": "",
"languages_url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf/languages",
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf",
"url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf",
"link": "",
"ssh_url": "gitea@git.beepboop.systems:stupidcomputer/sadkfjasdf.git",
"clone_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf.git",
"original_url": "",
"website": "https://github.com/stupidcomputer/sadkfjasdf",
"stars_count": 0,
"forks_count": 0,
"watchers_count": 1,
"open_issues_count": 0,
"open_pr_counter": 0,
"release_counter": 0,
"default_branch": "main",
"archived": false,
"created_at": "2024-10-08T22:47:49-05:00",
"updated_at": "2024-10-09T01:05:10-05:00",
"archived_at": "1969-12-31T18:00:00-06:00",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"has_issues": true,
"internal_tracker": {
"enable_time_tracker": true,
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true
},
"has_wiki": true,
"has_pull_requests": true,
"has_projects": true,
"has_releases": true,
"has_packages": true,
"has_actions": false,
"ignore_whitespace_conflicts": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_squash_merge": true,
"allow_rebase_update": true,
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_allow_maintainer_edit": false,
"avatar_url": "",
"internal": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"repo_transfer": null
},
"sender": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"commit_id": ""
}

View File

@ -1,136 +0,0 @@
{
"action": "created",
"repository": {
"id": 73,
"owner": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"name": "sadkfjasdf",
"full_name": "stupidcomputer/sadkfjasdf",
"description": "",
"empty": true,
"private": false,
"fork": false,
"template": false,
"parent": null,
"mirror": false,
"size": 0,
"language": "",
"languages_url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf/languages",
"html_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf",
"url": "https://git.beepboop.systems/api/v1/repos/stupidcomputer/sadkfjasdf",
"link": "",
"ssh_url": "gitea@git.beepboop.systems:stupidcomputer/sadkfjasdf.git",
"clone_url": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf.git",
"original_url": "",
"website": "",
"stars_count": 0,
"forks_count": 0,
"watchers_count": 0,
"open_issues_count": 0,
"open_pr_counter": 0,
"release_counter": 0,
"default_branch": "main",
"archived": false,
"created_at": "2024-10-08T22:47:49-05:00",
"updated_at": "2024-10-08T22:47:49-05:00",
"archived_at": "1969-12-31T18:00:00-06:00",
"permissions": {
"admin": true,
"push": true,
"pull": true
},
"has_issues": true,
"internal_tracker": {
"enable_time_tracker": true,
"allow_only_contributors_to_track_time": true,
"enable_issue_dependencies": true
},
"has_wiki": true,
"has_pull_requests": true,
"has_projects": true,
"has_releases": true,
"has_packages": true,
"has_actions": false,
"ignore_whitespace_conflicts": false,
"allow_merge_commits": true,
"allow_rebase": true,
"allow_rebase_explicit": true,
"allow_squash_merge": true,
"allow_rebase_update": true,
"default_delete_branch_after_merge": false,
"default_merge_style": "merge",
"default_allow_maintainer_edit": false,
"avatar_url": "",
"internal": false,
"mirror_interval": "",
"mirror_updated": "0001-01-01T00:00:00Z",
"repo_transfer": null
},
"organization": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
},
"sender": {
"id": 1,
"login": "stupidcomputer",
"login_name": "",
"full_name": "stupidcomputer",
"email": "stupidcomputer@noreply.git.beepboop.systems",
"avatar_url": "https://secure.gravatar.com/avatar/b642b4217b34b1e8d3bd915fc65c4452?d=identicon",
"language": "",
"is_admin": false,
"last_login": "0001-01-01T00:00:00Z",
"created": "2023-06-23T22:23:01-05:00",
"restricted": false,
"active": false,
"prohibit_login": false,
"location": "",
"website": "https://beepboop.systems",
"description": "High schooler interested in computers, security, and reproducible systems.\r\n",
"visibility": "public",
"followers_count": 0,
"following_count": 0,
"starred_repos_count": 0,
"username": "stupidcomputer"
}
}

View File

@ -1,189 +0,0 @@
{
"action": "closed",
"issue": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1",
"repository_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf",
"labels_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/labels{/name}",
"comments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/comments",
"events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/events",
"html_url": "https://github.com/stupidcomputer/sadkfjasdf/issues/1",
"id": 2574858486,
"node_id": "I_kwDOM9nmTM6ZeTj2",
"number": 1,
"title": "this is a test",
"user": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
},
"labels": [
],
"state": "closed",
"locked": false,
"assignee": null,
"assignees": [
],
"milestone": null,
"comments": 1,
"created_at": "2024-10-09T06:06:39Z",
"updated_at": "2024-10-09T06:24:04Z",
"closed_at": "2024-10-09T06:24:04Z",
"author_association": "OWNER",
"active_lock_reason": null,
"body": null,
"reactions": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/timeline",
"performed_via_github_app": null,
"state_reason": "completed"
},
"repository": {
"id": 869918284,
"node_id": "R_kgDOM9nmTA",
"name": "sadkfjasdf",
"full_name": "stupidcomputer/sadkfjasdf",
"private": false,
"owner": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/stupidcomputer/sadkfjasdf",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf",
"forks_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/forks",
"keys_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/teams",
"hooks_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/hooks",
"issue_events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/events{/number}",
"events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/events",
"assignees_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/assignees{/user}",
"branches_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/branches{/branch}",
"tags_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/tags",
"blobs_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/statuses/{sha}",
"languages_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/languages",
"stargazers_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/stargazers",
"contributors_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/contributors",
"subscribers_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/subscribers",
"subscription_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/subscription",
"commits_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/contents/{+path}",
"compare_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/merges",
"archive_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/downloads",
"issues_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues{/number}",
"pulls_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/pulls{/number}",
"milestones_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/milestones{/number}",
"notifications_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/labels{/name}",
"releases_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/releases{/id}",
"deployments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/deployments",
"created_at": "2024-10-09T06:05:09Z",
"updated_at": "2024-10-09T06:05:09Z",
"pushed_at": "2024-10-09T06:05:09Z",
"git_url": "git://github.com/stupidcomputer/sadkfjasdf.git",
"ssh_url": "git@github.com:stupidcomputer/sadkfjasdf.git",
"clone_url": "https://github.com/stupidcomputer/sadkfjasdf.git",
"svn_url": "https://github.com/stupidcomputer/sadkfjasdf",
"homepage": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf",
"size": 0,
"stargazers_count": 0,
"watchers_count": 0,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"has_discussions": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 0,
"license": null,
"allow_forking": true,
"is_template": false,
"web_commit_signoff_required": false,
"topics": [
],
"visibility": "public",
"forks": 0,
"open_issues": 0,
"watchers": 0,
"default_branch": "main"
},
"sender": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
}
}

View File

@ -1,233 +0,0 @@
{
"action": "created",
"issue": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1",
"repository_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf",
"labels_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/labels{/name}",
"comments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/comments",
"events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/events",
"html_url": "https://github.com/stupidcomputer/sadkfjasdf/issues/1",
"id": 2574858486,
"node_id": "I_kwDOM9nmTM6ZeTj2",
"number": 1,
"title": "this is a test",
"user": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
},
"labels": [
],
"state": "open",
"locked": false,
"assignee": null,
"assignees": [
],
"milestone": null,
"comments": 1,
"created_at": "2024-10-09T06:06:39Z",
"updated_at": "2024-10-09T06:22:06Z",
"closed_at": null,
"author_association": "OWNER",
"active_lock_reason": null,
"body": null,
"reactions": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"comment": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/comments/2401413724",
"html_url": "https://github.com/stupidcomputer/sadkfjasdf/issues/1#issuecomment-2401413724",
"issue_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1",
"id": 2401413724,
"node_id": "IC_kwDOM9nmTM6PIqpc",
"user": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
},
"created_at": "2024-10-09T06:22:06Z",
"updated_at": "2024-10-09T06:22:06Z",
"author_association": "OWNER",
"body": "here is a helpful, insightful comment",
"reactions": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/comments/2401413724/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"performed_via_github_app": null
},
"repository": {
"id": 869918284,
"node_id": "R_kgDOM9nmTA",
"name": "sadkfjasdf",
"full_name": "stupidcomputer/sadkfjasdf",
"private": false,
"owner": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/stupidcomputer/sadkfjasdf",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf",
"forks_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/forks",
"keys_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/teams",
"hooks_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/hooks",
"issue_events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/events{/number}",
"events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/events",
"assignees_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/assignees{/user}",
"branches_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/branches{/branch}",
"tags_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/tags",
"blobs_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/statuses/{sha}",
"languages_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/languages",
"stargazers_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/stargazers",
"contributors_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/contributors",
"subscribers_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/subscribers",
"subscription_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/subscription",
"commits_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/contents/{+path}",
"compare_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/merges",
"archive_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/downloads",
"issues_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues{/number}",
"pulls_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/pulls{/number}",
"milestones_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/milestones{/number}",
"notifications_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/labels{/name}",
"releases_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/releases{/id}",
"deployments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/deployments",
"created_at": "2024-10-09T06:05:09Z",
"updated_at": "2024-10-09T06:05:09Z",
"pushed_at": "2024-10-09T06:05:09Z",
"git_url": "git://github.com/stupidcomputer/sadkfjasdf.git",
"ssh_url": "git@github.com:stupidcomputer/sadkfjasdf.git",
"clone_url": "https://github.com/stupidcomputer/sadkfjasdf.git",
"svn_url": "https://github.com/stupidcomputer/sadkfjasdf",
"homepage": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf",
"size": 0,
"stargazers_count": 0,
"watchers_count": 0,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"has_discussions": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 1,
"license": null,
"allow_forking": true,
"is_template": false,
"web_commit_signoff_required": false,
"topics": [
],
"visibility": "public",
"forks": 0,
"open_issues": 1,
"watchers": 0,
"default_branch": "main"
},
"sender": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
}
}

View File

@ -1,189 +0,0 @@
{
"action": "opened",
"issue": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1",
"repository_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf",
"labels_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/labels{/name}",
"comments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/comments",
"events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/events",
"html_url": "https://github.com/stupidcomputer/sadkfjasdf/issues/1",
"id": 2574858486,
"node_id": "I_kwDOM9nmTM6ZeTj2",
"number": 1,
"title": "this is a test",
"user": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
},
"labels": [
],
"state": "open",
"locked": false,
"assignee": null,
"assignees": [
],
"milestone": null,
"comments": 0,
"created_at": "2024-10-09T06:06:39Z",
"updated_at": "2024-10-09T06:06:39Z",
"closed_at": null,
"author_association": "OWNER",
"active_lock_reason": null,
"body": null,
"reactions": {
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/reactions",
"total_count": 0,
"+1": 0,
"-1": 0,
"laugh": 0,
"hooray": 0,
"confused": 0,
"heart": 0,
"rocket": 0,
"eyes": 0
},
"timeline_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/1/timeline",
"performed_via_github_app": null,
"state_reason": null
},
"repository": {
"id": 869918284,
"node_id": "R_kgDOM9nmTA",
"name": "sadkfjasdf",
"full_name": "stupidcomputer/sadkfjasdf",
"private": false,
"owner": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
},
"html_url": "https://github.com/stupidcomputer/sadkfjasdf",
"description": null,
"fork": false,
"url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf",
"forks_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/forks",
"keys_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/keys{/key_id}",
"collaborators_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/collaborators{/collaborator}",
"teams_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/teams",
"hooks_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/hooks",
"issue_events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/events{/number}",
"events_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/events",
"assignees_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/assignees{/user}",
"branches_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/branches{/branch}",
"tags_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/tags",
"blobs_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/blobs{/sha}",
"git_tags_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/tags{/sha}",
"git_refs_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/refs{/sha}",
"trees_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/trees{/sha}",
"statuses_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/statuses/{sha}",
"languages_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/languages",
"stargazers_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/stargazers",
"contributors_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/contributors",
"subscribers_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/subscribers",
"subscription_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/subscription",
"commits_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/commits{/sha}",
"git_commits_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/git/commits{/sha}",
"comments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/comments{/number}",
"issue_comment_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues/comments{/number}",
"contents_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/contents/{+path}",
"compare_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/compare/{base}...{head}",
"merges_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/merges",
"archive_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/{archive_format}{/ref}",
"downloads_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/downloads",
"issues_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/issues{/number}",
"pulls_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/pulls{/number}",
"milestones_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/milestones{/number}",
"notifications_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/notifications{?since,all,participating}",
"labels_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/labels{/name}",
"releases_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/releases{/id}",
"deployments_url": "https://api.github.com/repos/stupidcomputer/sadkfjasdf/deployments",
"created_at": "2024-10-09T06:05:09Z",
"updated_at": "2024-10-09T06:05:09Z",
"pushed_at": "2024-10-09T06:05:09Z",
"git_url": "git://github.com/stupidcomputer/sadkfjasdf.git",
"ssh_url": "git@github.com:stupidcomputer/sadkfjasdf.git",
"clone_url": "https://github.com/stupidcomputer/sadkfjasdf.git",
"svn_url": "https://github.com/stupidcomputer/sadkfjasdf",
"homepage": "https://git.beepboop.systems/stupidcomputer/sadkfjasdf",
"size": 0,
"stargazers_count": 0,
"watchers_count": 0,
"language": null,
"has_issues": true,
"has_projects": true,
"has_downloads": true,
"has_wiki": true,
"has_pages": false,
"has_discussions": false,
"forks_count": 0,
"mirror_url": null,
"archived": false,
"disabled": false,
"open_issues_count": 1,
"license": null,
"allow_forking": true,
"is_template": false,
"web_commit_signoff_required": false,
"topics": [
],
"visibility": "public",
"forks": 0,
"open_issues": 1,
"watchers": 0,
"default_branch": "main"
},
"sender": {
"login": "stupidcomputer",
"id": 108326967,
"node_id": "U_kgDOBnTwNw",
"avatar_url": "https://avatars.githubusercontent.com/u/108326967?v=4",
"gravatar_id": "",
"url": "https://api.github.com/users/stupidcomputer",
"html_url": "https://github.com/stupidcomputer",
"followers_url": "https://api.github.com/users/stupidcomputer/followers",
"following_url": "https://api.github.com/users/stupidcomputer/following{/other_user}",
"gists_url": "https://api.github.com/users/stupidcomputer/gists{/gist_id}",
"starred_url": "https://api.github.com/users/stupidcomputer/starred{/owner}{/repo}",
"subscriptions_url": "https://api.github.com/users/stupidcomputer/subscriptions",
"organizations_url": "https://api.github.com/users/stupidcomputer/orgs",
"repos_url": "https://api.github.com/users/stupidcomputer/repos",
"events_url": "https://api.github.com/users/stupidcomputer/events{/privacy}",
"received_events_url": "https://api.github.com/users/stupidcomputer/received_events",
"type": "User",
"site_admin": false
}
}

View File

@ -1,8 +0,0 @@
import requests
import json
with open("data/gitea-issue-closed.json", "r") as file:
data = json.loads(file.read())
r = requests.post("http://127.0.0.1:5000/bridge/endpoints/gitea/issue", json=data)
print(r.text)

View File

@ -1,8 +0,0 @@
import requests
import json
with open("data/gitea-issue-comment-created.json", "r") as file:
data = json.loads(file.read())
r = requests.post("http://127.0.0.1:5000/bridge/endpoints/gitea/issue", json=data)
print(r.text)

View File

@ -1,8 +0,0 @@
import requests
import json
with open("data/gitea-issue-created.json", "r") as file:
data = json.loads(file.read())
r = requests.post("http://127.0.0.1:5000/bridge/endpoints/gitea/issue", json=data)
print(r.text)

View File

@ -1,8 +0,0 @@
import requests
import json
with open("data/gitea-repo-created.json", "r") as file:
data = json.loads(file.read())
r = requests.post("http://127.0.0.1:5000/bridge/endpoints/gitea/repo", json=data)
print(r.text)

View File

@ -1,8 +0,0 @@
import requests
import json
with open("data/github-issue-closed.json", "r") as file:
data = json.loads(file.read())
r = requests.post("http://127.0.0.1:5000/bridge/endpoints/github/issue", json=data)
print(r.text)

View File

@ -1,8 +0,0 @@
import requests
import json
with open("data/github-issue-comment-created.json", "r") as file:
data = json.loads(file.read())
r = requests.post("http://127.0.0.1:5000/bridge/endpoints/github/issue", json=data)
print(r.text)

View File

@ -1,8 +0,0 @@
import requests
import json
with open("data/github-issue-created.json", "r") as file:
data = json.loads(file.read())
r = requests.post("http://127.0.0.1:5000/bridge/endpoints/github/issue", json=data)
print(r.text)