milo/github-api-nette

Nette 框架扩展,用于轻松访问 Github API

dev-master 2017-07-21 21:56 UTC

This package is auto-updated.

Last update: 2024-09-06 09:45:34 UTC


README

这是 Nette 框架扩展,用于 milo/github-api 库。它为你提供

  • 登录和登出操作的准备好的展示器
  • Tracy 面板
  • Milo\Github\Api 服务在容器中
  • 以及一些其他功能...

安装

主分支与 Nette 2.4 兼容。对于 Nette 2.0-2.3,请使用分支 v2.1 和 v2.2(但它们不再维护)。

如果遇到问题,请创建问题

使用 Composer 进行安装

composer require milo/github-api-nette @dev

config.neon 中注册扩展

extensions:
	github: Milo\Github\NetteExtension\Extension(%debugMode%)

自从你注册了扩展,你就在 DI 容器中得到了一个新服务

  • github.apiMilo\Github\Api 的实例

当你设置 clientIdclientSecret(稍后提及)到配置文件中时,你会得到以下两个

  • github.loginMilo\Github\OAuth\Login 的实例
  • github.userMilo\Github\NetteExtension\User 的实例

配置

扩展无需任何配置即可工作。但你的 Github API 请求将被速率限制且未经验证。

config.neon 中配置扩展。如果你有一个静态令牌,你可以手动设置它

github:
	auth:
		token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

如果你想通过认证过程动态获取令牌,请设置 clientIdclientSecret

github:
	auth:
		clientId: 'xxxxxxxxxxxx'
		clientSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

你可以同时使用它们。认证获得的令牌将在获取时使用。

完整配置

services:
	ownClient: Milo\Github\Http\StreamClient

github:
	cached: FALSE       # (default TRUE) read below...
	client: @ownClient  # (default NULL) set own HTTP client
	auth:
		token: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
		clientId: 'xxxxxxxxxxxx'
		clientSecret: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
		scopes: ['user', 'repo']  # (default [])

缓存

cached 配置选项控制缓存机制。

  • FALSE - 不使用缓存

使用以下内容,将使用 Http\CachedClient

  • TRUE - 每个请求都会检查更新
  • (int) - int 秒内不会检查更新
  • INF - 永远不会检查更新(永久缓存)

警告 - (int)INF 仅用于开发目的,不应在生产环境中使用。这是因为缓存可能过时,并且 Github 可能持有更新的数据。

认证

为了帮助获取 OAuth 令牌,我们为你准备了一个抽象的 Milo\Github\NetteExtension\Presenter。在你的应用程序中使用它

namespace App\Presenters;

class GithubPresenter extends Milo\Github\NetteExtension\Presenter
{
	# Called after successfull authentication on Github web page
	public function actionSignInRedirect()
	{
		$this->flashMessage('Signed IN');
		$this->redirect('Homepage:');
	}


	# Called on logging out
	public function actionSignOutRedirect()
	{
		$this->flashMessage('Signed OUT');
		$this->redirect('Homepage:');
	}
}

以常规方式创建链接或重定向到以下展示器操作

  • Github:signIn 用于登录
  • Github:signOut 用于登出

注意:准备好的展示器需要配置 clientId 和 clientSecret。

即使你认证了或者没有认证,你也在 DI 容器中有一个 github.user Milo\Github\NetteExtension\User 服务。你可以检查 $user->isLoggedIn() 并获取一些基本信息,如登录名、姓名、头像 URL...

Tracy 面板

Tracy panel screenshot

许可证

MIT 许可证 (MIT)

版权所有 © 2014 Miloslav Hůla

特此授予任何获得此软件及其相关文档文件(以下简称“软件”)副本的任何人,免费使用该软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,并允许获得软件的人做上述事项,但需遵守以下条件

上述版权声明和本许可声明应包含在软件的所有副本或主要部分中。

本软件按“原样”提供,不提供任何形式的质量保证,无论是明示的、暗示的,还是包括但不限于适销性、特定用途适用性和非侵权的保证。在任何情况下,作者或版权所有者不应对任何索赔、损害或其他责任承担责任,无论是在合同、侵权或其他行为中,也不管这些索赔、损害或其他责任是否源于、产生于或与该软件或使用该软件或其他方式相关。