leopard8352
2023-12-04 8871a733498c8d717714b83bb096b7738224541a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
// Fill out your copyright notice in the Description page of Project Settings.
 
#pragma once
 
#include "CoreMinimal.h"
#include "Define/TapCDKeyResponse.h"
#include "Interfaces/IHttpRequest.h"
#include "UObject/Object.h"
#include "HttpTapCDKey.generated.h"
 
 
class IHttpResponse;
class IHttpRequest;
 
UCLASS(BlueprintType,Blueprintable)
class TAPTAP_API UHttpTapCDKey : public UObject
{
    GENERATED_BODY()
    
public:
 
    DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FHttpTapCDKeyRequestSuccessEventHandle,
        const FTapCDKeyResponse&,resp,
        int32,errCode,
        bool,isSuccess);
    UPROPERTY(BlueprintAssignable)
    FHttpTapCDKeyRequestSuccessEventHandle HttpTapCDKeyRequestSuccessEventHandle;
 
    void OnProcessRequestComplete(
        TSharedPtr<IHttpRequest, ESPMode::ThreadSafe> request,
        TSharedPtr<IHttpResponse, ESPMode::ThreadSafe> response, bool arg) const;
 
    /**
     * @brief 请求taptap的cdkey,请求结束后会回调HttpTapCDKeyRequestSuccessEventHandle事件
     * @param key 请求的cdkey
     */
    UFUNCTION(BlueprintCallable)
    void StartRequest(
        const FString& key);
 
    /**
     * @brief 生成时间戳(13位)
     * @return 
     */
    UFUNCTION(BlueprintCallable)
    int64 SpawnTimeStamp();
 
    /**
     * @brief 根据时间戳,ClientID和CharacterID获取taptapcdkey的签名
     * @param timestamp 
     * @return 
     */
    UFUNCTION(BlueprintPure,BlueprintNativeEvent)
    FString GetSign(int64 timestamp) const;
 
    UPROPERTY(EditAnywhere,BlueprintReadWrite)
    FString ClientID;
 
    /**
     * @brief taptapCDKey参数 - CharacterID
     */
    UPROPERTY(EditAnywhere,BlueprintReadWrite)
    FString CharacterID;
 
    /**
     * @brief taptapCDKey验证用的随机字符串
     */
    UPROPERTY(EditAnywhere,BlueprintReadWrite)
    FString NonceStr = TEXT("Noces");
 
    /**
     * @brief 请求Timeout时间,秒.超过此时间后会返回失败
     */
    UPROPERTY(EditAnywhere,BlueprintReadWrite)
    int32 TimeOut = 5;
};