feat: completed Package struct
parent
442e01c53f
commit
3d39132646
26
aur.v
26
aur.v
|
@ -4,7 +4,27 @@ const aur_rpc_url = 'https://aur.archlinux.org/rpc/'
|
||||||
|
|
||||||
pub struct Package {
|
pub struct Package {
|
||||||
pub:
|
pub:
|
||||||
id u32 [json: ID]
|
id u32 [json: ID]
|
||||||
name string [json: Name]
|
name string [json: Name]
|
||||||
package_base_id u32 [json: PackageBaseID]
|
package_base_id u32 [json: PackageBaseID]
|
||||||
|
version string [json: Version]
|
||||||
|
description string [json: Description]
|
||||||
|
url string [json: URL]
|
||||||
|
num_votes u32 [json: NumVotes]
|
||||||
|
popularity f64 [json: Popularity]
|
||||||
|
out_of_date i64 [json: OutOfDate]
|
||||||
|
maintainer string [json: Maintainer]
|
||||||
|
first_submitted i64 [json: FirstSubmitted]
|
||||||
|
last_modified i64 [json: LastModified]
|
||||||
|
url_path string [json: URLPath]
|
||||||
|
groups []string [json: Groups]
|
||||||
|
depends []string [json: Depends]
|
||||||
|
make_depends []string [json: MakeDepends]
|
||||||
|
opt_depends []string [json: OptDepends]
|
||||||
|
check_depends []string [json: CheckDepends]
|
||||||
|
conflicts []string [json: Conflicts]
|
||||||
|
replaces []string [json: Replaces]
|
||||||
|
provides []string [json: Provides]
|
||||||
|
license []string [json: License]
|
||||||
|
keywords []string [json: Keywords]
|
||||||
}
|
}
|
||||||
|
|
48
client.v
48
client.v
|
@ -5,45 +5,49 @@ import net.http
|
||||||
import json
|
import json
|
||||||
|
|
||||||
pub struct Client {
|
pub struct Client {
|
||||||
url string = aur_rpc_url
|
url string = aur_rpc_url
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new() &Client {
|
pub fn new() &Client {
|
||||||
return &Client{}
|
return &Client{}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn new_with_url(url string) &Client {
|
pub fn new_with_url(url string) &Client {
|
||||||
if !url.ends_with('/') {
|
if !url.ends_with('/') {
|
||||||
return &Client{url: '$url/'}
|
return &Client{
|
||||||
}
|
url: '$url/'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return &Client{url: url}
|
return &Client{
|
||||||
|
url: url
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct SuccessResponse {
|
struct SuccessResponse {
|
||||||
result_count int [json: resultCount]
|
result_count int [json: resultCount]
|
||||||
results []Package
|
results []Package
|
||||||
}
|
}
|
||||||
|
|
||||||
fn (c Client) request(params map[string]string) ?[]Package {
|
fn (c Client) request(params map[string]string) ?[]Package {
|
||||||
mut params_escaped := map[string]string{}
|
mut params_escaped := map[string]string{}
|
||||||
|
|
||||||
for k, v in params {
|
for k, v in params {
|
||||||
params_escaped[k] = urllib.query_escape(v)
|
params_escaped[k] = urllib.query_escape(v)
|
||||||
}
|
}
|
||||||
|
|
||||||
params_str := params_escaped.keys().map('$it=${params[it]}').join('&')
|
params_str := params_escaped.keys().map('$it=${params[it]}').join('&')
|
||||||
|
|
||||||
url := '$c.url?$params_str'
|
url := '$c.url?$params_str'
|
||||||
|
|
||||||
res := http.get(url)?
|
res := http.get(url)?
|
||||||
|
|
||||||
if res.status_code < 200 || res.status_code >= 300 {
|
|
||||||
// temporary
|
|
||||||
return error('error')
|
|
||||||
}
|
|
||||||
|
|
||||||
data := json.decode(SuccessResponse, res.body)?
|
if res.status_code < 200 || res.status_code >= 300 {
|
||||||
|
// temporary
|
||||||
|
return error('error')
|
||||||
|
}
|
||||||
|
|
||||||
return data.results
|
data := json.decode(SuccessResponse, res.body)?
|
||||||
|
|
||||||
|
return data.results
|
||||||
}
|
}
|
||||||
|
|
51
search.v
51
search.v
|
@ -1,34 +1,39 @@
|
||||||
module aur
|
module aur
|
||||||
|
|
||||||
pub enum SearchType {
|
pub enum SearchType {
|
||||||
name
|
name
|
||||||
name_desc
|
name_desc
|
||||||
maintainer
|
maintainer
|
||||||
depends
|
depends
|
||||||
make_depends
|
make_depends
|
||||||
opt_depends
|
opt_depends
|
||||||
check_depends
|
check_depends
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (st SearchType) str() string {
|
pub fn (st SearchType) str() string {
|
||||||
return match st {
|
return match st {
|
||||||
.name { 'name' }
|
.name { 'name' }
|
||||||
.name_desc { 'name-desc' }
|
.name_desc { 'name-desc' }
|
||||||
.maintainer { 'maintainer' }
|
.maintainer { 'maintainer' }
|
||||||
.depends { 'depends' }
|
.depends { 'depends' }
|
||||||
.make_depends { 'makedepends' }
|
.make_depends { 'makedepends' }
|
||||||
.opt_depends { 'optdepends' }
|
.opt_depends { 'optdepends' }
|
||||||
.check_depends { 'checkdepends' }
|
.check_depends { 'checkdepends' }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (c Client) search_by(arg string, st SearchType) ?[]Package {
|
pub fn (c Client) search_by(arg string, st SearchType) ?[]Package {
|
||||||
params := {
|
params := {
|
||||||
'v': '5'
|
'v': '5'
|
||||||
'type': 'search'
|
'type': 'search'
|
||||||
'by': '$st'
|
'by': '$st'
|
||||||
'arg': arg
|
'arg': arg
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.request(params)
|
return c.request(params)
|
||||||
|
}
|
||||||
|
|
||||||
|
// search performs a search by name_desc.
|
||||||
|
pub fn (c Client) search(arg string) ?[]Package {
|
||||||
|
return c.search_by(arg, .name_desc)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue