コード例 #1
0
ファイル: TocoAPI.cs プロジェクト: pablo/tocoapi-cs
        public static void DirectProfile(Int32 p_Nid)
        {
            // prepare call
            MethodCall mc = Toco.GetProfileMethodCall(p_Nid);

            // replace later with properties
            Call c = new Call("http://www.tocorre.com/ext/rpc/rpc_api.php", mc);

            MethodResponse mr = c.Execute();

            Console.WriteLine(mr.ToString());
        }
コード例 #2
0
ファイル: TocoAPI.cs プロジェクト: pablo/tocoapi-cs
        // Execute multi :(
        public List<Tocobject> ExecuteSystemMultiCall()
        {
            MethodCall mc = new MethodCall(Toco.SYSTEM_MULTI_CALL_METHOD);

            // prepare unique parameter with multiple calls
            Value varray = new Value(tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY);
            foreach (MethodCall mcc in m_MethodCalls)
            {
                Value vcall = new Value(tocorre.XmlRpc.Type.XMLRPC_TYPE_STRUCT);
                vcall.AddToStruct("methodName", new Value(tocorre.XmlRpc.Type.XMLRPC_TYPE_STRING, mcc.method_name));
                Value vparams = new Value(tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY);
                foreach (Value param in mcc.parameters)
                {
                    vparams.AddToArray(param);
                }
                vcall.AddToStruct("params", vparams);
                varray.AddToArray(vcall);
            }
            mc.AddParameter(varray);
            Call c = new Call("http://www.tocorre.com/ext/rpc/rpc_api.php", mc);
            MethodResponse mr = c.Execute();

            // unique return is an array type Value. Each array element has a Value
            // corresponding to the return value of the nth method call queued
            List<Tocobject> ret = new List<Tocobject>();

            Int32 i = 0;
            foreach (MethodCall mcc in m_MethodCalls)
            {
                Value v = mr.values[0].array_value[i];
                switch (mcc.method_name)
                {
                    case LOGIN_METHOD:
                        if (v.type == tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY)
                            ret.Add(Session.FromValue(v.array_value[0]));
                        else
                            ret.Add(new Session(true, v));
                        break;
                    case PROFILE_METHOD:
                        if (v.type == tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY)
                            ret.Add(GenericValue.FromValue(v.array_value[0]));
                        else
                            ret.Add(new GenericValue(true, v));
                        break;
                    case SCRAPS_METHOD:
                        if (v.type == tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY)
                            ret.Add(Scrap.FromValue(v.array_value[0]));
                        else
                            ret.Add(new Scrap(true, v));
                        break;
                    case MSG_METHOD:
                        if (v.type == tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY)
                            ret.Add(Msgs.FromValue(v.array_value[0]));
                        else
                            ret.Add(new Msgs(true, v));
                        break;
                    case FLUSH_METHOD:
                        if (v.type == tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY)
                            ret.Add(GenericValue.FromValue(v.array_value[0]));
                        else
                            ret.Add(new GenericValue(true, v));

                        break;
                    case SET_MOTD_METHOD:
                        if (v.type == tocorre.XmlRpc.Type.XMLRPC_TYPE_ARRAY)
                            ret.Add(GenericValue.FromValue(v.array_value[0]));
                        else
                            ret.Add(new GenericValue(true, v));
                        break;
                    default:
                        throw new Exception("Unexpected method name: " + mcc.method_name);
                }
                i++;
            }

            return ret;
        }
コード例 #3
0
ファイル: TocoAPI.cs プロジェクト: pablo/tocoapi-cs
 public static Session DirectLogin(String p_User, String p_Password, Int32 p_Nid)
 {
     MethodCall mc = Toco.GetLoginMethodCall(p_User, p_Password, p_Nid);
     // replace later with properties
     Call c = new Call("http://www.tocorre.com/ext/rpc/rpc_api.php", mc);
     MethodResponse mr = c.Execute();
     return Session.FromValue(mr.values[0]);
 }