{"id":23097058,"url":"https://github.com/alexcoder04/iserv2go","last_synced_at":"2025-08-16T12:32:09.857Z","repository":{"id":63732479,"uuid":"563851592","full_name":"alexcoder04/iserv2go","owner":"alexcoder04","description":"*Unofficial* IServ Go library and CLI","archived":false,"fork":false,"pushed_at":"2024-10-29T18:25:48.000Z","size":166,"stargazers_count":4,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-29T20:33:06.693Z","etag":null,"topics":["api","automation","cli","command-line","education","email","files","go","go-api","go-library","golang","iserv","lib","library","mail","school","web-api"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alexcoder04.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-09T13:26:57.000Z","updated_at":"2024-10-29T18:41:43.000Z","dependencies_parsed_at":"2023-02-19T09:16:12.630Z","dependency_job_id":"b4aa53f0-f183-4db9-98d8-7d7144de0951","html_url":"https://github.com/alexcoder04/iserv2go","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcoder04%2Fiserv2go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcoder04%2Fiserv2go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcoder04%2Fiserv2go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alexcoder04%2Fiserv2go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alexcoder04","download_url":"https://codeload.github.com/alexcoder04/iserv2go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230038458,"owners_count":18163286,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","automation","cli","command-line","education","email","files","go","go-api","go-library","golang","iserv","lib","library","mail","school","web-api"],"created_at":"2024-12-16T22:50:40.844Z","updated_at":"2024-12-16T22:50:41.509Z","avatar_url":"https://github.com/alexcoder04.png","language":"Go","readme":"\n# iserv2go\n\n[![License](https://img.shields.io/github/license/alexcoder04/iserv2go)](https://github.com/alexcoder04/iserv2go/blob/main/LICENSE)\n[![Go Version](https://img.shields.io/github/go-mod/go-version/alexcoder04/iserv2go)](https://github.com/alexcoder04/iserv2go/blob/main/go.mod)\n[![Lines](https://img.shields.io/tokei/lines/github/alexcoder04/iserv2go?label=lines)](https://github.com/alexcoder04/iserv2go/pulse)\n[![Release](https://img.shields.io/github/v/release/alexcoder04/iserv2go?display_name=tag\u0026sort=semver)](https://github.com/alexcoder04/iserv2go/releases/latest)\n[![Stars](https://img.shields.io/github/stars/alexcoder04/iserv2go)](https://github.com/alexcoder04/iserv2go/stargazers)\n[![Contributors](https://img.shields.io/github/contributors-anon/alexcoder04/iserv2go)](https://github.com/alexcoder04/iserv2go/graphs/contributors)\n\n\nAn unofficial Go library and CLI for [IServ](https://iserv.eu/).\n\n**Disclaimer 1**: I am **not** affiliated with the [IServ GmbH](https://iserv.eu/) in any way.\n\n**Disclaimer 2**: This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the [GNU Affero General Public License](./LICENSE) for more details.\n\n**Disclaimer 3**: Use it at YOUR OWN RISK!\n\n## Use as CLI\n\n```sh\niserv2go [options] command [arguments...]\n```\n\n### List of options\n\n|Option|Description|\n|---|---|\n|`-enable-email`|enables the email functionality|\n|`-enable-files`|enables the files functionality|\n|`-enable-web`|enables other functions (notifications, exercises, etc)|\n|`-info`|shows program info|\n|`-interactive`|starts interactive console where you can type commands instead of passing them as arguments|\n|`-save-sessions`|saves login cookies on the hard drive for subsequent logins|\n\n### List of commands\n\n|Command|Arguments|Description|\n|---|---|---|\n|`email.list_mailboxes`|none|get a list of mailboxes|\n|`email.read_mailbox`|`mailbox path`|get last 50 messages from mailbox|\n|`email.send_mail`|`recipient address`, `subject`, `body`|send email|\n|`files.cat`|`filename`|print contents of file|\n|`files.download`|`iserv path`, `local path`|download file from IServ|\n|`files.ls`|`directory`|list of files in directory|\n|`files.upload`|`local path`, `iserv path`|upload file to IServ|\n|`web.get_badges`|none|get badges (for modules on the nav bar left)|\n|`web.get_current_exercises`|none|list of current exercises|\n|`web.get_notifications`|none|get unread notifications|\n|`web.get_past_exercises`|none|list of past exercises|\n|`web.get_upcoming_events`|none|list of upcoming events|\n\n## Use as Library\n\n### Install\n\n```sh\n# in your project directory\ngo get github.com/alexcoder04/iserv2go/iserv\n```\n\n### Example usage\n\n```go\npackage main\n\nimport (\n    \"fmt\"\n\n    \"github.com/alexcoder04/iserv2go/iserv\"\n    \"github.com/alexcoder04/iserv2go/iserv/types\"\n)\n\nfunc main(){\n    // create new client instance\n    client := iserv.Client{}\n\n    // login your client\n    err := client.Login(\u0026types.ClientConfig{\n        IServHost: os.Getenv(\"ISERV_HOST\"),\n        Username:  os.Getenv(\"ISERV_USERNAME\"),\n        Password:  os.Getenv(\"ISERV_PASSWORD\"),\n\n        EnableModules: map[string]bool{\n            \"email\": true,\n            \"files\": false,\n            \"web\":   false,\n        },\n        SaveSessions: true,\n    })\n    if err != nil {\n        fmt.Println(\"failed to login\")\n        return\n    }\n\n    // don't forget to logout\n    defer client.Logout()\n\n    // get 10 last mails in INBOX\n    messages, err := client.Email.ReadMailbox(\"INBOX\", 10)\n    if err != nil {\n        return\n    }\n    // print them\n    for _, m := range messages {\n        fmt.Printf(\" = '%s' from %s\\n\", m.Envelope.Subject, m.Envelope.Sender[0].Address())\n    }\n}\n```\n\n## Project Structure\n\nThe `iserv` folder contains the Go Library, the subfolders `email`, `files`, `web` are modules, which can be (de-)activated separately.\nThey contain each `user.go` files, which include all the functions meant to be used by end-user.\n\n## Contributing\n\nContributions are always welcome, there are a lot of things that wait to be implemented, see the [issues](https://github.com/alexcoder04/iserv2go/issues).\nI am also looking for co-maintainers and someone to test the project extensively :)\n\n## Credits\n\n### Contributors\n\n - [@Redstonerayy](https://github.com/Redstonerayy)\n\n### Libraries\n\n - [goquery](https://github.com/PuerkitoBio/goquery) - parsing the html pages to extract information\n - [go-imap](https://github.com/emersion/go-imap) - receive emails\n - [gowebdav](https://github.com/studio-b12/gowebdav) - work with files\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexcoder04%2Fiserv2go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falexcoder04%2Fiserv2go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falexcoder04%2Fiserv2go/lists"}