
    gg4/                        d dl Z d dlmZmZmZ d dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZ  ee          Zdej        d	<    ee
          Z e !                    e           e"                    d          d             Z#e$                    d          d             Z%e$                    d          d             Z&e"                    d          d             Z'e$                    ddg          ed                         Z(e$                    ddg          eed                                     Z)e$                    ddg          eed                                     Z*e$                    ddg          eed                                     Z+e$                    ddg          ee ,                    d          d                                      Z-e$                    d!dg          ee ,                    d"          d#                                     Z.e$                    d$dg          eed%                                     Z/e$                    d&dg          eed'                                     Z0e$                    d(dg          eed)                                     Z1e$                    d*dg          ed+                         Z2e$                    d,dg          eed-                                     Z3e$                    d.dg          eed/                                     Z4e$                    d0dg          eed1                                     Z5e$                    d2dg          eed3                                     Z6e$                    d4dg          eed5                                     Z7e$                    d6dg          eed7                                     Z8e$                    d8dg          eed9                                     Z9e$                    d:dg          eed;                                     Z:e$                    d<dg          eee ,                    d          d=                                                 Z;e$                    d>dg          eed?                                     Z<e$                    d@dg          eedA                                     Z=e$                    dBdg          eedC                                     Z>e$                    dDdg          eedE                                     Z?e$                    dFdg          eedG                                     Z@e$                    dHdg          eedI                                     ZAe$                    dJdg          eedK                                     ZBe$                    dLdg          eedM                                     ZCe$                    dNdg          eedO                                     ZDe$                    dPdg          eedQ                                     ZEe$                    dRdg          eedS                                     ZFe$                    dTdg          eedU                                     ZGe$                    dVdg          eee ,                    d          dW                                                 ZHe$                    dXdg          eedY                                     ZIe$                    dZdg          eed[                                     ZJe$                    d\dg          eed]                                     ZKe$                    d^dg          eed_                                     ZLe$                    d`dg          eeda                                     ZMe$                    dbdg          eedc                                     ZNe$                    dddg          eede                                     ZOe$                    dfdg          eee ,                    d          dg                                                 ZPe$                    dhdg          eedi                                     ZQe$                    djdg          eee ,                    d"          dk                                                 ZRe$                    dldg          eee ,                    d"          dm                                                 ZSe$                    dndg          eedo                                     ZTe$                    dpdg          eedq                                     ZUe$                    drdg          eeds                                     ZVe$                    dtdg          eedu                                     ZWe$                    dvdg          eedw                                     ZXe$                    dxdg          eedy                                     ZYe$                    dzdg          eed{                                     ZZe$                    d|dg          eee ,                    d}          d~                                                 Z[e$                    ddg          eed                                     Z\e$                    ddg          eee ,                    d          d                                                 Z]e$                    ddg          eed                                     Z^e$                    ddg          eed                                     Z_e$                    ddg          eed                                     Z`e$                    ddg          eed                                     Zae$                    ddg          eed                                     Zbe$                    ddg          eed                                     Zce$                    ddg          eed                                     Zde$                    ddg          eed                                     Zee$                    ddg          eed                                     Zfe$                    ddg          eed                                     Zge$                    ddg          eed                                     Zhe$                    ddg          eed                                     Zie$                    ddg          eed                                     Zje$                    ddg          eed                                     Zke$                    ddg          eed                                     ZldS )    N)Flaskjsonifysend_from_directory)require_token)user_serviceexercise_servicefeedback_servicemuscle_servicenotification_servicerequest_servicetask_serviceworkout_servicecalendar_servicestatistic_servicemuscle_card_serviceuser_stat_serviceequipment_servicefriendship_servicemessage_service)track_usage)Limiter)get_remote_addressi    MAX_CONTENT_LENGTH)key_func  c                 (    t          ddi          dfS )Nerrorz File too large. Max size is 2MB.r   r   es     /var/www/wisegym.app/api/main.py	too_larger"      s    G?@AA3FF    /c                  (   	 t           j                            t           j                            t                    dd          } t          | d                                          S # t          $ r}dt          |           ddfcY d }~S d }~ww xY w)Ndocsz
index.htmlzutf-8)encodingz%<h1>500 Internal Server Error</h1><p>z</p>i  )	ospathjoindirname__file__openread	Exceptionstr)r)   r    s     r!   indexr1      s    Iw||BGOOH55v|LLD7+++00222 I I ICs1vvCCCSHHHHHHHIs   A%A( (
B2BBBz/docs/assets/<path:filename>c                 ^    t          t          j                            dd          |           S )Nr&   assets)r   r(   r)   r*   )filenames    r!   serve_assetsr5      s"    rw||FH==xHHHr#     c                 (    t          ddi          dfS )Nr   zRoute not foundr6   r   r   s    r!   	not_foundr8      s    G./00#55r#   z/stats/api_usageGET)methodsc                  P    t          j                    \  } }t          |           |fS N)r   get_api_usager   )datastatuss     r!   usage_statsr@   $   s'     %244LD&4==&  r#   z/users/id/<int:user_id>c                 *    t          j        |           S r<   )r   get_user_by_iduser_ids    r!   rB   rB   *   s     &w///r#   z!/users/username/<string:username>c                 *    t          j        |           S r<   )r   get_user_by_usernameusernames    r!   rF   rF   0   s     ,X666r#   z/users/search/<string:name>c                 *    t          j        |           S r<   )r   get_users_by_display_name)names    r!   rJ   rJ   6   s     1$777r#   z/users/registerPOSTz5 per minutec                  (    t          j                    S r<   )r   register_user r#   r!   rN   rN   <        %'''r#   z/users/loginz10 per minutec                  (    t          j                    S r<   )r   
login_userrO   r#   r!   rR   rR   C   s     "$$$r#   z/users/deletec                  (    t          j                    S r<   )r   delete_userrO   r#   r!   rT   rT   I        #%%%r#   z/users/filterc                  (    t          j                    S r<   )r   filter_usersrO   r#   r!   rW   rW   O   s     $&&&r#   z/users/upload_pfpc                  (    t          j                    S r<   )r   upload_profile_picturerO   r#   r!   
upload_pfprZ   U   s     .000r#   z /users/get_pfp/<string:username>c                 *    t          j        |           S r<   )r   get_profile_picturerG   s    r!   r\   r\   [   s     +H555r#   z/users/updatec                  (    t          j                    S r<   )r   update_user_fieldrO   r#   r!   r^   r^   `        )+++r#   z
/exercisesc                  (    t          j                    S r<   )r   get_exercisesrO   r#   r!   ra   ra   g   s     )+++r#   z/exercises/createc                  (    t          j                    S r<   )r   create_exerciserO   r#   r!   rc   rc   m        +---r#   z/exercises/deletec                  (    t          j                    S r<   )r   delete_exerciserO   r#   r!   rf   rf   s   rd   r#   z/exercises/filterc                  (    t          j                    S r<   )r   filter_exercisesrO   r#   r!   rh   rh   y   s     ,...r#   z/exercises/upload_imagec                  (    t          j                    S r<   )r   upload_exercise_imagerO   r#   r!   rj   rj           1333r#   z/exercises/updatec                  (    t          j                    S r<   )r   update_exercise_fieldrO   r#   r!   rm   rm      rk   r#   z
/feedbacksc                  (    t          j                    S r<   )r	   get_all_feedbacksrO   r#   r!   get_feedbacksrp      s     -///r#   z/feedbacks/submitc                  (    t          j                    S r<   )r	   submit_feedbackrO   r#   r!   rr   rr      s    
 +---r#   z/feedbacks/deletec                  (    t          j                    S r<   )r	   delete_feedbackrO   r#   r!   rt   rt      rd   r#   z/muscles/<string:muscle_name>c                 *    t          j        |           S r<   )r
   get_muscle_by_name)muscle_names    r!   rv   rv      s     ,[999r#   z/musclesc                  (    t          j                    S r<   )r
   get_all_musclesrO   r#   r!   ry   ry      s     )+++r#   z/muscles/updatec                  (    t          j                    S r<   )r
   update_muscle_fieldrO   r#   r!   r{   r{      s     -///r#   z/equipmentsc                  (    t          j                    S r<   )r   get_all_equipmentsrO   r#   r!   get_equipmentsr~      s     /111r#   z/equipments/createc                  (    t          j                    S r<   )r   create_equipmentrO   r#   r!   r   r           -///r#   z/equipments/deletec                  (    t          j                    S r<   )r   delete_equipmentrO   r#   r!   r   r      r   r#   z/equipments/updatec                  (    t          j                    S r<   )r   update_equipment_fieldrO   r#   r!   update_equipmentr      s     3555r#   z/notifications/sendc                  (    t          j                    S r<   )r   send_notificationrO   r#   r!   r   r      s      1333r#   z/notifications/<int:user_id>c                 *    t          j        |           S r<   )r   get_notifications_for_userrC   s    r!   get_user_notificationsr      s      :7CCCr#   z/notifications/deletec                  (    t          j                    S r<   )r   delete_notificationrO   r#   r!   r   r      s      3555r#   z	/requestsc                  (    t          j                    S r<   )r   get_all_requestsrO   r#   r!   get_requestsr           +---r#   z/requests/submitc                  (    t          j                    S r<   )r   submit_requestrO   r#   r!   r   r          
 )+++r#   z/requests/acceptc                  (    t          j                    S r<   )r   accept_requestrO   r#   r!   r   r           )+++r#   z/requests/rejectc                  (    t          j                    S r<   )r   reject_requestrO   r#   r!   r   r      r   r#   z/tasksc                  (    t          j                    S r<   )r   get_all_tasksrO   r#   r!   	get_tasksr      rP   r#   z/tasks/createc                  (    t          j                    S r<   )r   create_taskrO   r#   r!   r   r      rU   r#   z/tasks/deletec                  (    t          j                    S r<   )r   delete_taskrO   r#   r!   r   r     rU   r#   z/tasks/updatec                  (    t          j                    S r<   )r   update_task_fieldrO   r#   r!   update_taskr     r_   r#   z	/workoutsc                  (    t          j                    S r<   )r   get_workouts_by_userrO   r#   r!   r   r     s     /111r#   z/workouts/createc                  (    t          j                    S r<   )r   create_workoutrO   r#   r!   r   r     r   r#   z/workouts/deletec                  (    t          j                    S r<   )r   delete_workoutrO   r#   r!   r   r     r   r#   z/workouts/modify_exercisec                  (    t          j                    S r<   )r   modify_workout_exerciserO   r#   r!   r   r   %  s    
 2444r#   z/workouts/updatec                  (    t          j                    S r<   )r   update_workout_fieldrO   r#   r!   r   r   ,  s    
 /111r#   z
/calendarsc                  (    t          j                    S r<   )r   get_calendar_by_userrO   r#   r!   get_calendarr   4       0222r#   z/calendars/dayc                  (    t          j                    S r<   )r   get_calendar_for_dayrO   r#   r!   get_calendar_dayr   :  r   r#   z/calendars/schedulec                  (    t          j                    S r<   )r   add_calendar_entryrO   r#   r!   schedule_workoutr   @  s     .000r#   z/calendars/deletec                  (    t          j                    S r<   )r   delete_calendar_entryrO   r#   r!   r   r   F  rk   r#   z/muscle_cardsc                  (    t          j                    S r<   )r   get_muscle_cards_for_userrO   r#   r!   get_all_muscle_scoresr   M  s     8:::r#   z/muscle_cards/scorec                  (    t          j                    S r<   )r   get_muscle_scorerO   r#   r!   r   r   S       /111r#   z/muscle_cards/setc                  (    t          j                    S r<   )r   set_muscle_scorerO   r#   r!   r   r   Y  r   r#   z/muscle_cards/resetz3 per minutec                  (    t          j                    S r<   )r   reset_muscle_scoresrO   r#   r!   r   r   _  s    
 2444r#   z/user_statsc                  (    t          j                    S r<   )r   get_user_statsrO   r#   r!   r   r   g       +---r#   z/user_stats/createc                  (    t          j                    S r<   )r   create_user_statrO   r#   r!   r   r   m  s    
 -///r#   z/user_stats/updatec                  (    t          j                    S r<   )r   update_user_statrO   r#   r!   r   r   t  r   r#   z/user_stats/deletec                  (    t          j                    S r<   )r   delete_user_statrO   r#   r!   r   r   z  r   r#   z/user_stats/entryc                  (    t          j                    S r<   )r   add_stat_entryrO   r#   r!   r   r     r   r#   z/user_stats/entriesc                  (    t          j                    S r<   )r   get_stat_entriesrO   r#   r!   r   r     r   r#   z/user_stats/entry/updatec                  (    t          j                    S r<   )r   update_stat_entryrO   r#   r!   r   r          .000r#   z/user_stats/entry/deletec                  (    t          j                    S r<   )r   delete_stat_entryrO   r#   r!   r   r     r   r#   z/user_stats/entry/latestc                  (    t          j                    S r<   )r   get_latest_stat_entryrO   r#   r!   r   r     s     2444r#   z/friendsc                  (    t          j                    S r<   )r   get_friendsrO   r#   r!   r   r     s     )+++r#   z/friends/requestc                  (    t          j                    S r<   )r   send_friend_requestrO   r#   r!   r   r     s     1333r#   z/friends/acceptc                  (    t          j                    S r<   )r   accept_friend_requestrO   r#   r!   r   r     s     3555r#   z/friends/blockc                  (    t          j                    S r<   )r   block_friendrO   r#   r!   r   r     s     *,,,r#   z/friends/removec                  (    t          j                    S r<   )r   remove_friendrO   r#   r!   r   r     s     +---r#   z/messages/sendc                  (    t          j                    S r<   )r   send_messagerO   r#   r!   r   r     s     ')))r#   z/messages/deletec                  (    t          j                    S r<   )r   delete_messagerO   r#   r!   r   r     r   r#   z/messages/conversationc                  (    t          j                    S r<   )r   get_conversationrO   r#   r!   r   r     r   r#   )mr(   flaskr   r   r   authr   	functionsr   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   functions.statistic_servicer   flask_limiterr   flask_limiter.utilr   __name__appconfiglimiterinit_apperrorhandlerr"   router1   r5   r8   r@   rB   rF   rJ   limitrN   rR   rT   rW   rZ   r\   r^   ra   rc   rf   rh   rj   rm   rp   rr   rt   rv   ry   r{   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   r#   r!   <module>r      s   				 5 5 5 5 5 5 5 5 5 5       b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b  b 3 3 3 3 3 3 ! ! ! ! ! ! 1 1 1 1 1 1 eHoo#2
  
'-
.
.
.      #G G G 3I I I )**I I +*I #6 6 6 w//! !  0/! $ug660 0   760 .@@7 7   A@7 (5'::8 8   ;:8 vh//~( (   0/( >F8,,% %    -,% ?VH--& &   .-& ?UG,,' '   -,' 111 1   211 -w??6 6  @?6 ?VH--, ,   .-, <%)), ,   *), 11. .   21. 11. .   21. 00/ /   10/ $vh774 4   874 114 4   214 <%))0 0   *)0 11~. .    21. 11. .   21. *UG<<: :   =<: :w'', ,   (', vh//0 0   0/0 =5'**2 2   +*2 &220 0   320 &220 0   320 &226 6   326  6(334 4   434 )E7;;D D   <;D "VH556 6   656 ;((. .   )(. x00~, ,    10, x00, ,   10, x00, ,   10, 8eW%%( (   &%( ?VH--& &   .-& ?VH--& &   .-& ?VH--, ,   .-, ;((2 2   )(2 x00~, ,    10, x00, ,   10, &995 5     :95 x002 2     102 <%))3 3   *)3 eW--3 3   .-3  6(331 1   431 114 4   214 ?UG,,; ;   -,;  5'222 2   322 112 2   212  6(33~5 5    435 =5'**. .   +*. &22~0 0    320 &220 0   320 &220 0   320 11. .   21.  5'220 0   320 %x881 1   981 %x881 1   981 %w775 5   875 :w'', ,   (', x004 4   104 vh//6 6   0/6 fX..- -   /.- vh//. .   0/. fX..* *   /.* x00, ,   10, #eW55. .   65. . .r#   