예제 #1
0
def setLabel(request):
    user = Users.objects.get(token=request.POST['token'])
    if user:
        user_gmail_id = user.user_gmail_id
        credentials = getFile('.credentials/' + user_gmail_id +
                              '.credentials.json')
        service = build('gmail', 'v1', credentials=credentials)
        Newlabel = MakeLabel('read later')
        CreateLabel(service, user_gmail_id, Newlabel)
        return Response(
            prepareResponse({}, Newlabel, True, 'data returned successfuly',
                            []))
    else:
        return Response(
            prepareResponse({}, Newlabel, True, 'you are not autherize', []))
예제 #2
0
def getLabels(request):
    user = Users.objects.get(token=request.POST['token'])
    if user:
        user_gmail_id = user.user_gmail_id
        credentials = getFile('.credentials/' + user_gmail_id +
                              '.credentials.json')
        service = build('gmail', 'v1', credentials=credentials)
        results = service.users().labels().list(userId='me').execute()
        labels = results.get('labels', [])

        return Response(
            prepareResponse({}, labels, True, 'data returned successfuly', []))
    else:
        return Response(
            prepareResponse({}, Newlabel, True, 'you are not autherize', []))
예제 #3
0
def authorizeUrl(request):
    setting = getFileJson('.credentials/application.json')
    flow = OAuth2WebServerFlow(client_id=setting['web']['client_id'],
                               client_secret=setting['web']['client_secret'],
                               scope=(getattr(settings, "SCOPS", None)),
                               redirect_uri=getattr(settings, "HOST", None) +
                               'google/auth')
    return Response(
        prepareResponse({}, {"url": flow.step1_get_authorize_url()}, True,
                        'data returned successfuly', []))
예제 #4
0
def trainingModelForEvent(request):
    receiver = request.POST['receiver']
    event = request.POST['event']
    history = request.POST['history']  # json which contaion history messages
    path = 'data/models/' + receiver
    try:
        os.mkdir(path)
    except OSError:
        pass
    SVMobj = SVMtraining(history, path)
    SVMobj.training()
    return Response(prepareResponse([], [], [], True, 'learn model... ', []))
예제 #5
0
def emailStringPredection(request):
    """
    email string Predection function.
    """
    sender = request.POST['sender']
    receiver = request.POST['receiver']
    message_id = request.POST['message_id']
    header = request.POST['header']
    body = request.POST['body']
    fullContent = header + ' ' + body
    predObj = Prediction(body, receiver)
    result = predObj.predict()
    if (result[0] == 'spam'):
        # emailInstance = Email.objects.create(
        #     sender=sender,
        #     message_id=message_id,
        #     header=header,
        #     types='spam',
        # )
        return Response(
            prepareResponse([], [], result, True, 'this email is spam', []))
    else:
        return Response(
            prepareResponse([], [], result, True, 'this email is ham', []))
예제 #6
0
def initialPreprocessing(request):
    """
    initialPreprocessing function.
    """
    emailPipeline = Pipeline([
        ("Email to Words", EmailToWords()),
    ])
    if (is_json(request.body)):
        postData = json.loads(request.body)
        # sender = request.POST['sender']
        receiver = postData['receiver']
        message_id = postData['message_id']
        subject = postData['subject']
        body = postData['body']
        event = postData['event']
    else:
        receiver = request.POST['receiver']
        message_id = request.POST['message_id']
        subject = request.POST['subject']
        body = request.POST['body']
        event = request.POST['event']

    # stemming content into the original words and remove stop words
    body = emailPipeline.fit_transform([body])
    # stemming content into the original words and remove stop words
    subject = emailPipeline.fit_transform([subject])
    ins = initialFunctions()
    ins.create_df_traing(receiver, subject, body, event, message_id)
    filename = str(message_id) + ".txt"
    content = {
        'id': message_id,
        'data': {
            'body': [word for word in body.split(' ') if word != ""],
            'subject': [word for word in subject.split(' ') if word != ""]
        },
        'event': event
    }
    return Response(
        prepareResponse([], [], content, True, 'data processed successfully',
                        []))
예제 #7
0
def setCredentials(request):
    setting = getFileJson('.credentials/application.json')
    code = request.GET['code']
    # create flow
    flow = OAuth2WebServerFlow(client_id=setting['web']['client_id'],
                               client_secret=setting['web']['client_secret'],
                               scope=(getattr(settings, "SCOPS", None)),
                               redirect_uri=getattr(settings, "HOST", None) +
                               'google/auth')
    # save credentials
    credentials = flow.step2_exchange(code)
    # get token
    token = credentials.access_token

    # get user info
    respUserInfo = requests.get(
        "https://www.googleapis.com/oauth2/v1/userinfo?access_token={accessToken}"
        .format(accessToken=token))
    userInfoData = respUserInfo.json()

    # save user info
    setFile('.credentials/' + userInfoData['id'] + '.credentials.json',
            credentials)
    setFileJson('.credentials/' + userInfoData['id'] + '.userInfo.json',
                userInfoData)

    data = {
        'first_name': userInfoData['first_name'],
        'last_name': userInfoData['last_name'],
        'email': userInfoData['email'],
    }
    ins = initialFunctions()
    ins.setUserData(data)
    return Response(
        prepareResponse({}, userInfoData, True, 'data returned successfuly',
                        []))