this repo has no description

Basic

+227
+6
.gitignore
··· 1 + # Artifacts 2 + .vscode 3 + 4 + 5 + # GEN 6 + cbor_gen.go
+6
api/regnault/example.go
··· 1 + package regnault 2 + 3 + type Example struct { 4 + LexiconTypeID string `json:"$type,const=dev.regnault.example" cborgen:"$type,const=dev.regnault.example"` 5 + Test string `json:"test" cborgen:"test"` 6 + }
+19
gencbor/gencbor.go
··· 1 + package main 2 + 3 + import ( 4 + "atproto-playground/api/regnault" 5 + 6 + cbg "github.com/whyrusleeping/cbor-gen" 7 + ) 8 + 9 + func main() { 10 + genCfg := cbg.Gen{} 11 + 12 + if err := 13 + genCfg.WriteMapEncodersToFile("api/regnault/cbor_gen.go", 14 + "regnault", 15 + regnault.Example{}, 16 + ); err != nil { 17 + panic(err) 18 + } 19 + }
+35
go.mod
··· 1 + module atproto-playground 2 + 3 + go 1.25.1 4 + 5 + require ( 6 + github.com/beorn7/perks v1.0.1 // indirect 7 + github.com/bluesky-social/indigo v0.0.0-20250922154404-cbaa8d37ca48 // indirect 8 + github.com/carlmjohnson/versioninfo v0.22.5 // indirect 9 + github.com/cespare/xxhash/v2 v2.2.0 // indirect 10 + github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect 11 + github.com/ipfs/go-cid v0.4.1 // indirect 12 + github.com/klauspost/cpuid/v2 v2.2.7 // indirect 13 + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect 14 + github.com/minio/sha256-simd v1.0.1 // indirect 15 + github.com/mr-tron/base58 v1.2.0 // indirect 16 + github.com/multiformats/go-base32 v0.1.0 // indirect 17 + github.com/multiformats/go-base36 v0.2.0 // indirect 18 + github.com/multiformats/go-multibase v0.2.0 // indirect 19 + github.com/multiformats/go-multihash v0.2.3 // indirect 20 + github.com/multiformats/go-varint v0.0.7 // indirect 21 + github.com/prometheus/client_golang v1.17.0 // indirect 22 + github.com/prometheus/client_model v0.5.0 // indirect 23 + github.com/prometheus/common v0.45.0 // indirect 24 + github.com/prometheus/procfs v0.12.0 // indirect 25 + github.com/spaolacci/murmur3 v1.1.0 // indirect 26 + github.com/whyrusleeping/cbor-gen v0.3.1 // indirect 27 + gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b // indirect 28 + gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 // indirect 29 + golang.org/x/crypto v0.21.0 // indirect 30 + golang.org/x/sys v0.22.0 // indirect 31 + golang.org/x/time v0.3.0 // indirect 32 + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 // indirect 33 + google.golang.org/protobuf v1.33.0 // indirect 34 + lukechampine.com/blake3 v1.2.1 // indirect 35 + )
+62
go.sum
··· 1 + github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= 2 + github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= 3 + github.com/bluesky-social/indigo v0.0.0-20250922154404-cbaa8d37ca48 h1:3ZVua3u0huLK2VwKJ5ubmSf8jajApWT7RZPE8nMYxEo= 4 + github.com/bluesky-social/indigo v0.0.0-20250922154404-cbaa8d37ca48/go.mod h1:n6QE1NDPFoi7PRbMUZmc2y7FibCqiVU4ePpsvhHUBR8= 5 + github.com/carlmjohnson/versioninfo v0.22.5 h1:O00sjOLUAFxYQjlN/bzYTuZiS0y6fWDQjMRvwtKgwwc= 6 + github.com/carlmjohnson/versioninfo v0.22.5/go.mod h1:QT9mph3wcVfISUKd0i9sZfVrPviHuSF+cUtLjm2WSf8= 7 + github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= 8 + github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= 9 + github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= 10 + github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= 11 + github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= 12 + github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= 13 + github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= 14 + github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= 15 + github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= 16 + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 h1:jWpvCLoY8Z/e3VKvlsiIGKtc+UG6U5vzxaoagmhXfyg= 17 + github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0/go.mod h1:QUyp042oQthUoa9bqDv0ER0wrtXnBruoNd7aNjkbP+k= 18 + github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= 19 + github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= 20 + github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= 21 + github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= 22 + github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= 23 + github.com/multiformats/go-base32 v0.1.0/go.mod h1:Kj3tFY6zNr+ABYMqeUNeGvkIC/UYgtWibDcT0rExnbI= 24 + github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9rQyccr0= 25 + github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= 26 + github.com/multiformats/go-multibase v0.2.0 h1:isdYCVLvksgWlMW9OZRYJEa9pZETFivncJHmHnnd87g= 27 + github.com/multiformats/go-multibase v0.2.0/go.mod h1:bFBZX4lKCA/2lyOFSAoKH5SS6oPyjtnzK/XTFDPkNuk= 28 + github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7BFvVU9RSh+U= 29 + github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= 30 + github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= 31 + github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= 32 + github.com/prometheus/client_golang v1.17.0 h1:rl2sfwZMtSthVU752MqfjQozy7blglC+1SOtjMAMh+Q= 33 + github.com/prometheus/client_golang v1.17.0/go.mod h1:VeL+gMmOAxkS2IqfCq0ZmHSL+LjWfWDUmp1mBz9JgUY= 34 + github.com/prometheus/client_model v0.5.0 h1:VQw1hfvPvk3Uv6Qf29VrPF32JB6rtbgI6cYPYQjL0Qw= 35 + github.com/prometheus/client_model v0.5.0/go.mod h1:dTiFglRmd66nLR9Pv9f0mZi7B7fk5Pm3gvsjB5tr+kI= 36 + github.com/prometheus/common v0.45.0 h1:2BGz0eBc2hdMDLnO/8n0jeB3oPrt2D08CekT0lneoxM= 37 + github.com/prometheus/common v0.45.0/go.mod h1:YJmSTw9BoKxJplESWWxlbyttQR4uaEcGyv9MZjVOJsY= 38 + github.com/prometheus/procfs v0.12.0 h1:jluTpSng7V9hY0O2R9DzzJHYb2xULk9VTR1V1R/k6Bo= 39 + github.com/prometheus/procfs v0.12.0/go.mod h1:pcuDEFsWDnvcgNzo4EEweacyhjeA9Zk3cnaOZAZEfOo= 40 + github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= 41 + github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= 42 + github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e h1:28X54ciEwwUxyHn9yrZfl5ojgF4CBNLWX7LR0rvBkf4= 43 + github.com/whyrusleeping/cbor-gen v0.2.1-0.20241030202151-b7a6831be65e/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= 44 + github.com/whyrusleeping/cbor-gen v0.3.1 h1:82ioxmhEYut7LBVGhGq8xoRkXPLElVuh5mV67AFfdv0= 45 + github.com/whyrusleeping/cbor-gen v0.3.1/go.mod h1:pM99HXyEbSQHcosHc0iW7YFmwnscr+t9Te4ibko05so= 46 + gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b h1:CzigHMRySiX3drau9C6Q5CAbNIApmLdat5jPMqChvDA= 47 + gitlab.com/yawning/secp256k1-voi v0.0.0-20230925100816-f2616030848b/go.mod h1:/y/V339mxv2sZmYYR64O07VuCpdNZqCTwO8ZcouTMI8= 48 + gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02 h1:qwDnMxjkyLmAFgcfgTnfJrmYKWhHnci3GjDqcZp1M3Q= 49 + gitlab.com/yawning/tuplehash v0.0.0-20230713102510-df83abbf9a02/go.mod h1:JTnUj0mpYiAsuZLmKjTx/ex3AtMowcCgnE7YNyCEP0I= 50 + golang.org/x/crypto v0.21.0 h1:X31++rzVUdKhX5sWmSOFZxx8UW/ldWx55cbf08iNAMA= 51 + golang.org/x/crypto v0.21.0/go.mod h1:0BP7YvVV9gBbVKyeTG0Gyn+gZm94bibOW5BjDEYAOMs= 52 + golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= 53 + golang.org/x/sys v0.22.0 h1:RI27ohtqKCnwULzJLqkv897zojh5/DwS/ENaMzUOaWI= 54 + golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= 55 + golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= 56 + golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= 57 + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028 h1:+cNy6SZtPcJQH3LJVLOSmiC7MMxXNOb3PU/VUEz+EhU= 58 + golang.org/x/xerrors v0.0.0-20231012003039-104605ab7028/go.mod h1:NDW/Ps6MPRej6fsCIbMTohpP40sJ/P/vI1MoTEGwX90= 59 + google.golang.org/protobuf v1.33.0 h1:uNO2rsAINq/JlFpSdYEKIZ0uKD/R9cpdv0T+yoGwGmI= 60 + google.golang.org/protobuf v1.33.0/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= 61 + lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= 62 + lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k=
+80
main.go
··· 1 + package main 2 + 3 + import ( 4 + "atproto-playground/api/regnault" 5 + "context" 6 + "os" 7 + "strings" 8 + 9 + "github.com/bluesky-social/indigo/api/atproto" 10 + "github.com/bluesky-social/indigo/atproto/client" 11 + "github.com/bluesky-social/indigo/atproto/identity" 12 + "github.com/bluesky-social/indigo/atproto/syntax" 13 + "github.com/bluesky-social/indigo/lex/util" 14 + ) 15 + 16 + type LoginData struct { 17 + handle string 18 + password string 19 + } 20 + 21 + func getLoginData() LoginData { 22 + return LoginData{ 23 + handle: os.Getenv("HANDLE"), 24 + password: os.Getenv("PASSWORD"), 25 + } 26 + } 27 + 28 + func (l LoginData) Login() (*client.APIClient, error) { 29 + 30 + return client.LoginWithPassword( 31 + context.Background(), 32 + identity.DefaultDirectory(), syntax.AtIdentifier{Inner: l.handle}, l.password, "", nil) 33 + 34 + } 35 + 36 + func main() { 37 + client, err := getLoginData().Login() 38 + if err != nil { 39 + panic(err) 40 + } 41 + 42 + created := createRecord(client) 43 + splitted := strings.Split(created.Uri, "/") 44 + deleteRecord(client, splitted[len(splitted)-1]) 45 + } 46 + 47 + func createRecord(client *client.APIClient) atproto.RepoCreateRecord_Output { 48 + example := regnault.Example{ 49 + Test: "hellooo", 50 + } 51 + entry := atproto.RepoCreateRecord_Input{ 52 + Collection: "dev.regnault.example", 53 + Repo: string(*client.AccountDID), 54 + Record: &util.LexiconTypeDecoder{Val: &example}, 55 + } 56 + 57 + a := atproto.RepoCreateRecord_Output{} 58 + 59 + err := client.Post(context.Background(), "com.atproto.repo.createRecord", entry, &a) 60 + if err != nil { 61 + panic(err) 62 + } 63 + 64 + return a 65 + } 66 + 67 + func deleteRecord(client *client.APIClient, rkey string) { 68 + entry := atproto.RepoDeleteRecord_Input{ 69 + Collection: "dev.regnault.example", 70 + Repo: string(*client.AccountDID), 71 + Rkey: rkey, 72 + } 73 + 74 + a := atproto.RepoDeleteRecord_Output{} 75 + 76 + err := client.Post(context.Background(), "com.atproto.repo.deleteRecord", entry, &a) 77 + if err != nil { 78 + panic(err) 79 + } 80 + }
+19
readme.md
··· 1 + # AT Proto playground 2 + 3 + This is a playground to play with the AT Protocol easily. 4 + 5 + ## Setup 6 + 7 + ```sh 8 + # To generate cbor go interfaces for the record structs use this command below 9 + $ go run gencbor/gencbor 10 + ``` 11 + 12 + ## Environment 13 + - `HANDLE` : Your atproto Handle 14 + - `PASSWORD` : The password of your atproto account 15 + 16 + ## Running 17 + ```sh 18 + go run . 19 + ```