Guest User

Untitled

a guest
Jun 7th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.57 KB | None | 0 0
  1. from flask import Flask
  2. from flask import request
  3. from flask import Response
  4. from flask import json
  5. import pymysql
  6. from datetime import datetime
  7. from calendar import timegm
  8. import time
  9. import random
  10. import string
  11.  
  12. app = Flask(__name__, static_url_path='/img', static_folder='./img')
  13. conn = pymysql.connect(host='localhost', user='비밀이지롱', password='안알랴줌',
  14. db='mashup', charset='utf8')
  15.  
  16. @app.route("/")
  17. def hello():
  18. return Response(
  19. response=json.dumps(
  20. {
  21. 'message':'hell world!'
  22. }
  23. ),
  24. status=200,
  25. mimetype='application/json'
  26. )
  27.  
  28. @app.route("/api/user", methods=['POST'])
  29. def signup():
  30. facebook_id = request.form.get('facebook_id')
  31. name = request.form.get('name')
  32. profile_image = request.form.get('profile_image')
  33.  
  34. print(request.form)
  35. if is_arg_empty(facebook_id) or is_arg_empty(name) or is_arg_empty(profile_image):
  36. return return_empty_parameter()
  37.  
  38. curs = conn.cursor()
  39. sql = "select * from user where facebook_id=%s"
  40. curs.execute(sql, facebook_id)
  41. rows = curs.fetchall()
  42. print(rows)
  43. if len(rows) == 0:
  44. sql = "insert into user (name,facebook_id,profile_image) values (%s, %s, %s)"
  45. curs.execute(sql, (name, facebook_id, profile_image))
  46. conn.commit()
  47.  
  48. return Response(
  49. response=json.dumps(
  50. {
  51. "message":"signup success"
  52. }
  53. ),
  54. status=200,
  55. mimetype='application/json'
  56. )
  57. return Response(
  58. response=json.dumps(
  59. {
  60. "message":"login success"
  61. }
  62. ),
  63. status=200,
  64. mimetype='application/json'
  65. )
  66.  
  67. @app.route("/api/post", methods=['POST'])
  68. def create_post():
  69. user_id = request.form.get('user_facebook_id')
  70. content = request.form.get('content')
  71. file = request.files.get('image')
  72.  
  73. if is_arg_empty(user_id) or is_arg_empty(content) or is_arg_empty(file):
  74. return return_empty_parameter()
  75.  
  76. filetype = file.filename.split(".")[-1]
  77. file.filename = id_generator() + "." + filetype
  78. file.save('./img/' + file.filename)
  79.  
  80. curs = conn.cursor()
  81. sql = "select * from user where facebook_id=%s"
  82. curs.execute(sql, user_id)
  83. rows = curs.fetchall()
  84. if len(rows) == 0:
  85. return Response(
  86. response=json.dumps(
  87. {
  88. "message":"user not found",
  89. "user_facebook_id":user_id
  90. }
  91. ),
  92. status=404,
  93. mimetype='application/json'
  94. )
  95.  
  96.  
  97. sql = "insert into post (user_id,content,content_image,date) values (%s, %s, %s, %s)"
  98. curs.execute(sql, (user_id, content, file.filename, int(time.time())))
  99. conn.commit()
  100.  
  101. return Response(
  102. response=json.dumps(
  103. {
  104. "message":"write success"
  105. }
  106. ),
  107. status=200,
  108. mimetype='application/json'
  109. )
  110.  
  111. def id_generator(size=20, chars=string.ascii_uppercase + string.digits):
  112. return ''.join(random.choice(chars) for _ in range(size))
  113.  
  114. @app.route("/api/post", methods=['GET'])
  115. def get_post():
  116. if random.randint(0,10) ==1:
  117. return Response(
  118. response=json.dumps(
  119. {
  120. 'message':'unexpected error'
  121. }
  122. ),
  123. status=500,
  124. mimetype='application/json'
  125. )
  126.  
  127. curs = conn.cursor()
  128. sql = "select * from post join user on post.user_id = user.facebook_id order by date desc"
  129. curs.execute(sql)
  130. rows = curs.fetchall()
  131. result = []
  132. for row in rows:
  133. result.append(
  134. {
  135. 'post_id':row[0],
  136. 'content':row[2],
  137. 'content_image':"/img/"+row[3],
  138. 'date':int(row[4]),
  139. 'writer':{
  140. 'facebook_id':row[1],
  141. 'name':row[6],
  142. 'profile_image':row[8]
  143. }
  144. }
  145. )
  146. return Response(
  147. response=json.dumps(result),
  148. status=200,
  149. mimetype='application/json'
  150. )
  151.  
  152. def convertToTimestamp(date):
  153. fmt = '%Y-%m-%d %H:%M:%S %z'
  154. return timegm(datetime.strptime(date, fmt).utctimetuple())
  155.  
  156. def is_arg_empty(arg):
  157. if arg == None:
  158. return True
  159. else:
  160. return False
  161.  
  162. def return_empty_parameter():
  163. return Response(
  164. response=json.dumps(
  165. {
  166. 'message': 'missing parameters'
  167. }
  168. ),
  169. status=400,
  170. mimetype='application/json'
  171. )
  172.  
  173. if __name__ == "__main__":
Add Comment
Please, Sign In to add comment