Commit f67ce460 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Add support for custom events from clients and from the runtime.

parent 8ee81ba8
Loading
Loading
Loading
Loading
+163 −124

File changed.

Preview size limit exceeded, changes collapsed.

+78 −0
Original line number Diff line number Diff line
@@ -750,6 +750,40 @@ func local_request_Nakama_DeleteStorageObjects_0(ctx context.Context, marshaler

}

func request_Nakama_Event_0(ctx context.Context, marshaler runtime.Marshaler, client NakamaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
	var protoReq api.Event
	var metadata runtime.ServerMetadata

	newReader, berr := utilities.IOReaderFactory(req.Body)
	if berr != nil {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
	}
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
	}

	msg, err := client.Event(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
	return msg, metadata, err

}

func local_request_Nakama_Event_0(ctx context.Context, marshaler runtime.Marshaler, server NakamaServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
	var protoReq api.Event
	var metadata runtime.ServerMetadata

	newReader, berr := utilities.IOReaderFactory(req.Body)
	if berr != nil {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr)
	}
	if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF {
		return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
	}

	msg, err := server.Event(ctx, &protoReq)
	return msg, metadata, err

}

func request_Nakama_GetAccount_0(ctx context.Context, marshaler runtime.Marshaler, client NakamaClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
	var protoReq empty.Empty
	var metadata runtime.ServerMetadata
@@ -3302,6 +3336,26 @@ func RegisterNakamaHandlerServer(ctx context.Context, mux *runtime.ServeMux, ser

	})

	mux.Handle("POST", pattern_Nakama_Event_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
		rctx, err := runtime.AnnotateIncomingContext(ctx, mux, req)
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}
		resp, md, err := local_request_Nakama_Event_0(rctx, inboundMarshaler, server, req, pathParams)
		ctx = runtime.NewServerMetadataContext(ctx, md)
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}

		forward_Nakama_Event_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)

	})

	mux.Handle("GET", pattern_Nakama_GetAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
@@ -4563,6 +4617,26 @@ func RegisterNakamaHandlerClient(ctx context.Context, mux *runtime.ServeMux, cli

	})

	mux.Handle("POST", pattern_Nakama_Event_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
		inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
		rctx, err := runtime.AnnotateContext(ctx, mux, req)
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}
		resp, md, err := request_Nakama_Event_0(rctx, inboundMarshaler, client, req, pathParams)
		ctx = runtime.NewServerMetadataContext(ctx, md)
		if err != nil {
			runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
			return
		}

		forward_Nakama_Event_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)

	})

	mux.Handle("GET", pattern_Nakama_GetAccount_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
		ctx, cancel := context.WithCancel(req.Context())
		defer cancel()
@@ -5499,6 +5573,8 @@ var (

	pattern_Nakama_DeleteStorageObjects_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v2", "storage", "delete"}, "", runtime.AssumeColonVerbOpt(true)))

	pattern_Nakama_Event_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v2", "event"}, "", runtime.AssumeColonVerbOpt(true)))

	pattern_Nakama_GetAccount_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v2", "account"}, "", runtime.AssumeColonVerbOpt(true)))

	pattern_Nakama_GetUsers_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1}, []string{"v2", "user"}, "", runtime.AssumeColonVerbOpt(true)))
@@ -5623,6 +5699,8 @@ var (

	forward_Nakama_DeleteStorageObjects_0 = runtime.ForwardResponseMessage

	forward_Nakama_Event_0 = runtime.ForwardResponseMessage

	forward_Nakama_GetAccount_0 = runtime.ForwardResponseMessage

	forward_Nakama_GetUsers_0 = runtime.ForwardResponseMessage
+8 −0
Original line number Diff line number Diff line
@@ -253,6 +253,14 @@ service Nakama {
    };
  }

  // Submit an event for processing in the server's registered runtime custom events handler.
  rpc Event (api.Event) returns (google.protobuf.Empty) {
    option (google.api.http) = {
      post: "/v2/event",
      body: "*"
    };
  }

  // Fetch the current user's account.
  rpc GetAccount (google.protobuf.Empty) returns (api.Account) {
    option (google.api.http).get = "/v2/account";
+54 −0
Original line number Diff line number Diff line
@@ -859,6 +859,33 @@
        ]
      }
    },
    "/v2/event": {
      "post": {
        "summary": "Submit an event for processing in the server's registered runtime custom events handler.",
        "operationId": "Event",
        "responses": {
          "200": {
            "description": "A successful response.",
            "schema": {
              "properties": {}
            }
          }
        },
        "parameters": [
          {
            "name": "body",
            "in": "body",
            "required": true,
            "schema": {
              "$ref": "#/definitions/apiEvent"
            }
          }
        ],
        "tags": [
          "Nakama"
        ]
      }
    },
    "/v2/friend": {
      "get": {
        "summary": "List all friends for the current user.",
@@ -2669,6 +2696,33 @@
      },
      "description": "Batch delete storage objects."
    },
    "apiEvent": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "description": "An event name, type, category, or identifier."
        },
        "properties": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Arbitrary event property values."
        },
        "timestamp": {
          "type": "string",
          "format": "date-time",
          "description": "The time when the event was triggered."
        },
        "external": {
          "type": "boolean",
          "format": "boolean",
          "description": "True if the event came directly from a client call, false otherwise."
        }
      },
      "description": "Represents an event to be passed through the server to registered event handlers."
    },
    "apiFriend": {
      "type": "object",
      "properties": {
+1 −1
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ require (
	github.com/gorilla/mux v1.7.3
	github.com/gorilla/websocket v1.4.1
	github.com/grpc-ecosystem/grpc-gateway v1.11.1
	github.com/heroiclabs/nakama-common v1.0.0
	github.com/heroiclabs/nakama-common v1.1.1
	github.com/jackc/fake v0.0.0-20150926172116-812a484cc733 // indirect
	github.com/jackc/pgx v3.5.0+incompatible
	github.com/jmhodges/levigo v1.0.0 // indirect
Loading