From 4223fd24b493dc8a9ae4af1495cdd18319b21c4c Mon Sep 17 00:00:00 2001
From: Alex Grintsvayg <git@grin.io>
Date: Fri, 25 Jan 2019 11:17:31 -0500
Subject: [PATCH 1/3] first attempt at converting to proto3 and some
 housekeeping

---
 proto/certificate.proto |  20 ----
 proto/channel.proto     |   7 ++
 proto/claim.proto       |  26 ++---
 proto/fee.proto         |  16 ++-
 proto/file.proto        |   8 ++
 proto/metadata.proto    | 214 ----------------------------------------
 proto/signature.proto   |  16 ---
 proto/source.proto      |  18 ----
 proto/stream.proto      |  29 +++---
 9 files changed, 49 insertions(+), 305 deletions(-)
 delete mode 100644 proto/certificate.proto
 create mode 100644 proto/channel.proto
 create mode 100644 proto/file.proto
 delete mode 100644 proto/metadata.proto
 delete mode 100644 proto/signature.proto
 delete mode 100644 proto/source.proto

diff --git a/proto/certificate.proto b/proto/certificate.proto
deleted file mode 100644
index 86fcac5..0000000
--- a/proto/certificate.proto
+++ /dev/null
@@ -1,20 +0,0 @@
-syntax = "proto2";
-
-package pb;
-
-enum KeyType {
-        UNKNOWN_PUBLIC_KEY_TYPE = 0;
-        NIST256p = 1;
-        NIST384p = 2;
-        SECP256k1 = 3;
-}
-
-message Certificate {
-    enum Version {
-        UNKNOWN_VERSION = 0;
-        _0_0_1 = 1;
-    }
-    required Version version = 1;
-    required KeyType keyType = 2;
-    required bytes publicKey = 4;
-}
diff --git a/proto/channel.proto b/proto/channel.proto
new file mode 100644
index 0000000..db92a2b
--- /dev/null
+++ b/proto/channel.proto
@@ -0,0 +1,7 @@
+syntax = "proto3";
+
+package pb;
+
+message Channel {
+    bytes public_key = 1;
+}
diff --git a/proto/claim.proto b/proto/claim.proto
index ff590f1..3e7b6e1 100644
--- a/proto/claim.proto
+++ b/proto/claim.proto
@@ -1,24 +1,18 @@
-syntax = "proto2";
+syntax = "proto3";
 
 package pb;
 
 import "stream.proto";
-import "certificate.proto";
-import "signature.proto";
+import "channel.proto";
 
 message Claim {
-    enum Version {
-        UNKNOWN_VERSION = 0;
-        _0_0_1 = 1;
+    enum Type {
+        UNKNOWN = 0;
+        STREAM = 1;
+        CHANNEL = 2;
     }
-    required Version version = 1;
-    enum ClaimType {
-        UNKNOWN_CLAIM_TYPE = 0;
-        streamType = 1;
-        certificateType = 2;
-    }
-    required ClaimType claimType = 2;
-    optional Stream stream = 3;
-    optional Certificate certificate = 4;
-    optional Signature publisherSignature = 5;
+
+    Type type = 1; // do we need this?
+    Stream stream = 2;
+    Channel channel = 3;
 }
diff --git a/proto/fee.proto b/proto/fee.proto
index dedbd8c..9ecdbf8 100644
--- a/proto/fee.proto
+++ b/proto/fee.proto
@@ -1,20 +1,16 @@
-syntax = "proto2";
+syntax = "proto3";
 
 package pb;
 
 message Fee {
-    enum Version {
-        UNKNOWN_VERSION = 0;
-        _0_0_1 = 1;
-    }
     enum Currency {
-        UNKNOWN_CURRENCY = 0;
+        UNKNOWN = 0;
         LBC = 1;
         BTC = 2;
         USD = 3;
     }
-    required Version version = 1;
-    required Currency currency = 2;
-    required bytes address = 3;
-    required float amount = 4;
+
+    Currency currency = 1;
+    bytes address = 2;
+    float amount = 3;
 }
diff --git a/proto/file.proto b/proto/file.proto
new file mode 100644
index 0000000..4cc52d1
--- /dev/null
+++ b/proto/file.proto
@@ -0,0 +1,8 @@
+syntax = "proto3";
+
+package pb;
+
+message File {
+    string name = 1;
+    uint64 size = 2;
+}
diff --git a/proto/metadata.proto b/proto/metadata.proto
deleted file mode 100644
index 618a5f2..0000000
--- a/proto/metadata.proto
+++ /dev/null
@@ -1,214 +0,0 @@
-syntax = "proto2";
-
-package pb;
-
-import "fee.proto";
-
-message Metadata {
-    enum Version {
-        UNKNOWN_VERSION = 0;
-        _0_0_1 = 1;
-        _0_0_2 = 2;
-        _0_0_3 = 3;
-        _0_1_0 = 4;
-    }
-    enum Language {
-        UNKNOWN_LANGUAGE = 0;
-        en = 1;
-        aa = 2;
-        ab = 3;
-        ae = 4;
-        af = 5;
-        ak = 6;
-        am = 7;
-        an = 8;
-        ar = 9;
-        as = 10;
-        av = 11;
-        ay = 12;
-        az = 13;
-        ba = 14;
-        be = 15;
-        bg = 16;
-        bh = 17;
-        bi = 18;
-        bm = 19;
-        bn = 20;
-        bo = 21;
-        br = 22;
-        bs = 23;
-        ca = 24;
-        ce = 25;
-        ch = 26;
-        co = 27;
-        cr = 28;
-        cs = 29;
-        cu = 30;
-        cv = 31;
-        cy = 32;
-        da = 33;
-        de = 34;
-        dv = 35;
-        dz = 36;
-        ee = 37;
-        el = 38;
-        eo = 39;
-        es = 40;
-        et = 41;
-        eu = 42;
-        fa = 43;
-        ff = 44;
-        fi = 45;
-        fj = 46;
-        fo = 47;
-        fr = 48;
-        fy = 49;
-        ga = 50;
-        gd = 51;
-        gl = 52;
-        gn = 53;
-        gu = 54;
-        gv = 55;
-        ha = 56;
-        he = 57;
-        hi = 58;
-        ho = 59;
-        hr = 60;
-        ht = 61;
-        hu = 62;
-        hy = 63;
-        hz = 64;
-        ia = 65;
-        id = 66;
-        ie = 67;
-        ig = 68;
-        ii = 69;
-        ik = 70;
-        io = 71;
-        is = 72;
-        it = 73;
-        iu = 74;
-        ja = 75;
-        jv = 76;
-        ka = 77;
-        kg = 78;
-        ki = 79;
-        kj = 80;
-        kk = 81;
-        kl = 82;
-        km = 83;
-        kn = 84;
-        ko = 85;
-        kr = 86;
-        ks = 87;
-        ku = 88;
-        kv = 89;
-        kw = 90;
-        ky = 91;
-        la = 92;
-        lb = 93;
-        lg = 94;
-        li = 95;
-        ln = 96;
-        lo = 97;
-        lt = 98;
-        lu = 99;
-        lv = 100;
-        mg = 101;
-        mh = 102;
-        mi = 103;
-        mk = 104;
-        ml = 105;
-        mn = 106;
-        mr = 107;
-        ms = 108;
-        mt = 109;
-        my = 110;
-        na = 111;
-        nb = 112;
-        nd = 113;
-        ne = 114;
-        ng = 115;
-        nl = 116;
-        nn = 117;
-        no = 118;
-        nr = 119;
-        nv = 120;
-        ny = 121;
-        oc = 122;
-        oj = 123;
-        om = 124;
-        or = 125;
-        os = 126;
-        pa = 127;
-        pi = 128;
-        pl = 129;
-        ps = 130;
-        pt = 131;
-        qu = 132;
-        rm = 133;
-        rn = 134;
-        ro = 135;
-        ru = 136;
-        rw = 137;
-        sa = 138;
-        sc = 139;
-        sd = 140;
-        se = 141;
-        sg = 142;
-        si = 143;
-        sk = 144;
-        sl = 145;
-        sm = 146;
-        sn = 147;
-        so = 148;
-        sq = 149;
-        sr = 150;
-        ss = 151;
-        st = 152;
-        su = 153;
-        sv = 154;
-        sw = 155;
-        ta = 156;
-        te = 157;
-        tg = 158;
-        th = 159;
-        ti = 160;
-        tk = 161;
-        tl = 162;
-        tn = 163;
-        to = 164;
-        tr = 165;
-        ts = 166;
-        tt = 167;
-        tw = 168;
-        ty = 169;
-        ug = 170;
-        uk = 171;
-        ur = 172;
-        uz = 173;
-        ve = 174;
-        vi = 175;
-        vo = 176;
-        wa = 177;
-        wo = 178;
-        xh = 179;
-        yi = 180;
-        yo = 181;
-        za = 182;
-        zh = 183;
-        zu = 184;
-    }
-    required Version version = 1;
-    required Language language = 2;
-    required string title = 3;
-    required string description = 4;
-    required string author = 5;
-    required string license = 6;
-    required bool nsfw = 7;
-
-    optional Fee fee = 8;
-    optional string thumbnail = 9;
-    optional string preview = 10;
-    optional string licenseUrl = 11;
-}
diff --git a/proto/signature.proto b/proto/signature.proto
deleted file mode 100644
index 9ebfc0b..0000000
--- a/proto/signature.proto
+++ /dev/null
@@ -1,16 +0,0 @@
-syntax = "proto2";
-
-package pb;
-
-import "certificate.proto";
-
-message Signature {
-    enum Version {
-        UNKNOWN_VERSION = 0;
-        _0_0_1 = 1;
-    }
-    required Version version = 1;
-    required KeyType signatureType = 2;
-    required bytes signature = 3;
-    required bytes certificateId = 4;
-}
diff --git a/proto/source.proto b/proto/source.proto
deleted file mode 100644
index 4d2b1dc..0000000
--- a/proto/source.proto
+++ /dev/null
@@ -1,18 +0,0 @@
-syntax = "proto2";
-
-package pb;
-
-message Source {
-    enum Version {
-        UNKNOWN_VERSION = 0;
-        _0_0_1 = 1;
-    }
-    required Version version = 1;
-    enum SourceTypes {
-        UNKNOWN_SOURCE_TYPE = 0;
-        lbry_sd_hash = 1;
-    }
-    required SourceTypes sourceType = 2;
-    required bytes source = 3;
-    required string contentType = 4;
-}
diff --git a/proto/stream.proto b/proto/stream.proto
index c6c666a..73a37e9 100644
--- a/proto/stream.proto
+++ b/proto/stream.proto
@@ -1,17 +1,24 @@
-syntax = "proto2";
+syntax = "proto3";
 
 package pb;
 
-import "metadata.proto";
-import "source.proto";
-
+import "fee.proto";
+import "file.proto";
 
 message Stream {
-    enum Version {
-        UNKNOWN_VERSION = 0;
-        _0_0_1 = 1;
-    }
-    required Version version = 1;
-    required Metadata metadata = 2;
-    required Source source = 3;
+    bytes hash = 1;
+    string language = 2;
+    string title = 3;
+    string author = 4;
+    string description = 5;
+    string media_type = 6;
+    string license = 7;
+    File file = 8;
+
+    Fee fee = 16;
+    string license_url = 17;
+    string thumbnail = 18;
+    string preview = 19;
+    bool nsfw = 20;
+    uint32 duration = 21;
 }

From 0e4395c39e305c1cde48d5a5f1b1e349e6559f05 Mon Sep 17 00:00:00 2001
From: Victor Shyba <victor1984@riseup.net>
Date: Tue, 5 Feb 2019 22:59:00 -0300
Subject: [PATCH 2/3] move proto3 to proto/v2 and restore proto2 to proto/v1

---
 proto/v1/certificate.proto   |  20 ++++
 proto/v1/claim.proto         |  24 ++++
 proto/v1/fee.proto           |  20 ++++
 proto/v1/metadata.proto      | 214 +++++++++++++++++++++++++++++++++++
 proto/v1/signature.proto     |  16 +++
 proto/v1/source.proto        |  18 +++
 proto/v1/stream.proto        |  17 +++
 proto/{ => v2}/channel.proto |   0
 proto/{ => v2}/claim.proto   |   0
 proto/{ => v2}/fee.proto     |   0
 proto/{ => v2}/file.proto    |   0
 proto/{ => v2}/stream.proto  |   0
 12 files changed, 329 insertions(+)
 create mode 100644 proto/v1/certificate.proto
 create mode 100644 proto/v1/claim.proto
 create mode 100644 proto/v1/fee.proto
 create mode 100644 proto/v1/metadata.proto
 create mode 100644 proto/v1/signature.proto
 create mode 100644 proto/v1/source.proto
 create mode 100644 proto/v1/stream.proto
 rename proto/{ => v2}/channel.proto (100%)
 rename proto/{ => v2}/claim.proto (100%)
 rename proto/{ => v2}/fee.proto (100%)
 rename proto/{ => v2}/file.proto (100%)
 rename proto/{ => v2}/stream.proto (100%)

diff --git a/proto/v1/certificate.proto b/proto/v1/certificate.proto
new file mode 100644
index 0000000..86fcac5
--- /dev/null
+++ b/proto/v1/certificate.proto
@@ -0,0 +1,20 @@
+syntax = "proto2";
+
+package pb;
+
+enum KeyType {
+        UNKNOWN_PUBLIC_KEY_TYPE = 0;
+        NIST256p = 1;
+        NIST384p = 2;
+        SECP256k1 = 3;
+}
+
+message Certificate {
+    enum Version {
+        UNKNOWN_VERSION = 0;
+        _0_0_1 = 1;
+    }
+    required Version version = 1;
+    required KeyType keyType = 2;
+    required bytes publicKey = 4;
+}
diff --git a/proto/v1/claim.proto b/proto/v1/claim.proto
new file mode 100644
index 0000000..ff590f1
--- /dev/null
+++ b/proto/v1/claim.proto
@@ -0,0 +1,24 @@
+syntax = "proto2";
+
+package pb;
+
+import "stream.proto";
+import "certificate.proto";
+import "signature.proto";
+
+message Claim {
+    enum Version {
+        UNKNOWN_VERSION = 0;
+        _0_0_1 = 1;
+    }
+    required Version version = 1;
+    enum ClaimType {
+        UNKNOWN_CLAIM_TYPE = 0;
+        streamType = 1;
+        certificateType = 2;
+    }
+    required ClaimType claimType = 2;
+    optional Stream stream = 3;
+    optional Certificate certificate = 4;
+    optional Signature publisherSignature = 5;
+}
diff --git a/proto/v1/fee.proto b/proto/v1/fee.proto
new file mode 100644
index 0000000..dedbd8c
--- /dev/null
+++ b/proto/v1/fee.proto
@@ -0,0 +1,20 @@
+syntax = "proto2";
+
+package pb;
+
+message Fee {
+    enum Version {
+        UNKNOWN_VERSION = 0;
+        _0_0_1 = 1;
+    }
+    enum Currency {
+        UNKNOWN_CURRENCY = 0;
+        LBC = 1;
+        BTC = 2;
+        USD = 3;
+    }
+    required Version version = 1;
+    required Currency currency = 2;
+    required bytes address = 3;
+    required float amount = 4;
+}
diff --git a/proto/v1/metadata.proto b/proto/v1/metadata.proto
new file mode 100644
index 0000000..618a5f2
--- /dev/null
+++ b/proto/v1/metadata.proto
@@ -0,0 +1,214 @@
+syntax = "proto2";
+
+package pb;
+
+import "fee.proto";
+
+message Metadata {
+    enum Version {
+        UNKNOWN_VERSION = 0;
+        _0_0_1 = 1;
+        _0_0_2 = 2;
+        _0_0_3 = 3;
+        _0_1_0 = 4;
+    }
+    enum Language {
+        UNKNOWN_LANGUAGE = 0;
+        en = 1;
+        aa = 2;
+        ab = 3;
+        ae = 4;
+        af = 5;
+        ak = 6;
+        am = 7;
+        an = 8;
+        ar = 9;
+        as = 10;
+        av = 11;
+        ay = 12;
+        az = 13;
+        ba = 14;
+        be = 15;
+        bg = 16;
+        bh = 17;
+        bi = 18;
+        bm = 19;
+        bn = 20;
+        bo = 21;
+        br = 22;
+        bs = 23;
+        ca = 24;
+        ce = 25;
+        ch = 26;
+        co = 27;
+        cr = 28;
+        cs = 29;
+        cu = 30;
+        cv = 31;
+        cy = 32;
+        da = 33;
+        de = 34;
+        dv = 35;
+        dz = 36;
+        ee = 37;
+        el = 38;
+        eo = 39;
+        es = 40;
+        et = 41;
+        eu = 42;
+        fa = 43;
+        ff = 44;
+        fi = 45;
+        fj = 46;
+        fo = 47;
+        fr = 48;
+        fy = 49;
+        ga = 50;
+        gd = 51;
+        gl = 52;
+        gn = 53;
+        gu = 54;
+        gv = 55;
+        ha = 56;
+        he = 57;
+        hi = 58;
+        ho = 59;
+        hr = 60;
+        ht = 61;
+        hu = 62;
+        hy = 63;
+        hz = 64;
+        ia = 65;
+        id = 66;
+        ie = 67;
+        ig = 68;
+        ii = 69;
+        ik = 70;
+        io = 71;
+        is = 72;
+        it = 73;
+        iu = 74;
+        ja = 75;
+        jv = 76;
+        ka = 77;
+        kg = 78;
+        ki = 79;
+        kj = 80;
+        kk = 81;
+        kl = 82;
+        km = 83;
+        kn = 84;
+        ko = 85;
+        kr = 86;
+        ks = 87;
+        ku = 88;
+        kv = 89;
+        kw = 90;
+        ky = 91;
+        la = 92;
+        lb = 93;
+        lg = 94;
+        li = 95;
+        ln = 96;
+        lo = 97;
+        lt = 98;
+        lu = 99;
+        lv = 100;
+        mg = 101;
+        mh = 102;
+        mi = 103;
+        mk = 104;
+        ml = 105;
+        mn = 106;
+        mr = 107;
+        ms = 108;
+        mt = 109;
+        my = 110;
+        na = 111;
+        nb = 112;
+        nd = 113;
+        ne = 114;
+        ng = 115;
+        nl = 116;
+        nn = 117;
+        no = 118;
+        nr = 119;
+        nv = 120;
+        ny = 121;
+        oc = 122;
+        oj = 123;
+        om = 124;
+        or = 125;
+        os = 126;
+        pa = 127;
+        pi = 128;
+        pl = 129;
+        ps = 130;
+        pt = 131;
+        qu = 132;
+        rm = 133;
+        rn = 134;
+        ro = 135;
+        ru = 136;
+        rw = 137;
+        sa = 138;
+        sc = 139;
+        sd = 140;
+        se = 141;
+        sg = 142;
+        si = 143;
+        sk = 144;
+        sl = 145;
+        sm = 146;
+        sn = 147;
+        so = 148;
+        sq = 149;
+        sr = 150;
+        ss = 151;
+        st = 152;
+        su = 153;
+        sv = 154;
+        sw = 155;
+        ta = 156;
+        te = 157;
+        tg = 158;
+        th = 159;
+        ti = 160;
+        tk = 161;
+        tl = 162;
+        tn = 163;
+        to = 164;
+        tr = 165;
+        ts = 166;
+        tt = 167;
+        tw = 168;
+        ty = 169;
+        ug = 170;
+        uk = 171;
+        ur = 172;
+        uz = 173;
+        ve = 174;
+        vi = 175;
+        vo = 176;
+        wa = 177;
+        wo = 178;
+        xh = 179;
+        yi = 180;
+        yo = 181;
+        za = 182;
+        zh = 183;
+        zu = 184;
+    }
+    required Version version = 1;
+    required Language language = 2;
+    required string title = 3;
+    required string description = 4;
+    required string author = 5;
+    required string license = 6;
+    required bool nsfw = 7;
+
+    optional Fee fee = 8;
+    optional string thumbnail = 9;
+    optional string preview = 10;
+    optional string licenseUrl = 11;
+}
diff --git a/proto/v1/signature.proto b/proto/v1/signature.proto
new file mode 100644
index 0000000..9ebfc0b
--- /dev/null
+++ b/proto/v1/signature.proto
@@ -0,0 +1,16 @@
+syntax = "proto2";
+
+package pb;
+
+import "certificate.proto";
+
+message Signature {
+    enum Version {
+        UNKNOWN_VERSION = 0;
+        _0_0_1 = 1;
+    }
+    required Version version = 1;
+    required KeyType signatureType = 2;
+    required bytes signature = 3;
+    required bytes certificateId = 4;
+}
diff --git a/proto/v1/source.proto b/proto/v1/source.proto
new file mode 100644
index 0000000..4d2b1dc
--- /dev/null
+++ b/proto/v1/source.proto
@@ -0,0 +1,18 @@
+syntax = "proto2";
+
+package pb;
+
+message Source {
+    enum Version {
+        UNKNOWN_VERSION = 0;
+        _0_0_1 = 1;
+    }
+    required Version version = 1;
+    enum SourceTypes {
+        UNKNOWN_SOURCE_TYPE = 0;
+        lbry_sd_hash = 1;
+    }
+    required SourceTypes sourceType = 2;
+    required bytes source = 3;
+    required string contentType = 4;
+}
diff --git a/proto/v1/stream.proto b/proto/v1/stream.proto
new file mode 100644
index 0000000..c6c666a
--- /dev/null
+++ b/proto/v1/stream.proto
@@ -0,0 +1,17 @@
+syntax = "proto2";
+
+package pb;
+
+import "metadata.proto";
+import "source.proto";
+
+
+message Stream {
+    enum Version {
+        UNKNOWN_VERSION = 0;
+        _0_0_1 = 1;
+    }
+    required Version version = 1;
+    required Metadata metadata = 2;
+    required Source source = 3;
+}
diff --git a/proto/channel.proto b/proto/v2/channel.proto
similarity index 100%
rename from proto/channel.proto
rename to proto/v2/channel.proto
diff --git a/proto/claim.proto b/proto/v2/claim.proto
similarity index 100%
rename from proto/claim.proto
rename to proto/v2/claim.proto
diff --git a/proto/fee.proto b/proto/v2/fee.proto
similarity index 100%
rename from proto/fee.proto
rename to proto/v2/fee.proto
diff --git a/proto/file.proto b/proto/v2/file.proto
similarity index 100%
rename from proto/file.proto
rename to proto/v2/file.proto
diff --git a/proto/stream.proto b/proto/v2/stream.proto
similarity index 100%
rename from proto/stream.proto
rename to proto/v2/stream.proto

From 3b6559fa49039fca23f7fd01f7ceaf8f8b98e874 Mon Sep 17 00:00:00 2001
From: Victor Shyba <victor1984@riseup.net>
Date: Wed, 6 Feb 2019 11:03:48 -0300
Subject: [PATCH 3/3] add release time

---
 proto/v2/stream.proto | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/proto/v2/stream.proto b/proto/v2/stream.proto
index 73a37e9..90a1485 100644
--- a/proto/v2/stream.proto
+++ b/proto/v2/stream.proto
@@ -21,4 +21,10 @@ message Stream {
     string preview = 19;
     bool nsfw = 20;
     uint32 duration = 21;
+    Timestamp release_time = 22;
 }
+
+message Timestamp {
+    sint64 epoch_seconds = 1;
+    sint32 bc_year = 2;
+}
\ No newline at end of file