File indexing completed on 2024-04-28 03:54:48
0001 # This file is part of KDE 0002 # SPDX-FileCopyrightText: 2023 Nicolas Fella <nicolas.fella@gmx.de> 0003 # 0004 # SPDX-License-Identifier: LGPL-2.0-or-later 0005 0006 from flask import Flask 0007 from flask import Response, redirect, request 0008 from flask_httpauth import HTTPBasicAuth 0009 import datetime 0010 0011 app = Flask(__name__) 0012 auth = HTTPBasicAuth() 0013 0014 @app.route("/mime/html", methods = ['GET']) 0015 def mime_html(): 0016 return "<p>Hello, World!</p>" 0017 0018 @app.route("/mime/calendar", methods = ['GET']) 0019 def mime_calendar(): 0020 return Response("bla", mimetype='text/calendar') 0021 0022 @app.route("/get/html", methods = ['GET']) 0023 def get_html(): 0024 return "<p>Hello, World!</p>" 0025 0026 @app.route("/get/calendar", methods = ['GET']) 0027 def get_calendar(): 0028 data = "Some data\nthat\nhas\nnew\nlines\n" 0029 resp = Response(data, mimetype='text/calendar') 0030 return resp 0031 0032 # Redirection 0033 0034 # GET 0035 0036 @app.route("/get/redirected", methods = ['GET']) 0037 def get_redirected(): 0038 return "Itsa me, redirected\n" 0039 0040 @app.route("/get/permanent_redirected", methods = ['GET']) 0041 def get_redirected_permanent(): 0042 return "Itsa me, redirected permanently\n" 0043 0044 # 301 0045 @app.route("/get/permanent_redirect", methods = ['GET']) 0046 def get_redirect_permanent(): 0047 return redirect("/get/permanent_redirected", code=301) 0048 0049 # 302 0050 @app.route("/get/redirect", methods = ['GET']) 0051 def get_redirect(): 0052 return redirect("/get/redirected", code=302) 0053 0054 # 303 0055 @app.route("/get/redirect_303", methods = ['GET']) 0056 def get_redirect_303(): 0057 return redirect('/get/redirected', code=303) 0058 0059 # 307 0060 @app.route("/get/redirect_307", methods = ['GET']) 0061 def get_redirect_307(): 0062 return redirect('/get/redirected', code=307) 0063 0064 # 308 0065 @app.route("/get/redirect_308", methods = ['GET']) 0066 def get_redirect_308(): 0067 return redirect('/get/permanent_redirected', code=308) 0068 0069 # POST 0070 0071 @app.route("/post/redirected", methods = ['POST']) 0072 def post_redirected(): 0073 return "Itsa me, redirected\n" 0074 0075 @app.route("/post/permanent_redirected", methods = ['POST']) 0076 def post_redirected_permanent(): 0077 return "Itsa me, redirected permanently\n" 0078 0079 # 301 0080 @app.route("/post/permanent_redirect", methods = ['POST']) 0081 def post_redirect_permanent(): 0082 return redirect('/get/permanent_redirected', code=301) 0083 0084 # 302 0085 @app.route("/post/redirect", methods = ['POST']) 0086 def post_redirect(): 0087 return redirect('/get/redirected', code=302) 0088 0089 # 303 0090 @app.route("/post/redirect_303", methods = ['POST']) 0091 def post_redirect_303(): 0092 return redirect('/get/redirected', code=303) 0093 0094 # 307 0095 @app.route("/post/redirect_307", methods = ['POST']) 0096 def post_redirect_307(): 0097 return redirect('/post/redirected', code=307) 0098 0099 # 308 0100 @app.route("/post/redirect_308", methods = ['POST']) 0101 def post_redirect_308(): 0102 return redirect('/post/permanent_redirected', code=308) 0103 0104 # PUT 0105 0106 @app.route("/put/redirected", methods = ['PUT']) 0107 def put_redirected(): 0108 return "Itsa me, redirected\n" 0109 0110 @app.route("/put/permanent_redirected", methods = ['PUT']) 0111 def put_redirected_permanent(): 0112 return "Itsa me, redirected permanently\n" 0113 0114 # 301 0115 @app.route("/put/permanent_redirect", methods = ['PUT']) 0116 def put_redirect_permanent(): 0117 return redirect('/get/permanent_redirected', code=301) 0118 0119 # 302 0120 @app.route("/put/redirect", methods = ['PUT']) 0121 def put_redirect(): 0122 return redirect('/get/redirected', code=302) 0123 0124 # 303 0125 @app.route("/put/redirect_303", methods = ['PUT']) 0126 def put_redirect_303(): 0127 return redirect('/get/redirected', code=303) 0128 0129 # 307 0130 @app.route("/put/redirect_307", methods = ['PUT']) 0131 def put_redirect_307(): 0132 return redirect('/put/redirected', code=307) 0133 0134 # 308 0135 @app.route("/put/redirect_308", methods = ['PUT']) 0136 def put_redirect_308(): 0137 return redirect('/put/permanent_redirected', code=308) 0138 0139 0140 @app.route("/put/bla", methods = ['PUT']) 0141 def put_bla(): 0142 0143 if request.content_type != "text/html": 0144 return Response("", status=400) 0145 0146 print("data", request.data) 0147 return request.data 0148 0149 @app.route("/post/bla", methods = ['POST']) 0150 def post_bla(): 0151 return "Got data of type " + request.content_type + ": " + request.data.decode('utf-8') 0152 0153 # @app.route("/post/redirect", methods = ['POST']) 0154 # def post_redirect(): 0155 # return redirect("/post/bla", code=308) 0156 0157 @app.route("/cookies/none", methods = ['GET']) 0158 def cookies_none(): 0159 data = "Hello\n" 0160 0161 resp = Response(data, mimetype='text/plain') 0162 0163 return resp 0164 0165 @app.route("/cookies/somecookie", methods = ['GET']) 0166 def cookies_somecookie(): 0167 data = "Hello\n" 0168 0169 resp = Response(data, mimetype='text/plain') 0170 0171 expires_date = datetime.datetime(2045, 5, 13, 18, 52, 0) 0172 0173 resp.set_cookie('userID', value="1234", expires=expires_date, path="/get/calendar", domain="localhost", secure=False, httponly=True) 0174 0175 return resp 0176 0177 @app.route("/cookies/twocookies", methods = ['GET']) 0178 def cookies_twocookies(): 0179 data = "Hello\n" 0180 0181 resp = Response(data, mimetype='text/plain') 0182 0183 expires_date = datetime.datetime(2045, 5, 13, 18, 52, 0) 0184 0185 resp.set_cookie('userID', value="1234", expires=expires_date, path="/get/calendar", domain="localhost", secure=False, httponly=True) 0186 resp.set_cookie('konqi', value="Yo", expires=expires_date, path="/get/text", domain="localhost", secure=False, httponly=True) 0187 0188 return resp 0189 0190 @app.route("/cookies/showsent", methods = ['GET']) 0191 def cookies_showsent(): 0192 data = "" 0193 for key in request.cookies: 0194 data += key + ":" + request.cookies[key] + "\n" 0195 0196 resp = Response(data, mimetype='text/plain') 0197 return resp 0198 0199 @auth.verify_password 0200 def verify_password(username, password): 0201 return username == "nico" and password == "1234" 0202 0203 @app.route('/auth/test') 0204 @auth.login_required 0205 def index(): 0206 return "Hello" 0207 0208 @app.route("/useragent/enforce") 0209 def useragent_enforce(): 0210 ua = request.headers.get('User-Agent') 0211 0212 print("ua:", ua) 0213 0214 if ua == "my test UA": 0215 return "Hello" 0216 else: 0217 return Response("", status=400) 0218 0219 @app.route("/error/no", methods = ['GET', 'PUT']) 0220 def error_no(): 0221 return "Hello" 0222 0223 @app.route("/error/400", methods = ['GET', 'PUT']) 0224 def error_400(): 0225 return Response("", status=400) 0226 0227 @app.route("/error/403", methods = ['GET', 'PUT']) 0228 def error_403(): 0229 return Response("", status=403) 0230 0231 @app.route("/error/405", methods = ['GET', 'PUT']) 0232 def error_405(): 0233 return Response("", status=405) 0234 0235 @app.route("/error/451", methods = ['GET', 'PUT']) 0236 def error_451(): 0237 return Response("", status=451) 0238 0239 @app.route("/error/500", methods = ['GET', 'PUT']) 0240 def error_500(): 0241 return Response("", status=500) 0242 0243 @app.route("/error/502", methods = ['GET', 'PUT']) 0244 def error_502(): 0245 return Response("", status=502) 0246 0247 @app.route("/error/507", methods = ['GET', 'PUT']) 0248 def error_507(): 0249 return Response("", status=507) 0250 0251 @app.route("/accept/rss") 0252 def accept_rss(): 0253 0254 accept = request.headers.get('Accept') 0255 0256 if accept == "application/rss+xml;q=0.9, application/atom+xml;q=0.9, text/*;q=0.8, */*;q=0.7": 0257 return "Hello" 0258 else: 0259 return Response("", status=400) 0260 0261 @app.route("/referrer/test") 0262 def referrer_test(): 0263 0264 if request.referrer == "http://kde.org": 0265 return "Hello" 0266 else: 0267 return Response("", status=400) 0268 0269 @app.route("/headers/pineapple") 0270 def headers_ananas(): 0271 pineapple = request.headers.get('Pineapple') 0272 0273 if pineapple == "Ananas": 0274 return "Hello" 0275 else: 0276 return Response("", status=400) 0277 0278 @app.route("/headers/pizza") 0279 def headers_pizza(): 0280 pineapple = request.headers.get('Pineapple') 0281 pizza = request.headers.get('Pizza') 0282 0283 if pineapple == "Ananas" and pizza == "yes": 0284 return "🤌" 0285 else: 0286 return Response("", status=400)