blob: a9cb18ad047ca62c6ab6c0406093727620e3db44 [file] [log] [blame]
# Copyright (C) 2021 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS BE LIABLE FOR
# ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
import cgi
import os
from urllib.parse import parse_qs
query = parse_qs(os.environ.get('QUERY_STRING', ''), keep_blank_values=True)
post_data = {}
def get_cookies():
cookies = {}
if 'HTTP_COOKIE' in os.environ:
header_cookies = os.environ['HTTP_COOKIE']
header_cookies = header_cookies.split('; ')
for cookie in header_cookies:
cookie = cookie.split('=')
cookies[cookie[0]] = cookie[1]
return cookies
def get_post_data():
request_method = os.environ.get('REQUEST_METHOD', '')
if request_method == 'POST':
form = cgi.FieldStorage()
for key in form.keys():
if key not in query.keys():
post_data.update({key: form.getvalue(key)})
return post_data
def get_request():
request = {}
for key in query.keys():
request.update({key: query[key][0]})
# request.update(get_post_data())
request.update(get_cookies())
return request
def get_count(file):
if not os.path.isfile(file):
with open(file, 'w') as open_file:
open_file.write('0')
return '0'
with open(file, 'r') as open_file:
return open_file.read()
def get_state(file, default='Uninitialized'):
if not os.path.isfile(file):
return default
with open(file, 'r') as file:
return file.read()
def set_state(file, state):
with open(file, 'w') as open_file:
open_file.write(state)
return state
def step_state(file):
state = get_count(file)
with open(file, 'w') as open_file:
open_file.write(f'{int(state) + 1}')
return state