Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leoafarias/pub_api_client
The most complete & unofficial API Client for Dart Pub.dev
https://github.com/leoafarias/pub_api_client
api dart flutter pub
Last synced: 20 days ago
JSON representation
The most complete & unofficial API Client for Dart Pub.dev
- Host: GitHub
- URL: https://github.com/leoafarias/pub_api_client
- Owner: leoafarias
- License: mit
- Created: 2020-10-19T13:29:27.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2024-10-01T20:11:38.000Z (about 1 month ago)
- Last Synced: 2024-10-18T00:43:08.936Z (21 days ago)
- Topics: api, dart, flutter, pub
- Language: Dart
- Homepage: https://pub.dev/packages/pub_api_client
- Size: 587 KB
- Stars: 92
- Watchers: 2
- Forks: 20
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
[![Pub Version](https://img.shields.io/pub/v/pub_api_client?label=version&style=flat-square)](https://pub.dev/packages/pub_api_client/changelog) ![Pub Likes](https://img.shields.io/pub/likes/pub_api_client?label=Pub%20Likes&style=fflat-squaree)
![Pub Points](https://img.shields.io/pub/points/pub_api_client?label=Pub%20Points&style=fflat-squaree) [![Coverage Status](https://coveralls.io/repos/github/leoafarias/pub_api_client/badge.svg?branch=main)](https://coveralls.io/github/leoafarias/pub_api_client?branch=main) [![MIT Licence](https://img.shields.io/github/license/leoafarias/pub_api_client?style=flat-square&longCache=true)](https://opensource.org/licenses/mit-license.php)## An unofficial API client for [Pub.dev](https://www.pub.dev)
Aims to be the most complete and stable pub.dev API client. If any particular endpoint is missing please [open an issue](https://github.com/leoafarias/pub_api_client/issues).
## Table of contents
- [Usage](#usage)
- [API](#api)
- [Packages](#packages)
- [Details](#get-package-info)
- [Score](#get-package-score)
- [Metrics](#get-package-metrics)
- [Versions](#get-package-versions)
- [Version Info](#get-package-version-info)
- [Publisher](#get-package-publisher)
- [Options](#get-package-options)
- [Documentation](#get-documentation)
- [Search Packages](#search-packages)
- [Paging Search Results](#paging-search-results)
- [Like Packages](#like-packages)
- [Utilities](#utilities)
- [Flutter Favorites](#flutter-favorites)
- [Google Packages](#google-packages)
- [Publisher Packages](#publisher-packages)## Usage
A simple usage example:
```dart
import 'package:pub_api_client/pub_api_client.dart';main() {
final client = PubClient();
}
```## API
### Packages
#### Get Package Info
Retrieves all available information about an specific package.
```dart
final package = await client.packageInfo('pkg_name');
```#### Get Package Score
Returns the following score information about a package.
- Pub Points
- Popularity
- Likes```dart
final score = await client.packageScore('pkg_name');
```#### Get Package Metrics
The method 'packageMetrics' returns the package 'score' together with a 'scorecard'
```dart
final metrics = await client.packageMetrics('pkg_name');
```#### Get Package Versions
The method 'packageVersions' also returns the versions. However if all you need is versions use this method since it's lighter.
```dart
final versions = await client.packageVersions('pkg_name');
```#### Get Package Version Info
The method `packageVersionInfo` returns information about a version of a specific package.
```dart
final version = await client.packageVersionInfo('pkg_name', 'version');
```#### Get Package Publisher
The method `packagePublisher` returns the publisherId of a specific package.
```dart
final publisher = await client.packagePublisher('pkg_name');
// publisher.publisherId
```#### Get Package Options
The method `packageOptions` returns options of a package.
```dart
final options = await client.packageOptions('pkg_name');
```#### Get Documentation
The method `documentation` returns all versions and their respective documentation status.
```dart
final documentation = await client.documentation('pkg_name');```
### Like Packages
All requests for likes require pub.dev authentication.
#### List liked packages
Displays list of of packages you have liked. Returns list of `packageLikes`
```dart
final likes = await client.listPackageLikes();
```#### Package Like Status
Returns like status of a package.
```dart
final like = await client.likePackageStatus();
```#### Like a Package
Likes a package. The method returns `packageLike` payload
```dart
final like = await client.likePackage('pkg_name');
```#### Unlike a Package
Unlikes a package. The method returns `packageLike` payload
```dart
final like = await client.unlikePackage('pkg_name');
```### Search Packages
Search for packages on pub.dev. Will return the packages that match the query. You can filter the search with tags.
```dart
final results = await client.search(
'query',
tags: [
PackageTag.publisher('publisher_id'),
PackageTag.dependency('dependency_name'),
'another:tag',
],
topics:['topic_1', 'topic_2'],
);
// Returns the packages that match the query
print(results.packages)
```#### Sorting search results
You are able to sort search results by the following:
##### Top
Search score should be a weighted value of [text], [popularity], [points] and [like], ordered decreasing.
##### Text
Search score should depend only on text match similarity, ordered decreasing.
##### Created
Search order should be in decreasing last package creation time.
##### Updated
Search order should be in decreasing last package updated time.
##### Popularity
Search order should be in decreasing popularity score.
##### Like
Search order should be in decreasing like count.
##### Points
Search order should be in decreasing pub points.
```dart
final results = await client.search('query', sort: SearchOrder.updated);print(results.packages)
```#### Paging Search Results
You are able to page search results.
```dart
final results = await client.search('query');
final nextResults = await results.nextPage();print(nextResults.packages)
```If you want to retrieve a specific result page you can call the `page` parameter directly.
```dart
final results = await client.search('query',page:2);
print(results.packages)
```## Utilities
### Flutter Favorites
Returns all Flutter favorites on pub.dev
```dart
final results = await client.fetchFlutterFavorites();
```### Google Packages
Returns all official Google packages. This will be a large payload with hundreds of packages.
```dart
final results = await client.fetchGooglePackages();
```### Publisher Packages
Returns all packages for a specific publisher
```dart
final results = await client.fetchPublisherPackages();
```