Skip to content
This repository has been archived by the owner on Jan 13, 2022. It is now read-only.

Commit

Permalink
Bug 1179878: Add API for FxA Activity.
Browse files Browse the repository at this point in the history
  • Loading branch information
pmac committed Sep 8, 2015
1 parent 37c9711 commit 58176a8
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 2 deletions.
16 changes: 16 additions & 0 deletions news/tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -199,6 +199,22 @@ def get_external_user_data(email=None, token=None, fields=None, database=None):
return user_data


@et_task
def add_fxa_activity(data):
record = {
'FXA_ID': data['fxa_id'],
'LOGIN_DATE': gmttime(),
'FIRST_DEVICE': 'y' if data['first_device'] else 'n',
}
# now do magic to parse the UA string.
# good deps I've found for this:
# * https://pypi.python.org/pypi/user-agents # depends on ua-parser
# * https://pypi.python.org/pypi/ua-parser
# doesn't seem either of those support py2.6 :(

apply_updates('Sync_Device_Logins', record)


@et_task
def update_fxa_info(email, lang, fxa_id, source_url=None, skip_welcome=False):
user = get_external_user_data(email=email)
Expand Down
5 changes: 3 additions & 2 deletions news/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@

from .views import (confirm, custom_unsub_reason, custom_update_phonebook,
custom_update_student_ambassadors, debug_user,
fxa_register, get_involved, list_newsletters, lookup_user, newsletters,
send_recovery_message, subscribe, subscribe_sms,
fxa_activity, fxa_register, get_involved, list_newsletters, lookup_user,
newsletters, send_recovery_message, subscribe, subscribe_sms,
unsubscribe, user)


urlpatterns = patterns('', # noqa
url('^get-involved/$', get_involved),
url('^fxa-register/$', fxa_register),
url('^fxa-activity/$', fxa_activity),
url('^subscribe/$', subscribe),
url('^subscribe_sms/$', subscribe_sms),
url('^unsubscribe/(.*)/$', unsubscribe),
Expand Down
30 changes: 30 additions & 0 deletions news/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import json
import re

from django.conf import settings
Expand All @@ -17,6 +18,7 @@
from news.models import Newsletter, Subscriber, Interest
from news.newsletters import get_sms_messages, newsletter_slugs
from news.tasks import (
add_fxa_activity,
add_sms_user,
confirm_user,
send_recovery_message_task,
Expand Down Expand Up @@ -97,6 +99,34 @@ def confirm(request, token):
return HttpResponseJSON({'status': 'ok'})


@require_POST
@csrf_exempt
def fxa_activity(request):
if not request.is_secure():
return HttpResponseJSON({
'status': 'error',
'desc': 'fxa-activity requires SSL',
'code': errors.BASKET_SSL_REQUIRED,
}, 401)
if not has_valid_api_key(request):
return HttpResponseJSON({
'status': 'error',
'desc': 'fxa-activity requires a valid API-key',
'code': errors.BASKET_AUTH_ERROR,
}, 401)

data = json.loads(request.body)
if 'fxa_id' not in data:
return HttpResponseJSON({
'status': 'error',
'desc': 'fxa-activity requires a Firefox Account ID',
'code': errors.BASKET_USAGE_ERROR,
}, 401)

add_fxa_activity.delay(data)
return HttpResponseJSON({'status': 'ok'})


@require_POST
@csrf_exempt
def fxa_register(request):
Expand Down

0 comments on commit 58176a8

Please sign in to comment.