refactored osuapi into multiple files
This commit is contained in:
parent
07beddbfe7
commit
b929741599
3 changed files with 98 additions and 89 deletions
70
osuapi/beatmapsets.go
Normal file
70
osuapi/beatmapsets.go
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
package osuapi
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"io"
|
||||||
|
"io/ioutil"
|
||||||
|
"net/url"
|
||||||
|
"os"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (api *Osuapi) SearchBeatmaps(rankStatus string) (beatmapSearch BeatmapSearch, err error) {
|
||||||
|
values := url.Values{}
|
||||||
|
values.Set("s", rankStatus)
|
||||||
|
query := values.Encode()
|
||||||
|
url := "/beatmapsets/search?" + query
|
||||||
|
err = api.Request("GET", url, &beatmapSearch)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *Osuapi) DownloadSingleBeatmap(beatmapId int, path string) (err error) {
|
||||||
|
url := fmt.Sprintf("https://osu.ppy.sh/osu/%d", beatmapId)
|
||||||
|
resp, err := api.httpClient.Get(url)
|
||||||
|
|
||||||
|
file, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR, 0644)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = io.Copy(file, resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *Osuapi) GetBeatmapSet(beatmapSetId int) (beatmapSet Beatmapset, err error) {
|
||||||
|
url := fmt.Sprintf("/beatmapsets/%d", beatmapSetId)
|
||||||
|
err = api.Request("GET", url, &beatmapSet)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *Osuapi) BeatmapsetDownload(beatmapSetId int) (path string, err error) {
|
||||||
|
url := fmt.Sprintf("/beatmapsets/%d/download", beatmapSetId)
|
||||||
|
resp, err := api.Request0("GET", url)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
file, err := ioutil.TempFile(os.TempDir(), "beatmapsetDownload")
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
_, err = io.Copy(file, resp.Body)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
file.Close()
|
||||||
|
|
||||||
|
path = file.Name()
|
||||||
|
return
|
||||||
|
}
|
|
@ -4,12 +4,9 @@ import (
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
"log"
|
"log"
|
||||||
"net/http"
|
"net/http"
|
||||||
"net/url"
|
|
||||||
"os"
|
|
||||||
"strings"
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
"time"
|
"time"
|
||||||
|
@ -160,92 +157,6 @@ func (api *Osuapi) Request(action string, url string, result interface{}) (err e
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (api *Osuapi) DownloadSingleBeatmap(beatmapId int, path string) (err error) {
|
|
||||||
url := fmt.Sprintf("https://osu.ppy.sh/osu/%d", beatmapId)
|
|
||||||
resp, err := api.httpClient.Get(url)
|
|
||||||
|
|
||||||
file, err := os.OpenFile(path, os.O_CREATE|os.O_RDWR, 0644)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = io.Copy(file, resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (api *Osuapi) GetBeatmapSet(beatmapSetId int) (beatmapSet Beatmapset, err error) {
|
|
||||||
url := fmt.Sprintf("/beatmapsets/%d", beatmapSetId)
|
|
||||||
err = api.Request("GET", url, &beatmapSet)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (api *Osuapi) BeatmapsetDownload(beatmapSetId int) (path string, err error) {
|
|
||||||
url := fmt.Sprintf("/beatmapsets/%d/download", beatmapSetId)
|
|
||||||
resp, err := api.Request0("GET", url)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
file, err := ioutil.TempFile(os.TempDir(), "beatmapsetDownload")
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
_, err = io.Copy(file, resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
file.Close()
|
|
||||||
|
|
||||||
path = file.Name()
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (api *Osuapi) GetUser(userId string) (user User, err error) {
|
|
||||||
url := fmt.Sprintf("/users/%s", userId)
|
|
||||||
err = api.Request("GET", url, &user)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (api *Osuapi) GetUserEvents(userId int, limit int, offset int) (events []Event, err error) {
|
|
||||||
url := fmt.Sprintf(
|
|
||||||
"/users/%d/recent_activity?limit=%d&offset=%d",
|
|
||||||
userId,
|
|
||||||
limit,
|
|
||||||
offset,
|
|
||||||
)
|
|
||||||
err = api.Request("GET", url, &events)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func (api *Osuapi) SearchBeatmaps(rankStatus string) (beatmapSearch BeatmapSearch, err error) {
|
|
||||||
values := url.Values{}
|
|
||||||
values.Set("s", rankStatus)
|
|
||||||
query := values.Encode()
|
|
||||||
url := "/beatmapsets/search?" + query
|
|
||||||
err = api.Request("GET", url, &beatmapSearch)
|
|
||||||
if err != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
type OsuToken struct {
|
type OsuToken struct {
|
||||||
TokenType string `json:"token_type"`
|
TokenType string `json:"token_type"`
|
||||||
ExpiresIn int `json:"expires_in"`
|
ExpiresIn int `json:"expires_in"`
|
||||||
|
|
28
osuapi/users.go
Normal file
28
osuapi/users.go
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
package osuapi
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
func (api *Osuapi) GetUser(userId string) (user User, err error) {
|
||||||
|
url := fmt.Sprintf("/users/%s", userId)
|
||||||
|
err = api.Request("GET", url, &user)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func (api *Osuapi) GetUserEvents(userId int, limit int, offset int) (events []Event, err error) {
|
||||||
|
url := fmt.Sprintf(
|
||||||
|
"/users/%d/recent_activity?limit=%d&offset=%d",
|
||||||
|
userId,
|
||||||
|
limit,
|
||||||
|
offset,
|
||||||
|
)
|
||||||
|
err = api.Request("GET", url, &events)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
Loading…
Reference in a new issue