def admin(key): auth = MongoSave().auth(key) if auth == 1: if request.form.get('approve', None) == 'Approve': user = request.form.get('userset') val = MongoSave().change_status(user) elif request.form.get('stats', None) == 'Spider Stats': return redirect(url_for('spider_stats', key=key)) users = MongoSave().get_req() return render_template("requests.html", users=users) else: return render_template("response.html", response='Wrong API key. Signup or login to get your API key'), 401
def signup(user_type="newuser"): """ Main Sigup/login method """ print(user_type) if user_type == 'admin' and request.method == 'GET': return render_template("adminlog.html", title="Admin Login") elif request.form.get('adminlogin', None) == 'Log in': if not request.form: abort(400) if len(request.form['pass']) < 4 or len(request.form['email']) < 6: return render_template("response.html", response= 'Error in email and password combination(Password must be longer than 4 characters.)'), 400 umail = str(request.form['email']) upass = str(request.form['pass']) uhash = hashlib.sha1(upass+umail).hexdigest() result = MongoSave().signup(umail, uhash) if result == 1: return redirect(url_for('admin', key=uhash)) #when signup request submitted but not approved elif result == -1: return render_template("response.html", response='Request Submitted. You are not an admin. o_0'), 200 #when request rejected else: return render_template("response.html", response='Error. A user with this email id exists. Some problem with email or password'), 400 elif request.form.get('newsignup', None) == 'Sign up': if not request.form: abort(400) if len(request.form['pass']) < 4: return render_template("response.html", response= 'Password must be longer than 4 characters.'), 400 umail = str(request.form['email']) upass = str(request.form['pass']) uhash = hashlib.sha1(upass+umail).hexdigest() result = MongoSave().signup(umail, uhash) #when user approved by admin return api key if result == 1: return render_template("response.html", uhash=uhash), 201 return jsonify({'response': uhash}), 201 #when signup request submitted but not approved elif result == -1: return render_template("response.html", response='Request submitted awaiting admin approval'), 200 #when request rejected elif result == 0: return render_template("response.html", response='Request rejected.'), 400 else: return render_template("response.html", response='Wrong username and password format.'), 400 else: return render_template("signup.html", title="Sign up")
def get_app_review_emotions(appid, key): auth = MongoSave().auth(key) if auth==1: data = rate_opinion.get_review_rate(appid) return jsonify(data if data is not None else {'_id': appid, 'n_percent': None, 'p_percent':None}) else: return jsonify({'response':'Wrong API key'})
def get_app_meta_similar(appid, key): auth = MongoSave().auth(key) if auth == 1: data = list(collection.find({'_id' :appid}, {'_id':0,'similar':1,'crawling_date':1})) if data: return jsonify({appid: data[0]}), 200 return jsonify({'response':'error'}), 404 else: return jsonify({'response':'Wrong API key. Signup or login to get your API key'}), 401
def get_app_meta_rank(appid, key): auth = MongoSave().auth(key) if auth == 1: data = list(collection.find({'_id' :appid}, {'_id':1,'category_rank':1, 'topchart_rank':1,'crawling_date':1, 'country':1})) if data: return jsonify(data[0]), 200 return jsonify({'response':'error'}), 404 else: return jsonify({'response':'Wrong API key. Signup or login to get your API key'}), 401
def get_app_by_country(appid, countrycode, key): auth = MongoSave().auth(key) if auth == 1: data = list(collection.find({'_id':appid, 'country':countrycode})) if data: return jsonify({'response': data}), 200 return jsonify({'response':'error'}), 404 else: return jsonify({'response':'Wrong API key. Signup or login to get your API key'}), 401
def get_app_icon_name(key): auth = MongoSave().auth(key) appids = json.loads(request.data).get('ids', []) if request.data else [] if auth == 1: data = list(collection.find({'_id' : {'$in': appids}}, {'_id':1, 'app_name':1, 'icon': 1})) if data: return jsonify({'response': data}), 200 return jsonify({'response': 'error'}), 404 else: return jsonify({'response': 'Unauthorized access. Failed.'}), 401
def get_app_info(appid, key): auth = MongoSave().auth(key) if auth == 1: data = collection.find({'_id': appid}) try: return jsonify(list(data)[0]), 200 except IndexError: return jsonify({'response':'error'}), 404 else: return jsonify({'response':'Wrong API key. Signup or login to get your API key'}), 401
def get_app_by_top_rank(rank, app_type, key): auth = MongoSave().auth(key) if auth == 1: if app_type.lower() == 'free': data = list(collection.find({'topchart_rank' :rank, 'price': '0'})) elif app_type.lower() == 'paid': data = list(collection.find({'topchart_rank' :rank, 'price': {'$ne': '0'}})) else: return jsonify({'response':'error'}), 404 if data: return jsonify({'response': list(data)}) return jsonify({'response':'error'}), 404 else: return jsonify({'response':'Wrong API key. Signup or login to get your API key'}), 401
def spider_stats(key): """ This method return spider crawling stats in json/dict format. Only for approved users. """ stats = MongoSave().get_spider_stats() import datetime playstats = [] for stat in stats: if stat['stats_logs'] is None: continue playstats.append(eval(stat['stats_logs'])) headers = ["Start Time", "Finish Time", "Finish Reason", "Downloaded MB's", "Item Scraped", "Status"] return render_template("spiderstats.html", playstats=playstats, headers=headers)
def get_app_by_category_rank(category, rank, app_type, key): auth = MongoSave().auth(key) if auth == 1: if app_type.lower() == 'free': #currently depending query with price = 'x' becuse error in is_free data = collection.find({'category': category, 'category_rank': rank, 'price': '0'}) elif app_type.lower() == 'paid': data = collection.find({'category': category, 'category_rank': rank, 'price': {'$ne': '0'}}) else: return jsonify({'response':'Wrong type. Type should be either "free" or "paid"'}), 404 try: return jsonify(list(data)[0]), 200 except IndexError: return jsonify({'response':'error'}), 404 else: return jsonify({'response':'Wrong API key. Signup or login to get your API key'}), 401
def forgotkey(): """ Forgot your API key? Recover with your email and password """ if not request.json: abort(400) umail = str(request.json['email']) upass = str(request.json['pass']) uhash = hashlib.sha1(upass+umail).hexdigest() #r.hset('SIGNUP', umail, uhash) key = MongoSave().get_key(umail, uhash) if key == 1: return render_template("response.html", response= uhash ), 201 elif key == -1: return render_template("response.html", response= 'Wrong email password combination. Please check the email and password'), 200 else: return render_template("response.html", response= 'No user with this email exists. Signup'), 400
def get_info_list(no_of_apps, key): auth = MongoSave().auth(key) #for single digit no if auth == 1: if no_of_apps%10 == no_of_apps: start = 0 end = no_of_apps elif no_of_apps%10 == 0: start = ((no_of_apps/10)*10)-10 end = (start+(no_of_apps%10))+10 else: start = ((no_of_apps/10)*10)-1 end = (start+(no_of_apps%10))+1 data = list(collection.find({})[start:end]) if data: return jsonify({'response' : data}), 200 return jsonify({'response':'error'}), 404 else: return jsonify({'response':'Wrong API key. Signup or login to get your API key'}), 401