miro-gopher

module
v1.0.7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 9, 2023 License: MIT

README

miro-gopher

API client for accessing the MIRO API

Currently, only supports the oauth, oauth_token, /boards & /boards/members endpoints, but more to follow soon.

For now the GET, POST, PUT, PATCH & DELETE methods are open to use for any other API calls to MIRO.

Minimum required Go version : 1.18

GoDoc Tests

Tag GoDoc License

gopher.png

Installation

go get github.com/russ-davey/miro-gopher/miro

Basic Usage

All interaction starts with a miro.Client. Create one with your MIRO token:

import "github.com/russ-davey/miro-gopher/miro"

client := miro.NewClient(token)

Using the Native Functions

If there is part of MIRO API that you would like to access, but it isn't currently supported by this package, then you can use the Get, Post, Put, Patch, & Delete functions to natively access them instead:

client := NewClient(os.Getenv("MIRO_TOKEN"))

response := make(map[string]interface{})

err := client.Get("https://api.miro.com/v2/boards/3141592/items/16180339887", &response)
if err != nil {
    fmt.Printf("error: %v", err)
} else {
    jsonData, _ := json.Marshal(response)
    fmt.Printf("MIRO API Response: %s\n", jsonData)
}

Using a Customised HTTP client

By default, this package will use a fine-tuned HTTP client, but you may want to use your own.

client := NewClient(os.Getenv("MIRO_TOKEN"))

client.HTTPClient = &http.Client{Timeout: 500 * time.Millisecond}

/boards API Methods

Get
client.Boards.Get("3141592")
GetALL
client.Boards.GetAll()

or with query parameters:

client.Boards.GetAll(miro.BoardSearchParams{
    TeamID: "gophers",
    Sort: miro.SortAlphabetically,
})

or when there are more than 20 boards, then use the iterator:

iter, err := client.Boards.GetAll(BoardSearchParams{TeamID: "gophers", Limit: "50"})
if err != nil {
    log.Fatalf("error: %v", err)
}

for {
    boards, err := iter.GetNext()
    if err == IteratorDone {
        break
    }

    for _, board := range boards.Data {
        fmt.Println(board.Name)
    }
}
Create
client.Boards.Create(miro.CreateBoard{
    Description: "My Board",
    Name:        "MIRO Gopher",
    Policy: miro.Policy{
        SharingPolicy: miro.SharingPolicy{
            Access:                            miro.AccessPrivate,
            InviteToAccountAndBoardLinkAccess: miro.InviteAccessEditor,
            TeamAccess:                        miro.AccessEdit,
        },
        PermissionsPolicy: miro.PermissionsPolicy{
            SharingAccess:                 miro.AccessBoardOwnersAndCoOwners,
            CopyAccess:                    miro.CopyAccessTeamEditors,
            CollaborationToolsStartAccess: miro.AccessBoardOwnersAndCoOwners,
        },
    },
    TeamID: "gophers",
})
Copy
client.Boards.Copy(miro.CreateBoard{
    Description: "My Board",
    Name:        "MIRO Gopher",
    Policy: miro.Policy{
        SharingPolicy: miro.SharingPolicy{
            Access:                            miro.AccessPrivate,
            InviteToAccountAndBoardLinkAccess: miro.InviteAccessEditor,
            TeamAccess:                        miro.AccessEdit,
        },
        PermissionsPolicy: miro.PermissionsPolicy{
            SharingAccess:                 miro.AccessBoardOwnersAndCoOwners,
            CopyAccess:                    miro.CopyAccessTeamEditors,
            CollaborationToolsStartAccess: miro.AccessBoardOwnersAndCoOwners,
        },
    },
    TeamID: "gophers",
},
    "3141592")
Update
client.Boards.Update(miro.CreateBoard{
    Description: "My New Board",
    Name:        "New MIRO Gopher",
    Policy: miro.Policy{
        SharingPolicy: miro.SharingPolicy{
            Access:                            miro.AccessPrivate,
            InviteToAccountAndBoardLinkAccess: miro.InviteAccessEditor,
            TeamAccess:                        miro.AccessEdit,
        },
        PermissionsPolicy: miro.PermissionsPolicy{
            SharingAccess:                 miro.AccessBoardOwnersAndCoOwners,
            CopyAccess:                    miro.CopyAccessTeamEditors,
            CollaborationToolsStartAccess: miro.AccessBoardOwnersAndCoOwners,
        },
    },
    TeamID: "gophers",
},
"3141592")
Delete
client.Boards.Delete("3141592")

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL