https://github.com/ellypaws/inkbunny
Inkbunny API written in Go
https://github.com/ellypaws/inkbunny
inkbunny
Last synced: 2 months ago
JSON representation
Inkbunny API written in Go
- Host: GitHub
- URL: https://github.com/ellypaws/inkbunny
- Owner: ellypaws
- Created: 2024-02-14T21:36:15.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-03T19:48:02.000Z (3 months ago)
- Last Synced: 2025-04-03T20:33:38.626Z (3 months ago)
- Topics: inkbunny
- Language: Go
- Homepage: https://inkbunny.net
- Size: 208 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
![]()
![]()
Inkbunny API
--------------
Disclaimer: This project is not affiliated or endorsed by Inkbunny.
Inkbunny API is a Go package that provides a simple way to interact with the Inkbunny API. It allows you to log in, log
out, and make requests to the Inkbunny API.It aims to provide all of the available API endpoints and methods to interact with the platform.
The necessary structs and methods are abstracted away so that you can send and receive data in standardized Go structs.Table of Contents
=================- [Table of Contents](#table-of-contents)
- [Installation](#installation)
- [API Methods](#api-methods)
- [Usage](#usage)
- [Learn More](#learn-more)
- [Contributing](#contributing)## Installation
To use the api module, you need to have Go installed on your system. If you don't have Go installed, you can
download it from the [official Go website](https://golang.org/dl/).Once you have Go installed, you can get the package by running the following command:
```bash
go get github.com/ellypaws/inkbunny/api
```## Usage
Here's a simple example of how to use the Inkbunny API package logging in as
a [guest](https://wiki.inkbunny.net/wiki/API#Quick_Start_Guide):```go
package mainimport (
"github.com/ellypaws/inkbunny/api"
"log"
)func main() {
user, err := api.Guest().Login()
if err != nil {
log.Printf("Error logging in: %v", err)
return
}log.Printf("Logged in with session ID: %s", user.Sid)
}```
You can login with your own credentials by creating a `Credentials` object and calling the `Login` method.
Note that the password gets destroyed after the login request is made.
Important: Do not hardcode your credentials in your code.
You can use environment variables or term `"golang.org/x/term"` to input your credentials.```go
package mainimport (
"fmt"
"github.com/ellypaws/inkbunny/api"
"log"
)func main() {
user := &api.Credentials{
Username: "your_username",
Password: "your_password",
}user, err := user.Login()
if err != nil {
log.Printf("Error logging in: %v", err)
return
}log.Printf("Logged in with session ID: %s", user.Sid)
if err := user.Logout(); err != nil {
log.Printf("Error logging out: %v", err)
return
}fmt.Println("Logged out")
}
```Because the API uses "yes" or "no" to represent boolean values, use `api.Yes` and `api.No` to represent these values.
```go
package mainimport (
"github.com/ellypaws/inkbunny/api"
"log"
)func main() {
user, err := api.Guest().Login()
if err != nil {
log.Fatalf("Error logging in: %v", err)
}if err := user.ChangeRating(api.Ratings{
General: api.Yes,
Nudity: api.No,
MildViolence: api.Yes,
}); err != nil {
log.Fatalf("Error changing rating: %v", err)
}user.SubmissionDetails(
api.SubmissionDetailsRequest{
SubmissionIDs: "your submission IDs here",
ShowDescription: api.Yes,
},
)
}
```## API Methods
The application provides several API methods to interact with the platform:
(note: We always need a `Credentials` object to call these methods)| Method | Description |
|---------------------------------------------------------------------------------------------------------|-----------------------------------------------------------|
| `(user *Credentials) Login() (*Credentials, error)` | Logs in a user. |
| `(user *Credentials) Logout() error` | Logs out a user. |
| `(user Credentials) LoggedIn() bool` | Checks if a user is logged in. |
| `(user Credentials) Request(method string, url string, body io.Reader) (*http.Request, error)` | Sends a request to the specified URL. |
| `(user Credentials) Get(url *url.URL) (*http.Response, error)` | Sends a GET request to the specified URL. |
| `(user Credentials) Post(url *url.URL, contentType string, body io.Reader) (*http.Response, error)` | Sends a POST request to the specified URL. |
| `(user Credentials) PostForm(url *url.URL, values url.Values) (*http.Response, error)` | Sends a POST request with form data to the specified URL. |
| `(user Credentials) GetWatching() ([]UsernameID, error)` | Retrieves the user's watchlist. (users you're watching) |
| `(user Credentials) SubmissionDetails(req SubmissionDetailsRequest) (SubmissionDetailsResponse, error)` | Retrieves the details of a submission. |
| `(user Credentials) SubmissionFavorites(req SubmissionRequest) (SubmissionFavoritesResponse, error)` | Retrieves the favorites of a submission. |
| `(user Credentials) SearchSubmissions(req SearchRequest) (SearchResponse, error)` | Searches for submissions. |
| `(user Credentials) OwnSubmissions() (SearchResponse, error)` | Retrieves the user's own submissions. |
| `(user Credentials) UserSubmissions(username string) (SearchResponse, error)` | Retrieves the submissions of a specified user. |## Learn More
You can learn more about the Inkbunny API by visiting
the [official Inkbunny API wiki](https://wiki.inkbunny.net/wiki/API).## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.