From 26b208d738c1e33140442b27ab71bdac685b4c2c Mon Sep 17 00:00:00 2001 From: Adam Frisby Date: Sat, 9 Jun 2007 01:21:53 +0000 Subject: [PATCH] * Sugilite user server can now return user profile information by account name (Hi MingChen) - uses the REST GET /user/name/ method. --- OpenGridServices.suo | Bin 139776 -> 139776 bytes .../OpenGridServices.UserServer/Main.cs | 8 +-- .../UserManager.cs | 51 ++++++++++++++++++ 3 files changed, 55 insertions(+), 4 deletions(-) diff --git a/OpenGridServices.suo b/OpenGridServices.suo index 460303ad6d5ca68cb57f28e1972d32e68e86763c..acde093678a841a2b1b4c2ffdfce19258d7e7c7e 100644 GIT binary patch delta 8377 zcmc(kdvF!?9mRK(kVz+`Bs8W{t%wsFN=BwTD~6Va3sd2z8*AHxj^MJOCFlwk1+BqXgK@!%V2M-^OdeQOtW6NAhN+5F z>XaThc4ZjRk{{Hl3RRV=3RTwp328jlW(jRM1bj6reE3gL!AGlL_(rO#RG(F4eJ4rd z8{ad7oI ztW;E;ti#;k9}wQCBK$nFi?scc+4*KPovBjO)IfDZSvXNUEI)g7Qk^x=mWAwb*0VI- zdHmi7OITHw4B;1dZMbS@ctSWqm-YD6j+%+ZYXrBIr)KP)o^IIv-pIO?_Bn|isz}A* z-LA@>*t?`z-$pae!<{OYc8?CR_L>o??sv=655DpB!qooa%HH;(nw#~rwW@WhTU6^+ zx2k$oJ!~)CpB{5yZ)HTY#rk+uYP(e1Z0Is+La#By*CkEpwK=|S`))MjI2oZ|OL2v;+rpqKz%mN12^uM#BlxG(5$O;PKJ~pPJ*FWZ&n_2%c!) z7tG4I-jlUMaJ}IQ>2YRBGlHi|6MU8#!41*`pPl2IZr_*92%ctNqZwy-rgTJbli}sk zXGp_lnGxJ9P4GN3g6B#T{FNNveEV9=2)@L=1!e>r-4_&RBVd(0N{eY?`|21A0^NE5u)jNqH330{}uTW?>l z8Ns*Mcbgf(cS;j{x7iiat6^OKjfMnomL_;3u?&5xiZ3;3v&Ez#mED+i6DdQ}+GXjNm=e1n)JwSo$%u z=grhF3SQI>4S#P)@C(ue|KWee;E(pbY)0@t`~GA`@SD;EA22&t`gdk;nX!;}rH6C< z-!~-q9ch9;$T0>5nFB1)RycmF4cJ#`MsSrh!AG0%*g7a5Y=jw48p-%(b_|T`&oiV( zJ3NfX*jOW7EzNCttQo%X_MK*y5F00r?{qU(H$|GW+F+KDPD-=5sb=`1v$TV8njxq4 zOdF@0vAP-3tmHzo#nSa=GtFo?Tbh1z%@WeHqzP^|!#7V_z9_iFkl>4LoNq?(B58sb zn=O}aGHW%XVY@WJ9cBsXE2IftYKE^%8sGAm>HHJiY2ykT30^5p@bzY0(rsovW;9$a zO~W;23F#Z93BK73-#Tf0>&?hr8`*fPA;EV@6MUB$D_&)Gw;2ulq-nUxEFpcbG{KwA z@NJRCcfT3I_t_UcU`X&*X@Va%yGr^Vv$Povw@cIThh_=s$D|2&r`wv&)gO?*{9qnxKKNMer6eRD(9&9oHd*A`I)W4$ID7K zc)m2jEoPT#dx6;kGx~i^MZZO6ESUG&D&8@8v!)@&Ru#rJ6^vk>rUdhC%m(v8CHQKy z8QKyK`=%NFR;uWCy&1vXD*E-P;&%*;t5g_Q162gypu%{QDjVD@O~^-_OXGgzMt%AZ z!JAas;CrPB-fYG-{+^29hs-*)y~FJLW;A?QMZZVPSn&^3^n26{U%yJeDA;buinpmS zK5j0w26Mb8w~70&{*7-!gFN2Hxe>R)IXVK4W^l**c)HL0jVUkV zy%xMN`!^;&)q_3WbJ;8S{^x1DkEi>H8$*7^`*^y~{EdlQ=Ae)F${fb?zosBR<9$5c zbN%x)-pA8@{Qk!SVerTM_{kgPZ@kxKkKh0DHQvY5J=dQ{Zyv_`c)E}BH{Qn!kMcL( zYj)#r+<6=CnI}s58v~EtJdF2oZj`_AK7R2zKS*lzM`*m~jV4w5>U|q_j1EU_xVA97 zZo^CS!)5*2tzQ;3DTrq-51Tv;olzXj>lW|bgFkfYJQLib;wR!k*CNYOpf*0(eZF6$NqtzhRNpmf3AJ>`SGyF$K-#n!r{)3{{i}# BWw-zU delta 394 zcmYk2Pbh=e{K~=(Z+Vkip|z8PmXm`P8Y$ZR$iY)jJw5gL^gLhF7EN1B&+~#cv2@>$i+qS& zSm46}o~IxDnB)YR<2V=VDl2RdJE`6v)g=bZ<5m+e?u(%kkWlhV==RN_*`}c*+JePE zZ$cSyazhO4`3Iw}+&F(#_5Ze1Z!aXtl?7hm2e1)xBkTeZgSjlqxgj>o)XuGRCIT7` zGQIgJ)8zAP&C#?6sQ0bVgy9*Lmh!F|tf*ow$2pjW!_Aj2q65S+bn406ra%E=_~8+~ zYe90o0XtYc>md8RXPgTIB^YIL0(r{36pj2Wn zzkY4oP@&oPpnwZc5e!$Gs8LxJNHGjX#_9phK+C87 UserSessions = new Dictionary(); @@ -64,7 +62,7 @@ namespace OpenGridServices.UserServer [STAThread] public static void Main(string[] args) { - Console.WriteLine("Starting...\n"); + Console.WriteLine("Launching UserServer..."); OpenUser_Main userserver = new OpenUser_Main(); @@ -108,9 +106,11 @@ namespace OpenGridServices.UserServer BaseHttpServer httpServer = new BaseHttpServer(8002); httpServer.AddXmlRPCHandler("login_to_simulator", m_userManager.XmlRpcLoginMethod); + httpServer.AddRestHandler("GET", "/user/name/", m_userManager.RestGetUserMethodName); httpServer.AddRestHandler("DELETE", "/usersessions/", m_userManager.RestDeleteUserSessionMethod); httpServer.Start(); + m_console.Status("Userserver 0.3 - Startup complete"); } diff --git a/OpenGridServices/OpenGridServices.UserServer/UserManager.cs b/OpenGridServices/OpenGridServices.UserServer/UserManager.cs index 913d0fcf9f..773fa71b3f 100644 --- a/OpenGridServices/OpenGridServices.UserServer/UserManager.cs +++ b/OpenGridServices/OpenGridServices.UserServer/UserManager.cs @@ -655,5 +655,56 @@ namespace OpenGridServices.UserServer return "OK"; } + public string CreateUnknownUserErrorResponse() + { + return "Unknown user"; + } + + /// + /// Converts a user profile to an XML element which can be returned + /// + /// The user profile + /// A string containing an XML Document of the user profile + public string ProfileToXml(UserProfileData profile) + { + System.IO.StringWriter sw = new System.IO.StringWriter(); + XmlTextWriter xw = new XmlTextWriter(sw); + + // Header + xw.Formatting = Formatting.Indented; + xw.WriteStartDocument(); + xw.WriteDocType("userprofile", null, null, null); + xw.WriteComment("Found user profiles matching the request"); + xw.WriteStartElement("users"); + + // User + xw.WriteStartElement("user"); + xw.WriteAttributeString("firstname", profile.username); + xw.WriteAttributeString("lastname", profile.surname); + xw.WriteAttributeString("uuid", profile.UUID.ToStringHyphenated()); + xw.WriteAttributeString("inventory", profile.userInventoryURI); + xw.WriteAttributeString("asset", profile.userAssetURI); + xw.WriteEndElement(); + + // Footer + xw.WriteEndElement(); + xw.Flush(); + xw.Close(); + + return sw.ToString(); + } + + public string RestGetUserMethodName(string request, string path, string param) + { + UserProfileData userProfile = getUserProfile(param.Trim()); + + if (userProfile == null) + { + return CreateUnknownUserErrorResponse(); + } + + return ProfileToXml(userProfile); + } + } }