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 })); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
/// <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); }
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) }); }