Skip to content

liteseed/aogo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

81 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AOGO

protocol.land

Interact with AO in Go.

Getting Started

package main

import (
 "log"
 "os"

 "github.com/liteseed/goar/signer"
 "github.com/liteseed/goar/types"
 "github.com/liteseed/aogo"
)

// AO MODULE ID - Get Latest from "https://github.com/permaweb/aos"
const MODULE = "1PdCJiXhNafpJbvC-sjxWTeNzbf9Q_RfUNs84GYoPm0"

func main() {

 // Make a Signer
 s, err := signer.FromPath("./wallet.json")
 if err != nil {
  log.Fatal(err)
 }

 // Initialize an AO Struct
 ao, err := aogo.New()
 if err != nil {
  log.Fatal(err)
 }

 data := []byte{1, 2, 3}

 // Spawn a process with some data
 // Note: Spawn Process has some delay before the process shows up on ao.link and aos
 pID, err := ao.SpawnProcess(MODULE, data, []types.Tag{}, s)
 if err != nil {
  log.Fatal(err)
 }
 log.Println(pID)

  // Send a message to your AO process
  mID, err := ao.SendMessage("jysQej65l7KHRZi93csg0rvdmciJNL9hteM1N_yakpE", "", []types.Tag{{Name: "Action", Value: "Balance"}}, "", s)
  if err != nil {
  log.Fatal(err)
 }
 log.Println(mID)

 // Read message result
 res, err := ao.LoadResult("jysQej65l7KHRZi93csg0rvdmciJNL9hteM1N_yakpE", messageId)
 if err != nil {
  log.Fatal(err)
 }
 log.Println(res)

 // DryRun a Message and get it's result 
 dres, err := ao.DryRun(aogo.Message{Target: "qAbHIghbi7lb0Y8KdZr8q9dvH8xwXpawCXgGSD8OpJk", Data: "sgg2DZhTFPDIpI4bpZldRpP2RCobgtUstIlcxyh5mCA", Owner: s.Owner(), From: s.Address, Tags: []types.Tag{{Name: "Action", Value: "Balance"}}})
 if err != nil {
  log.Fatal(err)
 }
 log.Println(dres.Messages[0]["Data"])