From 4122028465be5edd2b3dbd7b81c2439ccadfb194 Mon Sep 17 00:00:00 2001 From: Michael Dlesk Date: Mon, 2 Jan 2012 22:52:38 -0500 Subject: [PATCH] Updated API --- API.md | 15 +++++++++++++-- Gamez.db | Bin 819200 -> 842752 bytes lib/DBFunctions.py | 23 ++++++++++++++++++++++- lib/DBFunctions.pyc | Bin 12043 -> 12804 bytes lib/WebRoot.py | 18 +++++++++++++++--- lib/WebRoot.pyc | Bin 25302 -> 25412 bytes 6 files changed, 50 insertions(+), 6 deletions(-) diff --git a/API.md b/API.md index 85235dc..a9bce41 100644 --- a/API.md +++ b/API.md @@ -1,7 +1,7 @@
**API Documentation** -The below documentation will use http://localhost:8085/ as the base URL for Gamez +The below documentation will use http://127.0.0.1:8085/ as the base URL for Gamez and the api_key of "ikzFRzA1Y8I1UajNJAOQ803TbTYk1vLB64A9SxrAxAw"
*General* @@ -19,5 +19,16 @@ Currently, no API actions are implemented. *Parameters* API_KEY - The Gamez API Key (Can be retrieved from Settings page) - +MODE - The type of request. Valid values: ["search"] +TERM - Used with search and should be part of the game name +SYSTEM - The name of the system corresponding with the action + +*Modes* + +**SEARCH** +This mode searches for a game. A json response will be returned containing all games matching the search term. The term parameter should be supplied. If it is blank or not supplied, all games will be returned + +Examples: +Get list of all games: http://127.0.0.1:8085/api?api_key=ikzFRzA1Y8I1UajNJAOQ803TbTYk1vLB64A9SxrAxAw&mode=search +Search for games that contain "Super" and are only for the Wii: http://127.0.0.1:8085/api?api_key=ikzFRzA1Y8I1UajNJAOQ803TbTYk1vLB64A9SxrAxAw&mode=search&term=super&system=wii \ No newline at end of file diff --git a/Gamez.db b/Gamez.db index 60f0a2076c3e65486ea4a3304fa22e4574e2d8ee..04d01fb50bc9be12a62b242b9d146a386538aa7e 100644 GIT binary patch delta 60013 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%0A^3qm6C*MqhedlN@yTxqh4FhYCxckYHh6@ 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 delta 170399 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 z z&IO9=0hAOA8)$YCO3yqAn_(p_zKmfbF&tO+d4@&aXWwwKLiEWttemZsda{*`?I{OZ zu}Q#+D;K(0aZ*FY3c;tESfwY{${qu-sy(ip=VC<$R#Gf%tl8B~dSNBqV}Mq5#FcYg zusA7TNwKI2R(fG2-D3b!I#`O&a>2^?6f2}y*kE%LvGir;i70PaExye5>y(Y_i7TJ? zjEcO^c2BWF@X0o+oV}EKVI?iT46H5`SFZ5DlJ_ZC;!if%?4lt(O~lF`1DK229E+M*r6<QJNMcPV{iv5rI)d6wh3>=mFqm?BI&c;DprU-*~XQ#>{3tGQYpO* ztF9AQu6D7uOID&!HrDKtfnIM|Np~0kRvmF=$OVf`Z?Qs(MNP2M3o8R1U${sw6>Pr? zmfSdCNwKiOX01SavVzJE1AwYMuC!dNaz4ch85TCyoI5O?nb{rkT$&bMW*Z@p`r^v% zo?(&o+3qV=h(6hdmAeI{o^C;<@G`8rPF%Uo!%EVpScyN?!&>TzwX(wi=A!Gwm786x zxGz{qvaqpc7Y*r!m2`&zVAT;@| z7c5(k^0k1tlMObzW=KzKMrCIKSk)d^4!c;HAh42LVPnmHu+j@F>COVcsw1wv;({en z99Xg|YJ!zsSV?yl09GAwW!;S7c9GR z_ZF+ZtUG@>gbBUPgTJ|F+qc7`jrfgk zxlqjcpZ)#CDxoLaz;f17>d9Iv ziUp4J3L9+J3Zy41sBA0%tJ>r0$u3rTpJJ8l3L9(AAC}(C><^n^HLV`Y z4^=@Lj;oh?hDF9FTbZvCd$J8HXWXS;SWTzf)%_k=GCl=M_{j#FwHN8hUMh9c zu@|++)r(!M_$gS)u&}Y_K3Eb+#hTVh2bPYZxO$Nb76&#|tde43gU$IFa!C96f;hKl zTV^SwwBk6kkb{0x+H?uG;9gDRf!IzkOJ;TyY-h7E6_+%Sa&RR;nuzGigJ1jfm z>Rm2aycDnmpKP$%B}00ehLsZOe6VVdt9Q6q@lvpoUQrXP^u$^zkq)ccY8{ zmh4o)l4DU1Y^fJk(+cU>wk{M`A9lgwzJMji!UmgjhormqP`UIsxBn6!Qnkj_2VA81 z9!N>BsEJg1A5QP)b!l2W7JETtAg;dZ85sGgJp;um(I?x$vJ+8ynutGj^7()KYZqA6 z9#;>!Sn*S^5`3zOReEBr)JTU_?Q!)57b|{>1&$O88*6sakX~3#Yor6Kj=1`q3l={G zEIAf6!AdWzrZv)mRYzQX+6623Q>>C>VS~*%#L}JZ!Xd6D#bbH34$)9tYj{RQQV-jL zuMvE*jVfm^rCwM~i^l@Xg$Cp5`z}}<)nKto0IDWf>4nv_NIJ0Uh^y~>I>tRz|3SaS}MeAk}A&3NSG%G=ViHLkwyBE|PWN{WSz zG&>9B%gnQ|8P?Luu^0=xTJ^-W(>=o?MU_p#*N8pYhLtmxQZKM%{N!;JcSw8Ba9lgZ z#fqC6F4l-W*;unnhV;T(S|ObeRvmHeL>DY>3RqGsYJx>?D6FLw(t%Y+Tsz(ci<@FG zCdI-Ao3#Sz$qFv7W*m?TE7mFiS(`Zxc13o zXJvk{cOtChSlC#1{$RKC!dhA){b&cv@h4ocY@Wz+Op=8SHs=pXdF^GVr$beLShmKs zkGn|ae2O(PENrCNX(&DOH0+kKR4T_}EGYEFwX2SORA}H1`-(MUPqtC*Y%E)PVeN|K zb?H_|T>G30mfaJ9CHPbmtn|WKS|J@+b;PyHT(AVKfhEJj2Af?n&}+#GDizXUReN0f ztcz6@)QU9{ENWtvo>(gt(qUD5T>G?(RlcWKBf-MPy7N4QNqXja$a860JQiC)qCc)( z>lqd~J#59iM)1ittem-&db$Ob;<2#mI&tlQixuw$E8(Y_SfwY{N`Z7()gIRdJ*?!X zij@=#8*6rfL$4jy`a2gmb;Px{3l{IyF4jn~u)*%^4Y6(MZN?|Id&8~PxYp|;mG3Fm z$gi-G?wke-6M7&0m;c`UOMK>GT00hdL1Zwl6`p~Sp~|k&YlNR{1IyV#!Gf z48*ltU9gOKpjadPWP{Bv8q(85tkg)SQSEW6vFC?l7$zi)pi82QNOJ_Y8}qPqw&TBlu(+R(2XnPt)-Cw*O!m zR@!-&@QjNU8NQ(td#Z_5dSb1VN2gKkaqUSLE9qvil44-tB_LeYJ{p5-e(hm0nm+tD^&}j<|Nj1xsmP zmNybCY_M4?ke*hIN_BKt)gIU0bFs?z6l>&H*jRJ(u=Hi-dDsl=Y3W#1AmpJWuAk!> z7FnO{h`vtf$u_Kt&xevC~3+rilbc|aUitDGkU~yk8apYLoU~}$}Jkl1MTJ%-jVc8nj zPjZpU`4sCUSky!+y$^q2&Mqw-Vx@Gfil6aKCaz!N85c>PY%;!1@X0o=oVk>GVSRt+ zJk*8a`e$6QI4WR?KGg&(y|A8ENavGPM_k|Mg2hn*ONxaJHoIs@Pm4ySLOQH!kLwq@ zSaDRal3`I3tMtVB!|G!Z$)#dF&&4Y5Q>>F=VPnlX#L}DX#v!J)W2rI$(qLTg_Y8}q zPj)w6C;DU?R?b{XJ>7yz?O2tf;#EytZ@F0UQv=01@u!+tr3Y)ZKsu~ykL#cJu#)pB zR&p$Ctl0%ldSN{+kj^|*M_j+c1&jXzmK+NkY|bB&M%o(KjGwCd!?HE5U+yBs_drU5 zg^e^j3#GT4S(sLi#afUUit9IehDFjRyBn_)d$J8HXDy{(Siio*9hMz&J-T4=Qos^> zvcYDT4C!gfs1!)&gQcD2?K&4LUW(<742zmrr6<-(fpl2a9@npSvErp*CBwqTnl%FH zh4r*RIq9PB`JQ5(6bl<{ZX%Yx%sdgx$I?pmShA)e8jkDt9Q&xyz)KAm>x7t+*+oNo znuwJG=|``_YJ8iE75BvgM}~!sHRle=B5hHb=CrCiEL-FH%`Q^;o?@N+3L9y57D~@N z3wcYE){ezk*uqY^>SkO?qKHEs+kaI^z06E?73H0hR=dnqZ|D z)*ncoiGWo{T)*E1%T7_il3-zj-FYIyBxkmpiI`T8B}ojVR$PC@Gc1xm+1hxW*pqEo zIfE(n!g^Xg7Fb;<(d)9+kYeyTh&4xc-!jRKBNJC&8j7Qt5s8 z8@qU0x{=h5#ahs4$Biz}xJdbAYvXl-PquMoEn9lBmOr!oJsGTOkL%xbvErv-CHQ1x z%`O?z3+ri(bYRsH*WYo$;-`Qm!=ffw>4o*QMmn(Si0f~9Eqy`gYjGD(6$IlVD+E&H2O9neD%(gjMZv<6|CHQa;5>j)jdiyJ$!+Y@{X9 zv28k7jrY1>@n7v?gCq+ZY|bB&McT)YE&lCE+kT1h z7N(VBu@>sF_Qj2hJi{XAlWhVv2tC<`m9v&oFKk@U@y$RT199Vg7c8&nTg3*kr3p(u^u~>IU9c3Z=qWZxv9Q5r*EihWu-1%9iF8aj6TIA97&Z zq*&Ahi(YToNGqfRTNakv*zbW=`P05)gA@xJY|bB+SpKQar`0*$Az4pYb&%J#3wS7+?df~~Z zUTyXC_FmcBy0SH}Pu~HDHh=KzC++*=B5i6aF^6546!HO+u#*ilyIM$3t3{*X8g^jd0ISm}k0v^YAj>WCXXE?BDY z^cEW=SJ+^4b5LbpcT)}nd#MzTV=K8a4fJ~ zh-L5=7c9R_!EFc7=^K=Lt#7RZ*H>t9rt+HEw*tLt46>VuRd@dPqyX5C4PtO=&Z1q=jR-1^n={ z6*nIC42&crs(fq^d9n>GYcA50x%^QzbXZ;|Zam;(<)@mk5_qz)W)}_Vg^l|ZW zs}J^G7c8$NfF-@6CRpi(jkG>GRzL^K@m(%henrf3OnQY4HfsgalND6zqr;{BU$;oGsEJj2VyzTNhgI!y<53qY z4h&WjENrYfhe&2_FF&;S#i~OrTjR#pJf!kHkdj_uBhAi2>6vF?`GTfWHI~mG1ztP7 ztJ>qn3ocfCpB1nK-|eTtewqeOD}wo)Q#P0k00!DvErm) zCGu1gtMtVB(DrNtSk)dsXt-E$Qm~R;VPoBSfrCkUVIwV$ezb$t_m7 z&b7~ALT~fnpF3&W7Qjav0e$z_LAP8_u|aBu4YZwkp;)>yO~O6h-|lL@)a>j2huz=a zym-&?3!6QAj(>lx=f=xVzxMd91N(m1)%DlAe$+jE>W{krxO?O8b;qf1pL+a9-#+z( zCwotLuW>F)jlaIR@5$z`9BF*eSZ>TV#vAW9-fFzsc%kuh$je8q+G;V2J-?*kR z(CBG|#{R}djdL4kHcsZB>Rjo&`Q6t!|E=#n&-s_X`*qHL z`@8pY{*~|E%K7hn_d3ph_q%_Hou@hf_gvGxuWR$AeJ4M8*8e}I45kF82&Mog4<-jD3nl|54JL)@4GKIl z+yCrk^I-H5WfNs%XJ%p&Wff%w(=4JaV47K!8B8;YGJ$DEQARM$Aj$xuMgEKY2h;yV g{(10p{Hhxv|}1Dw_i1G8LW}0FRzHc>n+a diff --git a/lib/DBFunctions.py b/lib/DBFunctions.py index 58d820f..cbfa7a1 100644 --- a/lib/DBFunctions.py +++ b/lib/DBFunctions.py @@ -324,4 +324,25 @@ def AddXbox360GamesIfMissing(): cursor.execute(sql) connection.commit() cursor.close() - return \ No newline at end of file + return + +def ApiGetGamesFromTerm(term,system): + db_path = os.path.join(os.path.abspath(""),"Gamez.db") + sql = "SELECT GAME_NAME,SYSTEM FROM GAMES where game_name like '%" + term.replace("'","''") + "%' AND SYSTEM LIKE '%" + system + "%' ORDER BY GAME_NAME ASC" + data = "" + connection = sqlite3.connect(db_path) + cursor = connection.cursor() + cursor.execute(sql) + result = cursor.fetchall() + for record in result: + try: + game_name = str(record[0]) + system = str(record[1]) + rowdata = '{"GameTitle":"' + game_name + '","System":"' + system + '"},' + data = data + rowdata + except: + continue + cursor.close() + data = data[:-1] + data = "[" + data + "]" + return data \ No newline at end of file diff --git a/lib/DBFunctions.pyc b/lib/DBFunctions.pyc index 925ddb6a3fa35b8745fccf670d5ee0b65349dc83..6e1c363f87a2365630d5a34d2d536b42a1a0173a 100644 GIT binary patch delta 526 zcmXX@O;6iE5Ph?@lQmk14`KyFJ{CV7tQF zzdo6{bjC3P-cLgkqG00UPp~w#rz1+NChKb*X_5N-c=o%1G>`&a6Oy-up@1uMa8qKN zhnpEXPi7*q(9Izg7&5ewGR$KLWK8DJEg&_ti!`ur9eI5Fgfx%lhc>bT22CVIqy@+V zYC4IHq;p5ucLYH)wz+WWzJW1rfGHDck#8p2Uq>J!K6&r3wspCZE=L?C%kVf#I{Jw# zE4Od>8UUPtMcB9tXmbba_cFmistC4uV?6CLPU;o^T zTb<-f>@WNMF{b=QKN|FtxTgt26WL5h|T{>;m@{x+k3G6NJa0ci&yF1|HU`W7oAL$HS6W@bhWT_z2&$zq08Od1T6 S7Z~VGK58h)s4@Avp*8?LoDjkQ diff --git a/lib/WebRoot.py b/lib/WebRoot.py index 64c84b5..e3cb740 100644 --- a/lib/WebRoot.py +++ b/lib/WebRoot.py @@ -1,7 +1,7 @@ import cherrypy import json import os -from DBFunctions import GetGamesFromTerm, GetGameDataFromTerm, AddGameToDb, GetRequestedGames, RemoveGameFromDb, UpdateStatus, GetLog, ClearDBLog,AddWiiGamesIfMissing,AddXbox360GamesIfMissing +from DBFunctions import GetGamesFromTerm, GetGameDataFromTerm, AddGameToDb, GetRequestedGames, RemoveGameFromDb, UpdateStatus, GetLog, ClearDBLog,AddWiiGamesIfMissing,AddXbox360GamesIfMissing,ApiGetGamesFromTerm from UpgradeFunctions import CheckForNewVersion,IgnoreVersion,UpdateToLatestVersion import ConfigParser from time import sleep @@ -548,7 +548,7 @@ def clearlog(self): raise cherrypy.InternalRedirect('/') @cherrypy.expose - def api(self,api_key=''): + def api(self,api_key='',mode='',term='',system=''): config = ConfigParser.RawConfigParser() configFilePath = os.path.join(WebRoot.appPath,'Gamez.ini') config.read(configFilePath) @@ -558,7 +558,19 @@ def api(self,api_key=''): elif(api_key <> systemApiKey): return json.dumps({"Error" : "Invalid API Key"}) else: - response = {"Error" : "API Not Yet Implemented"} + if(mode == 'search'): + return ApiGetGamesFromTerm(term,system) + else: + response = {"Error" : mode + " Mode Not Implemented"} + + #TODO: Get List of requested games + + #TODO: Add Game to requested list + + #TODO: Remove game from requested list + + #TODO: Update game list from gamezapp.org web service + return json.dumps(response) return json.dumps({"Error" : "Unkown Error"}) diff --git a/lib/WebRoot.pyc b/lib/WebRoot.pyc index 2e0edf51e8280607e1bd3e2cb7a9f58b0bf1a97f..3b1275e17d2875843c24553507deaac2fcee2bcb 100644 GIT binary patch delta 1798 zcma)6OKclO82)GNJZ&d_#E&?pF~w=OX>m$QlaQ7Yw=`*`CWv*Q%BD_ZceiC-Zyd5) zQNU4>kp4h#5qNhbp~f2T2c-9U?tM zc9`^VgU6^6Aw5En^HQac>?rBc9bSy|nB=ulB~EsN^u!LYpY(po6E>2hC-2Y$qz_QW zXeXnSj1Ia+v`Ms}r^sNGSG$CV)@||4sXm@zKP23UILWPAGp0LJv`uGvt!mGkYc~Ij zz08XB=ai!?Ae?Lbdg+>%f9jcM!Mfl3x0i+Ltm{@F85Ab8Fu(^uCe(INk$O*jjVvkzcy815&p;2ZkFO3r7S;^`%)PAC-*-5d2jYN&qPZ-T!|3WHc;?K zO9BP}O^5jJPrf@G!x_AB5y6PsiG53}{A2B)@a9+TqeDnbEW_WUUoT z+s*%77@gP;!2^K302QzgFbv25h5&m24+64)5&n$+RpubbhXArDqo57}n&CXmXBP*9 z&7fpyBD}WvXL1~p69U|B0T-$(7p+UvR>f@i&C_`=-#Yi|pv;tvtOE*7Q|KNoBD?gJ zLM)BcAVMVngjmim0$idp!;4;Tr?$#@0Kx zwQHTYGv74j!@!ZIR6l=qDH4=PmUTeAv=D!DX)LVWk6@w#(z8{=OwU#M&r5?FvI*{` z0I+lzFeX4wiLz5&agi?LioNP+$i5tOjn={aQp^^&X=&{6ew^nW*R-`eMdJ(SwG^H> zDSnn<0k(_zSs#|z2b54Z|N8vf(Ppul?^1Rpe`h(&a(ruf^qd@o2v3$)-eq20tvaSQ zh(koLJpz~nOaXF$#{nk+rvRq`1;7&EBH$7~RvckLzEYe>B$DWDQttyp`n3!y&Oa}n zRJ88vrT$4djpcLPNp54RTDGb62x;lum9!Lw@q4`X0pajZOo4~*d%S!_|Ub?uEvh}+s%wJ%T6|C zr&uH*l@@(dR68H`!6rqh!ZOkC7cGJx)@` zsF5H&L9p{v<1pDhr1$LUlB6f4EWOR^mh>jVZ zbc^UF(N#T92BWeX6tP+VieE_$@dDf7-O3y61@}E=lKG=_i}7E46&7_z{D1j_G2}5X zfWLnHDF0(Fz&{U;x^D*GjpU+YSBnEe0A#IpKuWly=@RQq3c2-t7oRMA><(v#x>(Fz zILUnDDcGa|89eSY=AV#Y`0nzrzKH`Fa3-=*1CS7qmIdSh?TC0p z`>=paHB`z$3d8CltPf=6KWe8%Tpi_4N8seu>p)9Th>uhSl03f`CE&5j_8fd2L^oeu zb4)`!3&RJW3I<8@6r@QQd#wC^<&zm1{X;Ow&g^FZ;f##y_vf|;C5tRr7ZmN*?swzw zKmVEkqOjq&SJFl45q^*d2FokJETpI9Al#j=DCrYo-NH0qs@mpjMQhE{j*Ar^9#8Xg zdS;>k`$qw%00RIOFbH@Aa1ziD7y>*7DDt=Ud*xw>rvb7*k3%{GXlFGdmJY&enT{OS z=DNA&Ae&b=EXUN^Ss#XDg5P=Zx7--SaRCml&1!S)CF|u`t6_SH@gEl6>Xl`bX?Mc7 zO@r|gG&dG6%%Opp0CeTN_*!=bI7D@ZyS}B6qfp&Pbw7!K>f$L7`wDIOXjANW(x#7Y zGGdzw4=?4IpARhc3%tCPFI$X^Acs_=NfN|MdKp&EN?5SvUXUyi`mD;#wueWv|9$3h8 zy(053mMbj9<10xe!uZh22g!CRy$b*bIZ(W#nqZ?mTRl^iPg)N&u$I@%yuRLSnc6XI z_5mgUPXf*XrU2-Ib^&k+Fb7xwECN;mh5(gB{{|H;%I{YvGSO}fB&kQBmeDOkO7Vf( zMgB@HbymKu@;2=i%X=9u+teb$Rt9)&qtUQx4#wrW-6$GOTkGccYNt9dtn$Pn&#$Hv Pv+M{9v)JwzW?|(&?Q$Ju