コード例 #1
0
        protected override object Execute(string host, ApiAttribute attr, Hashtable table, Type genericType)
        {
            if (attr == null)
            {
                throw new FubeiSdkException("接口未设置ApiAttribute");
            }
            var appConfig = GalileoApiConfig.Instance.GetApiConfig(attr.Category) ?? new GalileoApiConfig.ApiConfig();

            var param = new ApiRequestParam(attr)
            {
                AppId      = appConfig.AppId,
                VendorSn   = appConfig.VendorSn,
                BizContent = table.ContainsKey(ApiConstants.JsonTag)
                    ? table[ApiConstants.JsonTag].ToString()
                    : JsonConvert.SerializeObject(table, ApiConstants.JsonSerializerSettings)
            };

            var paramList = ConvertToKeyValueList(param, attr);
            // 根据vendorSn是否为空来确定使用AppSecret或者VendorSecret
            var secret = string.IsNullOrEmpty(appConfig.VendorSn) ? appConfig.AppSecret : appConfig.VendorSecret;

            var signature = SignatureGenerator.GetSign(paramList, p => p + secret);

            param.Signature = signature.Signature;
            paramList.Add(new KeyValuePair <string, object>(ApiConstants.Sign, signature.Signature));

            var data = DoRequest(host, attr, paramList);

            // 处理请求
            return(AfterExecution(data, genericType, new RequestCarrier
            {
                Host = host,
                RequestMethod = param.Method
            }));
        }
コード例 #2
0
        /// <summary>
        /// ダウンロードライセンス情報を取得
        /// </summary>
        /// <param name="licenseId">取得するライセンスID</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: default
        /// </remarks>
        public static void GetDownloadLicense(string licenseId, Action <DownloadLicense> onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();
            var request       = new GenericDataRequest <DownloadLicense>("/api/download_licenses/" + licenseId)
            {
                Params = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #3
0
        /// <summary>
        /// ダウンロードライセンスを無効化する
        /// </summary>
        /// <param name="licenseId">無効化するライセンスID</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: default
        /// </remarks>
        public static void DeleteDownloadLicense(string licenseId, Action <EmptySerializer> onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();
            var request       = new GenericDataRequest <EmptySerializer>("/api/download_licenses/" + licenseId)
            {
                Methods = HTTPMethods.Delete,
                Params  = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #4
0
        /// <summary>
        /// キャラクターモデルについているハートを取り消す
        /// </summary>
        /// <param name="characterModelId">ハートを消したいキャラクターモデルID</param>
        /// <param name="onSuccess">成功したときのコールバック</param>
        /// <param name="onError">失敗したときのコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: heart
        /// </remarks>
        public static void DeleteHeart(string characterModelId, Action <EmptySerializer> onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();
            var request       = new GenericDataRequest <EmptySerializer>("/api/hearts/" + characterModelId)
            {
                Methods = HTTPMethods.Delete,
                Params  = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #5
0
        /// <summary>
        /// モデルにハートをつける
        /// </summary>
        /// <param name="characterModelId">ハートをつけるキャラクターモデルID</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: heart
        /// </remarks>
        public static void PostHeart(string characterModelId, Action <EmptySerializer> onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();

            requestParams.AddParam("character_model_id", characterModelId);
            var request = new GenericDataRequest <EmptySerializer>("/api/hearts")
            {
                Methods = HTTPMethods.Post,
                Params  = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #6
0
        /// <summary>
        /// VRoidHubのピックアップモデル一覧を取得する (関連のリンク情報付き)
        /// </summary>
        /// <param name="count">取得するキャラクターモデル数 (MAX 100)</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: default
        /// </remarks>
        public static void GetStaffPicks(int count, Action <List <StaffPicksCharacterModel>, ApiLinksFormat> onSuccess,
                                         Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();

            requestParams.AddParam("count", count.ToString());
            var request = new GenericDataRequest <List <StaffPicksCharacterModel> >("/api/staff_picks")
            {
                Params = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #7
0
        /// <summary>
        /// ダウンロードライセンスを発行する
        /// </summary>
        /// <param name="characterModelId">キャラクターモデルID</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: default
        /// </remarks>
        public static void PostDownloadLicense(string characterModelId, Action <DownloadLicense> onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();

            requestParams.AddParam("character_model_id", characterModelId);

            var request = new GenericDataRequest <DownloadLicense>("/api/download_licenses")
            {
                Methods = HTTPMethods.Post,
                Params  = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #8
0
        /// <summary>
        /// ハートしたモデル一覧を取得する (関連のリンク情報付き)
        /// </summary>
        /// <param name="count">取得するキャラクターモデル数 (MAX 100)</param>
        /// <param name="maxId">ページング処理のための上限となるモデルID</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: default
        /// </remarks>
        public static void GetHearts(int count, string maxId, Action <List <CharacterModel>, ApiLinksFormat> onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();

            if (!string.IsNullOrEmpty(maxId))
            {
                requestParams.AddParam("max_id", maxId);
            }
            requestParams.AddParam("count", count.ToString());
            var request = new GenericDataRequest <List <CharacterModel> >("/api/hearts")
            {
                Params = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #9
0
        /// <summary>
        /// ユーザのアートワーク一覧を取得する
        /// </summary>
        /// <param name="user">取得対象のユーザ</param>
        /// <param name="count">取得するアートワークの数</param>
        /// <param name="maxId">ページング処理のための上限となるアートワークID</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: default
        /// </remarks>
        public static void GetUsersArtworks(User user, int count, string maxId,
                                            Action <List <Artwork>, ApiLinksFormat> onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();

            if (!string.IsNullOrEmpty(maxId))
            {
                requestParams.AddParam("maxId", maxId);
            }
            requestParams.AddParam("count", count.ToString());
            var request = new GenericDataRequest <List <Artwork> >("/api/users/" + user.id + "/artworks")
            {
                Params = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #10
0
        /// <summary>
        /// 複数のキャラクターモデルのプロパティ情報を一括取得する
        /// </summary>
        /// <param name="characterModelIds">取得したいキャラクターモデルのIDリスト</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        public static void PostCharacterModelsPropertiesBatch(List <string> characterModelIds,
                                                              Action <List <CharacterModelProperty> > onSuccess, Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();

            foreach (var characterModelId in characterModelIds)
            {
                requestParams.AddParam("ids[]", characterModelId);
            }

            var request = new GenericDataRequest <List <CharacterModelProperty> >("/api/character_models/properties/batch")
            {
                Methods = HTTPMethods.Post,
                Params  = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #11
0
        /// <summary>
        /// 複数のキャラクターのモデル情報をID指定でまとめて取得する
        /// </summary>
        /// <param name="characterModelIds">キャラクターモデルのID一覧. 最大100件まで対応可能</param>
        /// <param name="onSuccess">成功した時のコールバック</param>
        /// <param name="onError">失敗した時のコールバック</param>
        /// <remarks>
        /// 使用可能スコープ: default
        /// </remarks>
        public static void PostCharacterModelBatch(string[] characterModelIds, Action <List <CharacterModel> > onSuccess,
                                                   Action <ApiErrorFormat> onError)
        {
            var requestParams = new ApiRequestParam();

            for (int i = 0; i < characterModelIds.Length; ++i)
            {
                requestParams.AddParam("ids[]", characterModelIds[i]);
            }

            var request = new GenericDataRequest <List <CharacterModel> >("/api/character_models/batch")
            {
                Methods = HTTPMethods.Post,
                Params  = requestParams
            };

            request.SendRequest(onSuccess, onError);
        }
コード例 #12
0
        protected virtual List <KeyValuePair <string, object> > ConvertToKeyValueList(ApiRequestParam rp, Attribute attr)
        {
            var rk = string.IsNullOrEmpty(rp.VendorSn) ? ApiConstants.AppId : ApiConstants.VendorSn;
            var rs = string.IsNullOrEmpty(rp.VendorSn) ? rp.AppId : rp.VendorSn;

            return(new List <KeyValuePair <string, object> >
            {
                new KeyValuePair <string, object>(rk, rs),
                new KeyValuePair <string, object>(ApiConstants.Format, rp.Format),
                new KeyValuePair <string, object>(ApiConstants.SignMethod, rp.SignMethod),
                new KeyValuePair <string, object>(ApiConstants.Method, rp.Method),
                new KeyValuePair <string, object>(ApiConstants.Nonce, rp.Nonce),
                new KeyValuePair <string, object>(ApiConstants.BizContent, rp.BizContent),
                new KeyValuePair <string, object>(ApiConstants.Version, rp.Version)
            });
        }