def getSupportedDistros(): package_search = PackageSearch.load() json_data = json.dumps(package_search.getSupportedDistros()) resp = Response(json_data,mimetype="application/json") resp.headers.set('Cache-Control','no-cache, no-store, must-revalidate') resp.headers.set('Pragma','no-cache') resp.headers.set('Expires','0') return resp
def searchPackages(): package_search = PackageSearch.load() search_term = '' exact_match = False search_bit_flag = 0 page_number = 0 try: search_term = str(request.args.get('search_term', '')) search_term = search_term.lstrip().rstrip() exact_match = request.args.get('exact_match', False) search_bit_flag = int(request.args.get('search_bit_flag', '0')) page_number = int(request.args.get('page_number', '0')) json_data = package_search.searchPackages(search_term, exact_match, search_bit_flag, page_number) resp = Response(json_data,mimetype="application/json") resp.headers.set('Cache-Control','no-cache, no-store, must-revalidate') resp.headers.set('Pragma','no-cache') resp.headers.set('Expires','0') return resp except Exception as ex: LOGGER.error('Error in searchPackages with search parameters: %s', str(ex))
def getPackagesFromURL(): ''' This API will try to read from JSON files for various distros and return the filtered set of results based on given search keywords and distros to search from. ''' package_search = PackageSearch.load() package_name = str(request.args.get('package_name', '')) search_string = int(request.args.get('search_string', '')) LOGGER.debug(request.args.get('package_name', '')) try: exact_match = json.loads(request.args.get('exact_match', 0)) page_number = int(request.args.get('page_number', 10)) page_size = int(request.args.get('page_size', 0)) reverse = int(json.loads(request.args.get('reverse', 0))) sort_key = str(request.args.get('sort_key', 'name')) except Exception as ex: LOGGER.error('Error in getPackagesFromURL with search parameters: %s', str(ex)) return package_search.getPackagesFromURL(package_name, exact_match, page_number, page_size, sort_key, reverse, search_string)
from flask import Flask, request, render_template, json, Response, make_response import logging from config import server_host, server_port from config import LOGGER, DEBUG_LEVEL from classes import PackageSearch from classes import PDSStats app = Flask(__name__) # Ensure that the required JSON data file are pre-loaded in memory at the time of server start. package_search = PackageSearch.load() @app.route('/') @app.route('/pds/faq') @app.route('/pds/') def index(): resp = make_response(render_template('index.html')) resp.headers.set('Cache-Control','no-cache, no-store, must-revalidate') resp.headers.set('Pragma','no-cache') resp.headers.set('Expires','0') return resp @app.route('/getSupportedDistros') @app.route('/pds/getSupportedDistros') def getSupportedDistros(): package_search = PackageSearch.load() json_data = json.dumps(package_search.getSupportedDistros()) resp = Response(json_data,mimetype="application/json") resp.headers.set('Cache-Control','no-cache, no-store, must-revalidate') resp.headers.set('Pragma','no-cache') resp.headers.set('Expires','0')
def getSupportedDistros(): package_search = PackageSearch.load() return json.dumps(package_search.getSupportedDistros())
# Dump the package name, version and URL in JSON format to a JSON file. for i in pkgs: key = i.source_package_name # Make sure recent version is listed if key in final_data and str(i.source_package_version) > str(final_data[key]['version']): final_data[key]['version'] = str(i.source_package_version) elif key not in final_data: final_data[key] = { 'packageName': str(i.source_package_name), 'version': str(i.source_package_version) } print("Data generation to form JSON file ended..") package_search = PackageSearch() print("Dumping JSON to a local cache") temp_file_name = '%s_%s_Package_List.json_temp' % (os_name.upper(), distro_version.replace('.','_')) file_name = '%s_%s_Package_List.json' % (os_name.upper(), distro_version.replace('.','_')) file_handler = open('%s/%s' % (package_search.getDataFilePath(), temp_file_name), 'w') file_handler.write(json.dumps(list(final_data.values()))) file_handler.close() print("Dumping JSON to a local cache complete") # Now move the data to actual file, if file size is at least 50KB to avoid incomplete data. if os.path.getsize('%s/%s' % (package_search.getDataFilePath(), temp_file_name)) > int(MIN_DATA_FILE_SIZE): try: # Backup old JSON file with timestamp in archives folder for future reference
# Dump the package name, version and URL in JSON format to a JSON file. for i in pkgs: key = i.source_package_name # Make sure recent version is listed if final_data.has_key(key) and str(i.source_package_version) > str( final_data[key]['version']): final_data[key]['version'] = str(i.source_package_version) elif not final_data.has_key(key): final_data[key] = { 'packageName': str(i.source_package_name), 'version': str(i.source_package_version) } print "Data generation to form JSON file ended.." package_search = PackageSearch() print "Dumping JSON to a local cache" temp_file_name = '%s_%s_Package_List.json_temp' % ( os_name.upper(), distro_version.replace('.', '_')) file_name = '%s_%s_Package_List.json' % (os_name.upper(), distro_version.replace('.', '_')) file_handler = open( '%s/%s' % (package_search.getDataFilePath(), temp_file_name), 'w') file_handler.write(json.dumps(final_data.values())) file_handler.close() print "Dumping JSON to a local cache complete" # Now move the data to actual file, if file size is at least 50KB to avoid incomplete data.