bgpwtf/cccampix/pgpencryptor: add service base

Add emacs swap files to .gitignore.

Change-Id: I5e0e3e31a0a0cd6d73e6c89a82b73412f0f78a15
diff --git a/bgpwtf/cccampix/pgpencryptor/BUILD.bazel b/bgpwtf/cccampix/pgpencryptor/BUILD.bazel
new file mode 100644
index 0000000..33af7b3
--- /dev/null
+++ b/bgpwtf/cccampix/pgpencryptor/BUILD.bazel
@@ -0,0 +1,21 @@
+load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
+
+go_library(
+    name = "go_default_library",
+    srcs = ["main.go"],
+    importpath = "code.hackerspace.pl/hscloud/bgpwtf/cccampix/pgpencryptor",
+    visibility = ["//visibility:private"],
+    deps = [
+        "//bgpwtf/cccampix/proto:go_default_library",
+        "//go/mirko:go_default_library",
+        "@com_github_golang_glog//:go_default_library",
+        "@org_golang_google_grpc//codes:go_default_library",
+        "@org_golang_google_grpc//status:go_default_library",
+    ],
+)
+
+go_binary(
+    name = "pgpencryptor",
+    embed = [":go_default_library"],
+    visibility = ["//visibility:public"],
+)
diff --git a/bgpwtf/cccampix/pgpencryptor/README.md b/bgpwtf/cccampix/pgpencryptor/README.md
new file mode 100644
index 0000000..5415d15
--- /dev/null
+++ b/bgpwtf/cccampix/pgpencryptor/README.md
@@ -0,0 +1,10 @@
+PGPEncryptor service
+==============
+
+Exposes and caches pgp keys from public key servers.
+
+API defined in [ix.proto](../proto/ix.proto).
+
+Usage
+-----
+
diff --git a/bgpwtf/cccampix/pgpencryptor/main.go b/bgpwtf/cccampix/pgpencryptor/main.go
new file mode 100644
index 0000000..d8e410a
--- /dev/null
+++ b/bgpwtf/cccampix/pgpencryptor/main.go
@@ -0,0 +1,42 @@
+package main
+
+import (
+	"context"
+	"flag"
+
+	"github.com/golang/glog"
+	"google.golang.org/grpc/codes"
+	"google.golang.org/grpc/status"
+
+	pb "code.hackerspace.pl/hscloud/bgpwtf/cccampix/proto"
+	"code.hackerspace.pl/hscloud/go/mirko"
+)
+
+type service struct {
+}
+
+func (s *service) KeyInfo(ctx context.Context, req *pb.KeyInfoRequest) (*pb.KeyInfoResponse, error) {
+	return nil, status.Error(codes.Unimplemented, "not implemented yet")
+}
+
+func (s *service) Encrypt(stream pb.PGPEncryptor_EncryptServer) error {
+	return status.Error(codes.Unimplemented, "not implemented yet")
+}
+
+func main() {
+	flag.Parse()
+	mi := mirko.New()
+
+	if err := mi.Listen(); err != nil {
+		glog.Exitf("Listen failed: %v", err)
+	}
+
+	s := &service{}
+	pb.RegisterPGPEncryptorServer(mi.GRPC(), s)
+
+	if err := mi.Serve(); err != nil {
+		glog.Exitf("Serve failed: %v", err)
+	}
+
+	<-mi.Done()
+}