Adding create API endpoint
This commit is contained in:
parent
0b7711fe26
commit
09172d9c1e
3 changed files with 31 additions and 2 deletions
|
|
@ -11,7 +11,7 @@
|
||||||
* Added the capability to change password.
|
* Added the capability to change password.
|
||||||
* Corrected a bug into `pwdhash`: it accepted an argument, but pulled data from the form instead of processing it. Now it uses the argument.
|
* Corrected a bug into `pwdhash`: it accepted an argument, but pulled data from the form instead of processing it. Now it uses the argument.
|
||||||
* Schema changes: added column `telegram` to `UserProfile` table. To update schema, execute the script `migrate_0_6_to_0_7.py`
|
* Schema changes: added column `telegram` to `UserProfile` table. To update schema, execute the script `migrate_0_6_to_0_7.py`
|
||||||
* Adding public API. Each of the API endpoints take a mandatory query string argument: the access token, generated by a separate endpoint at `/get_access_token` and stored into the client. All API routes start with `/api/V1`. Added endpoints `feed`.
|
* Adding public API. Each of the API endpoints take a mandatory query string argument: the access token, generated by a separate endpoint at `/get_access_token` and stored into the client. All API routes start with `/api/V1`. Added endpoints `feed` and `create`.
|
||||||
|
|
||||||
## 0.6.0
|
## 0.6.0
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,8 +78,8 @@ def uploads(id, type='jpg'):
|
||||||
@app.route('/get_access_token', methods=['POST'])
|
@app.route('/get_access_token', methods=['POST'])
|
||||||
def send_access_token():
|
def send_access_token():
|
||||||
try:
|
try:
|
||||||
|
data = request.get_json(True)
|
||||||
try:
|
try:
|
||||||
data = request.json
|
|
||||||
user = User.get(
|
user = User.get(
|
||||||
(User.username == data['username']) &
|
(User.username == data['username']) &
|
||||||
(User.password == pwdhash(data['password'])))
|
(User.password == pwdhash(data['password'])))
|
||||||
|
|
|
||||||
29
app/api.py
29
app/api.py
|
|
@ -65,3 +65,32 @@ def feed(self):
|
||||||
for message in query:
|
for message in query:
|
||||||
timeline_media.append(get_message_info(message))
|
timeline_media.append(get_message_info(message))
|
||||||
return {'timeline_media': timeline_media}
|
return {'timeline_media': timeline_media}
|
||||||
|
|
||||||
|
@bp.route('/create', methods=['POST'])
|
||||||
|
@validate_access
|
||||||
|
def create(self):
|
||||||
|
data = request.get_json(True)
|
||||||
|
text = data['text']
|
||||||
|
privacy = int(data.get('privacy', 0))
|
||||||
|
message = Message.create(
|
||||||
|
user=self,
|
||||||
|
text=text,
|
||||||
|
pub_date=datetime.datetime.now(),
|
||||||
|
privacy=privacy)
|
||||||
|
# Currently, API does not support files.
|
||||||
|
# create mentions
|
||||||
|
mention_usernames = set()
|
||||||
|
for mo in re.finditer(r'\+([A-Za-z0-9_]+(?:\.[A-Za-z0-9_]+)*)', text):
|
||||||
|
mention_usernames.add(mo.group(1))
|
||||||
|
# to avoid self mention
|
||||||
|
mention_usernames.difference_update({self.username})
|
||||||
|
for u in mention_usernames:
|
||||||
|
try:
|
||||||
|
mention_user = User.get(User.username == u)
|
||||||
|
if privacy in (MSGPRV_PUBLIC, MSGPRV_UNLISTED) or \
|
||||||
|
(privacy == MSGPRV_FRIENDS and
|
||||||
|
mention_user.is_following(self) and
|
||||||
|
self.is_following(mention_user)):
|
||||||
|
push_notification('mention', mention_user, user=user.id)
|
||||||
|
except User.DoesNotExist:
|
||||||
|
pass
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue