diff options
| -rw-r--r-- | Makefile | 2 | ||||
| -rw-r--r-- | README.md | 14 | ||||
| -rw-r--r-- | client.go (renamed from kbbi_client.go) | 36 | ||||
| -rw-r--r-- | client_test.go (renamed from kbbi_client_test.go) | 4 | ||||
| -rw-r--r-- | cmd/kbbi/main.go (renamed from cmd/kamusku/main.go) | 12 | ||||
| -rw-r--r-- | go.mod | 2 | ||||
| -rw-r--r-- | kbbi.go (renamed from kamusku.go) | 4 | ||||
| -rw-r--r-- | lookup_response.go | 2 | ||||
| -rw-r--r-- | word.go | 2 | ||||
| -rw-r--r-- | word_definition.go | 2 | ||||
| -rw-r--r-- | word_test.go | 2 | ||||
| -rw-r--r-- | words.go | 2 |
12 files changed, 42 insertions, 42 deletions
@@ -22,7 +22,7 @@ lint: .PHONY: install install: - go install ./cmd/kamusku + go install ./cmd/kbbi .PHONY: serve-docs serve-docs: @@ -3,22 +3,22 @@ SPDX-FileCopyrightText: 2024 M. Shulhan <ms@kilabit.info> SPDX-License-Identifier: GPL-3.0-or-later --> -# kamusku +# kbbi -kamusku adalah Go module yang berisi pustaka dan program untuk mencari +kbbi adalah Go module yang berisi pustaka dan program untuk mencari definisi kata Bahasa Indonesia dari situs resmi KBBI. -## Program kamusku +## Program kbbi -Program kamusku yaitu antar-muka untuk mencari definisi dari kata lewat baris +Program kbbi yaitu antar-muka untuk mencari definisi dari kata lewat baris perintah. Program ini sangat sederhana, caranya yaitu dengan memberikan kata yang dicari setelah nama program, misalnya, ``` -$ kamusku kamus,bahasa +$ kbbi kamus,bahasa ``` Maka akan mencetak definisi dari kata "kamus" dan "bahasa" ke layar, @@ -56,7 +56,7 @@ Maka akan mencetak definisi dari kata "kamus" dan "bahasa" ke layar, Bot untuk aplikasi Telegram: https://t.me/KamuskuBot Untuk saat ini, KamuskuBot hanya punya satu perintah yaitu "/definisi". Cara -menggunakan perintah ini hampir sama dengan program kamusku yaitu dengan +menggunakan perintah ini hampir sama dengan program kbbi yaitu dengan memberikan kata yang dicari, contohnya, ``` @@ -66,7 +66,7 @@ memberikan kata yang dicari, contohnya, ## LISENSI ``` -kamusku - The Go module library and program as interface to KBBI server. +kbbi - The Go module library and program as interface to KBBI server. Copyright (C) 2020-2024 M. Shulhan <ms@kilabit.info> This program is free software: you can redistribute it and/or modify it diff --git a/kbbi_client.go b/client.go index 2ec4eab..39dd031 100644 --- a/kbbi_client.go +++ b/client.go @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -package kamusku +package kbbi import ( "bytes" @@ -57,22 +57,22 @@ const ( tagNameUnorderedList = "ul" cookieFile = "cookie" - configDir = "kamusku" + configDir = `kbbi` defTimeout = 20 * time.Second maxPageNumber = 501 ) -// KbbiClient client for official KBBI web using HTTP. -type KbbiClient struct { +// Client for official KBBI web using HTTP. +type Client struct { baseDir string cookieURL *url.URL cookies []*http.Cookie httpc *http.Client } -// NewKbbiClient create and initialize new client that connect directly to +// NewClient create and initialize new client that connect directly to // KBBI official website. -func NewKbbiClient() (cl *KbbiClient, err error) { +func NewClient() (cl *Client, err error) { cookieURL, err := url.Parse(kbbiUrlBase) if err != nil { return nil, fmt.Errorf("New: %w", err) @@ -87,7 +87,7 @@ func NewKbbiClient() (cl *KbbiClient, err error) { return nil, fmt.Errorf("New: %w", err) } - cl = &KbbiClient{ + cl = &Client{ cookieURL: cookieURL, httpc: &http.Client{ Jar: jar, @@ -108,7 +108,7 @@ func NewKbbiClient() (cl *KbbiClient, err error) { } // Lookup lookup definition of one or more words. -func (cl *KbbiClient) Lookup(ins []string) (res LookupResponse, err error) { +func (cl *Client) Lookup(ins []string) (res LookupResponse, err error) { res = make(LookupResponse, len(ins)) for _, in := range ins { @@ -149,7 +149,7 @@ func (cl *KbbiClient) Lookup(ins []string) (res LookupResponse, err error) { } // ListRootWords list all of the root words in dictionary. -func (cl *KbbiClient) ListRootWords() (rootWords Words, err error) { +func (cl *Client) ListRootWords() (rootWords Words, err error) { params := url.Values{ paramNameMasukan: []string{paramValueDasar}, paramNameMasukanLengkap: []string{paramValueDasar}, @@ -201,12 +201,12 @@ func (cl *KbbiClient) ListRootWords() (rootWords Words, err error) { // IsAuthenticated will return true if the client already login; otherwise it // will return false. -func (cl *KbbiClient) IsAuthenticated() bool { +func (cl *Client) IsAuthenticated() bool { return len(cl.cookies) > 0 } // Login authenticate the client using user email and password. -func (cl *KbbiClient) Login(email, pass string) (err error) { +func (cl *Client) Login(email, pass string) (err error) { tokenLogin, err := cl.preLogin() if err != nil { return fmt.Errorf("Login: %w", err) @@ -252,11 +252,11 @@ func (cl *KbbiClient) Login(email, pass string) (err error) { } // setCookies for HTTP request that need an authentication. -func (cl *KbbiClient) setCookies() { +func (cl *Client) setCookies() { cl.httpc.Jar.SetCookies(cl.cookieURL, cl.cookies) } -func (cl *KbbiClient) parseHTMLRootWords(htmlBody []byte) ( +func (cl *Client) parseHTMLRootWords(htmlBody []byte) ( rootWords Words, err error, ) { iter, err := html.Parse(bytes.NewReader(htmlBody)) @@ -285,7 +285,7 @@ func (cl *KbbiClient) parseHTMLRootWords(htmlBody []byte) ( } // parseHTMLLogin get the token at the form login. -func (cl *KbbiClient) parseHTMLLogin(htmlBody []byte) ( +func (cl *Client) parseHTMLLogin(htmlBody []byte) ( token string, err error, ) { iter, err := html.Parse(bytes.NewReader(htmlBody)) @@ -311,7 +311,7 @@ func (cl *KbbiClient) parseHTMLLogin(htmlBody []byte) ( } // preLogin initialize the client to get the first cookie. -func (cl *KbbiClient) preLogin() (token string, err error) { +func (cl *Client) preLogin() (token string, err error) { req, err := http.NewRequest(http.MethodGet, kbbiUrlLogin, nil) if err != nil { return "", err @@ -338,10 +338,10 @@ func (cl *KbbiClient) preLogin() (token string, err error) { } // loadCookies load the KBBI cookies from file. -func (cl *KbbiClient) loadCookies() (err error) { +func (cl *Client) loadCookies() (err error) { cl.baseDir, err = os.UserConfigDir() if err != nil { - return fmt.Errorf("loadCookies: %w", err) + return nil } f := filepath.Join(cl.baseDir, configDir, cookieFile) @@ -367,7 +367,7 @@ func (cl *KbbiClient) loadCookies() (err error) { } // saveCookies store the client cookies to the file for future use. -func (cl *KbbiClient) saveCookies() { +func (cl *Client) saveCookies() { err := os.MkdirAll(filepath.Join(cl.baseDir, configDir), 0700) if err != nil { log.Println("saveCookies:", err) diff --git a/kbbi_client_test.go b/client_test.go index ba46de1..fa9e3c7 100644 --- a/kbbi_client_test.go +++ b/client_test.go @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -package kamusku +package kbbi import ( "os" @@ -14,7 +14,7 @@ func TestClient_parseHTMLKataDasar(t *testing.T) { t.Fatal(err) } - cl, err := NewKbbiClient() + cl, err := NewClient() if err != nil { t.Fatal(err) } diff --git a/cmd/kamusku/main.go b/cmd/kbbi/main.go index 796a31e..c605428 100644 --- a/cmd/kamusku/main.go +++ b/cmd/kbbi/main.go @@ -1,8 +1,8 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -// Program kamusku is the command-line interface to Kamus Besar Bahasa -// Indonesia (KBBI). +// Program kbbi is the command-line interface to Kamus Besar Bahasa +// Indonesia (KBBI) at https://kbbi.kemdikbud.go.id/. package main import ( @@ -11,7 +11,7 @@ import ( "log" "sort" - "git.sr.ht/~shulhan/kamusku" + kbbi "git.sr.ht/~shulhan/kbbi" ) const ( @@ -28,7 +28,7 @@ func main() { ) log.SetFlags(0) - log.SetPrefix("kamusku: ") + log.SetPrefix(`kbbi: `) flag.StringVar(&email, cmdNameSurel, "", "Nama pengguna") flag.StringVar(&pass, cmdNameSandi, "", "Sandi pengguna") @@ -37,7 +37,7 @@ func main() { flag.Parse() - cl, err := kamusku.NewKbbiClient() + cl, err := kbbi.NewClient() if err != nil { log.Fatal(err) } @@ -93,7 +93,7 @@ func main() { } } -func listRootWords(cl *kamusku.KbbiClient) { +func listRootWords(cl *kbbi.Client) { words, err := cl.ListRootWords() if err != nil { log.Println(err) @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2024 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -module git.sr.ht/~shulhan/kamusku +module git.sr.ht/~shulhan/kbbi go 1.21 @@ -1,9 +1,9 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -// Package kamusku is the Go library to access the Bahasa Indonesia dictionary +// Package kbbi is the Go library to access the Bahasa Indonesia dictionary // from https://kbbi.kemdikbud.go.id. -package kamusku +package kbbi // Version of this module. var Version = `0.1.0` diff --git a/lookup_response.go b/lookup_response.go index 389a8e2..4a6ed07 100644 --- a/lookup_response.go +++ b/lookup_response.go @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -package kamusku +package kbbi // LookupResponse contains mapping of word and its definition. type LookupResponse map[string]*Word @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -package kamusku +package kbbi import ( "bytes" diff --git a/word_definition.go b/word_definition.go index 0f4820e..385ba9d 100644 --- a/word_definition.go +++ b/word_definition.go @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -package kamusku +package kbbi import ( "fmt" diff --git a/word_test.go b/word_test.go index a38550d..7e0a69b 100644 --- a/word_test.go +++ b/word_test.go @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -package kamusku +package kbbi import ( "os" @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info> // SPDX-License-Identifier: GPL-3.0-or-later -package kamusku +package kbbi // Words contains list of words. type Words map[string]struct{} |
