def register_view(request): if not is_json(request.body): return HttpResponseBadRequest(json.dumps({'error': 'not valid data'}), mimetype="application/json") data = json.loads(request.body) username = '' password = '' if 'username' in data: username = data['username'] if 'password' in data: password = data['password'] if username.strip() == '' or password.strip() == '': return HttpResponseBadRequest(json.dumps({'error': 'invalid username or password'}), mimetype="application/json") try: user = User.objects.get(username=username) except User.DoesNotExist: user = None if user is None: user = User.objects.create_user(username, '', password) return HttpResponse(json.dumps({'message': 'success'}), mimetype="application/json") else: return HttpResponseBadRequest(json.dumps({'error': 'please choose another username'}), mimetype="application/json")
def login_view(request): if not is_json(request.body): return HttpResponseBadRequest(json.dumps({'error': 'not valid data'}), mimetype="application/json") data = json.loads(request.body) username = '' password = '' if 'username' in data: username = data['username'] if 'password' in data: password = data['password'] if username.strip() == '' or password.strip() == '': return HttpResponseBadRequest(json.dumps({'error': 'invalid username or password'}), mimetype="application/json") print 'login', username, password user = authenticate(username=username, password=password) if user is not None: if user.is_active: login(request, user) return HttpResponse(json.dumps({'message': 'login successful'}), mimetype="application/json") else: return HttpResponseBadRequest(json.dumps({'error': 'account blocked!'}), mimetype="application/json") else: return HttpResponseBadRequest(json.dumps({'error': 'invalid login'}), mimetype="application/json")
def mark_article_read_or_delete_view(request): """ Endpoint view: help to mark article read, unread or delete for a particular user """ if request.user.is_authenticated(): if not is_json(request.body): return HttpResponseBadRequest(json.dumps( {'error': 'not valid data'}), mimetype="application/json") data = json.loads(request.body) read = False delete = False article = None userarticle = None if 'article_id' in data: article_id = data['article_id'] try: article = HackerNewsArticles.objects.get(article_id=article_id) except HackerNewsArticles.DoesNotExist: article = None if article is None: return HttpResponseBadRequest(json.dumps( {'error': 'need to specify article!'}), mimetype="application/json") if 'read' in data: read = data['read'] elif 'remove' in data: delete = data['remove'] else: return HttpResponseBadRequest(json.dumps( {'error': 'should specify what action!'}), mimetype="application/json") userarticle, created = UserNewsRelation.objects.get_or_create( user=request.user, article=article) if read: userarticle.read = not userarticle.read if delete: userarticle.deleted = not userarticle.deleted userarticle.save() return HttpResponse(json.dumps({'message': 'Marked Succesfully!'}), mimetype="application/json") else: return HttpResponseBadRequest(json.dumps( {'error': 'user should login!'}), mimetype="application/json")
def mark_article_read_or_delete_view(request): """ Endpoint view: help to mark article read, unread or delete for a particular user """ if request.user.is_authenticated(): if not is_json(request.body): return HttpResponseBadRequest(json.dumps({'error': 'not valid data'}), mimetype="application/json") data = json.loads(request.body) read = False delete = False article = None userarticle = None if 'article_id' in data: article_id = data['article_id'] try: article = HackerNewsArticles.objects.get(article_id=article_id) except HackerNewsArticles.DoesNotExist: article = None if article is None: return HttpResponseBadRequest(json.dumps({'error': 'need to specify article!'}), mimetype="application/json") if 'read' in data: read = data['read'] elif 'remove' in data: delete = data['remove'] else: return HttpResponseBadRequest(json.dumps({'error': 'should specify what action!'}), mimetype="application/json") userarticle, created = UserNewsRelation.objects.get_or_create(user=request.user, article=article) if read: userarticle.read = not userarticle.read if delete: userarticle.deleted = not userarticle.deleted userarticle.save() return HttpResponse(json.dumps({'message': 'Marked Succesfully!'}), mimetype="application/json") else: return HttpResponseBadRequest(json.dumps({'error': 'user should login!'}), mimetype="application/json")
def get_item_details(self, item_id): """ In hackernews Stories, comments, jobs, Ask HNs and even polls are just items. They're identified by their ids, which are unique integers, and can be fetched using https://hacker-news.firebaseio.com/v0/item/<item_id>.json?print=pretty. """ stdLogger.debug('Started Getting Item Details for id %s', item_id) url = "https://hacker-news.firebaseio.com/v0/item/%s.json?print=pretty" % (str(item_id),) response = urlopener(url) item_details = {} if response: data = response.read() if is_json(data): item_details = json.loads(data) print item_details return item_details
def get_n_topstory_ids(self): """ This method returns ids of top n stories in hackernews we can fetch them from https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty """ stdLogger.debug('Started Getting all top story ids') url = "https://hacker-news.firebaseio.com/v0/topstories.json?print=pretty" response = urlopener(url) list_of_top_story_ids = [] if response: data = response.read() if is_json(data): list_of_top_story_ids = json.loads(data) # if len(list_of_top_story_ids) > self.n: # list_of_top_story_ids = list_of_top_story_ids[:self.n] # print list_of_top_story_ids return list_of_top_story_ids