123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187 |
- // ----------------------------------------------------------------------------
- // <copyright file="WebRpc.cs" company="Exit Games GmbH">
- // Loadbalancing Framework for Photon - Copyright (C) 2018 Exit Games GmbH
- // </copyright>
- // <summary>
- // This class wraps responses of a Photon WebRPC call, coming from a
- // third party web service.
- // </summary>
- // <author>developer@photonengine.com</author>
- // ----------------------------------------------------------------------------
- #if UNITY_4_7 || UNITY_5 || UNITY_5_3_OR_NEWER
- #define SUPPORTED_UNITY
- #endif
- namespace Photon.Realtime
- {
- using System.Collections.Generic;
- using ExitGames.Client.Photon;
- #if SUPPORTED_UNITY || NETFX_CORE
- using Hashtable = ExitGames.Client.Photon.Hashtable;
- using SupportClass = ExitGames.Client.Photon.SupportClass;
- #endif
- /// <summary>Reads an operation response of a WebRpc and provides convenient access to most common values.</summary>
- /// <remarks>
- /// See LoadBalancingClient.OpWebRpc.<br/>
- /// Create a WebRpcResponse to access common result values.<br/>
- /// The operationResponse.OperationCode should be: OperationCode.WebRpc.<br/>
- /// </remarks>
- public class WebRpcResponse
- {
- /// <summary>Name of the WebRpc that was called.</summary>
- public string Name { get; private set; }
- /// <summary>ResultCode of the WebService that answered the WebRpc.</summary>
- /// <remarks>
- /// 0 is: "OK" for WebRPCs.<br/>
- /// -1 is: No ResultCode by WebRpc service (check <see cref="OperationResponse.ReturnCode"/>).<br/>
- /// Other ResultCode are defined by the individual WebRpc and service.
- /// </remarks>
- public int ResultCode { get; private set; }
- [System.Obsolete("Use ResultCode instead")]
- public int ReturnCode
- {
- get { return ResultCode; }
- }
- /// <summary>Might be empty or null.</summary>
- public string Message { get; private set; }
- [System.Obsolete("Use Message instead")]
- public string DebugMessage
- {
- get { return Message; }
- }
- /// <summary>Other key/values returned by the webservice that answered the WebRpc.</summary>
- public Dictionary<string, object> Parameters { get; private set; }
- /// <summary>An OperationResponse for a WebRpc is needed to read it's values.</summary>
- public WebRpcResponse(OperationResponse response)
- {
- object value;
- if (response.Parameters.TryGetValue(ParameterCode.UriPath, out value))
- {
- this.Name = value as string;
- }
- this.ResultCode = -1;
- if (response.Parameters.TryGetValue(ParameterCode.WebRpcReturnCode, out value))
- {
- this.ResultCode = (byte)value;
- }
- if (response.Parameters.TryGetValue(ParameterCode.WebRpcParameters, out value))
- {
- this.Parameters = value as Dictionary<string, object>;
- }
- if (response.Parameters.TryGetValue(ParameterCode.WebRpcReturnMessage, out value))
- {
- this.Message = value as string;
- }
- }
- /// <summary>Turns the response into an easier to read string.</summary>
- /// <returns>String resembling the result.</returns>
- public string ToStringFull()
- {
- return string.Format("{0}={2}: {1} \"{3}\"", this.Name, SupportClass.DictionaryToString(this.Parameters), this.ResultCode, this.Message);
- }
- }
- /// <summary>
- /// Optional flags to be used in Photon client SDKs with Op RaiseEvent and Op SetProperties.
- /// Introduced mainly for webhooks 1.2 to control behavior of forwarded HTTP requests.
- /// </summary>
- public class WebFlags
- {
- public readonly static WebFlags Default = new WebFlags(0);
- public byte WebhookFlags;
- /// <summary>
- /// Indicates whether to forward HTTP request to web service or not.
- /// </summary>
- public bool HttpForward
- {
- get { return (WebhookFlags & HttpForwardConst) != 0; }
- set {
- if (value)
- {
- WebhookFlags |= HttpForwardConst;
- }
- else
- {
- WebhookFlags = (byte) (WebhookFlags & ~(1 << 0));
- }
- }
- }
- public const byte HttpForwardConst = 0x01;
- /// <summary>
- /// Indicates whether to send AuthCookie of actor in the HTTP request to web service or not.
- /// </summary>
- public bool SendAuthCookie
- {
- get { return (WebhookFlags & SendAuthCookieConst) != 0; }
- set {
- if (value)
- {
- WebhookFlags |= SendAuthCookieConst;
- }
- else
- {
- WebhookFlags = (byte)(WebhookFlags & ~(1 << 1));
- }
- }
- }
- public const byte SendAuthCookieConst = 0x02;
- /// <summary>
- /// Indicates whether to send HTTP request synchronously or asynchronously to web service.
- /// </summary>
- public bool SendSync
- {
- get { return (WebhookFlags & SendSyncConst) != 0; }
- set {
- if (value)
- {
- WebhookFlags |= SendSyncConst;
- }
- else
- {
- WebhookFlags = (byte)(WebhookFlags & ~(1 << 2));
- }
- }
- }
- public const byte SendSyncConst = 0x04;
- /// <summary>
- /// Indicates whether to send serialized game state in HTTP request to web service or not.
- /// </summary>
- public bool SendState
- {
- get { return (WebhookFlags & SendStateConst) != 0; }
- set {
- if (value)
- {
- WebhookFlags |= SendStateConst;
- }
- else
- {
- WebhookFlags = (byte)(WebhookFlags & ~(1 << 3));
- }
- }
- }
- public const byte SendStateConst = 0x08;
- public WebFlags(byte webhookFlags)
- {
- WebhookFlags = webhookFlags;
- }
- }
- }
|