This repository has been archived by the owner on Jan 21, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 23
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'hotfix/require-php-7-2'
Close #54
- Loading branch information
Showing
5 changed files
with
235 additions
and
28 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,12 +1,201 @@ | ||
# ZendService\Twitter component | ||
# zendservice-twitter | ||
|
||
Master: [![Build Status](https://secure.travis-ci.org/zendframework/ZendService_Twitter.png?branch=master)](http://travis-ci.org/zendframework/ZendService_Twitter) | ||
[![Build Status](https://secure.travis-ci.org/zendframework/ZendService_Twitter.svg?branch=master)](https://secure.travis-ci.org/zendframework/ZendService_Twitter) | ||
[![Coverage Status](https://coveralls.io/repos/github/zendframework/ZendService_Twitter/badge.svg?branch=master)](https://coveralls.io/github/zendframework/ZendService_Twitter?branch=master) | ||
|
||
You can install using Composer: | ||
Provides an object oriented PHP wrapper for the [Twitter API](https://developer.twitter.com/en/docs). | ||
|
||
## Installation | ||
|
||
Run the following to install this library: | ||
|
||
```bash | ||
$ composer require zendframework/zendservice-twitter | ||
``` | ||
|
||
At that point, follow the instructions in the documentation folder for actual | ||
usage of the component. (Documentation is forthcoming.) | ||
## Usage | ||
|
||
Instantiate the `Twitter` class by providing your Twitter consumer key and | ||
secret, as well as the access token and secret: | ||
|
||
```php | ||
use ZendService\Twitter\Twitter; | ||
|
||
$twitter = new Twitter([ | ||
'access_token' => [ | ||
'token' => '<token value>', | ||
'secret' => '<token secret value>', | ||
], | ||
'oauth_options' => [ | ||
'consumerKey' => '<consumer key value>', | ||
'consumerSecret' => '<consumer secret value>', | ||
], | ||
]); | ||
``` | ||
|
||
Once you have done that, you may start making calls to the API. This can be done | ||
in one of three ways: | ||
|
||
- Using direct method calls on the `Twitter` class. A full list is provided | ||
below. | ||
- Using the "proxy" functionality. In these cases, you will provide the first | ||
path element of the API, and then call a method on it: | ||
`$twitter->statuses->update($message)`. | ||
- Using the `get()` or `post()` methods. | ||
|
||
## Available methods | ||
|
||
- `accountVerifyCredentials() : Response` | ||
- `applicationRateLimitStatus() : Response` | ||
- `blocksCreate($id) : Response` | ||
- `blocksDestroy($id) : Response` | ||
- `blocksIds(int $cursor = -1) : Response` | ||
- `blocksList(int $cursor = -1) : Response` | ||
- `directMessagesDestroy($id) : Response` | ||
- `directMessagesMessages(array $options = []) : Response` | ||
- `directMessagesNew($user, string $text, array $extraParams = []) : Response` | ||
- `directMessagesEventsNew($user, string $text, array $extraParams = []) : Response` | ||
- `directMessagesSent(array $options = []) : Response` | ||
- `favoritesCreate($id) : Response` | ||
- `favoritesDestroy($id) : Response` | ||
- `favoritesList(array $options = []) : Response` | ||
- `followersIds($id, array $params = []) : Response` | ||
- `friendsIds($id, array $params = []) : Response` | ||
- `friendshipsCreate($id, array $params = []) : Response` | ||
- `friendshipsLookup($id, array $params = []) : Response` | ||
- `friendshipsDestroy($id) : Response` | ||
- `listsMembers($listIdOrSlug, array $params = []) : Response` | ||
- `listsMemberships($id, array $params = []) : Response` | ||
- `listsSubscribers($id, array $params = []) : Response` | ||
- `searchTweets(string $query, array $options = []) : Response` | ||
- `statusesDestroy($id) : Response` | ||
- `statusesHomeTimeline(array $options = []) : Response` | ||
- `statusesMentionsTimeline(array $options = []) : Response` | ||
- `statusesSample() : Response` | ||
- `statusesShow($id, array $options = []) : Response` | ||
- `statusesUpdate(string $status, $inReplyToStatusId = null, $extraAttributes = []) : Response` | ||
- `statusesUserTimeline(array $options = []) : Response` | ||
- `usersLookup($id, array $params = []) : Response` | ||
- `usersSearch(string $query, array $options = []) : Response` | ||
- `usersShow($id) : Response` | ||
|
||
## Proxy Properties | ||
|
||
The following proxy properties are allowed: | ||
|
||
- account | ||
- application | ||
- blocks | ||
- directmessages | ||
- favorites | ||
- followers | ||
- friends | ||
- friendships | ||
- lists | ||
- search | ||
- statuses | ||
- users | ||
|
||
In each case, you can identify available methods for the proxy by comparing the | ||
proxy name to the above list of methods. As an example, the `users` proxy allows | ||
the following: | ||
|
||
```php | ||
$twitter->users->lookup($id, array $params = []); | ||
$twitter->users->search(string $query, array $options = []); | ||
$twitter->users->show($id); | ||
``` | ||
|
||
## Direct access | ||
|
||
The Twitter API has dozens of endpoints, some more popular and/or useful than | ||
others. As such, we are only providing a subset of what is available. | ||
|
||
However, we allow you to access any endpoint via either the `get()` or `post()` | ||
methods, which have the following signatures: | ||
|
||
```php | ||
public function get(string $path, array $query = []) : Response; | ||
public function post(string $path, $data = null) : Response; | ||
``` | ||
|
||
In each case, the `$path` is the API endpoint as detailed in the Twitter API | ||
documentation, minus any `.json` suffix, and the method name corresponds to | ||
whether the request happens via HTTP GET or POST. | ||
|
||
For HTTP GET requests, the `$query` argument provides any query string | ||
parameters you want to pass for that endpoint. As an example, if you were | ||
requesting `statuses/home_timeline`, you might pass `count` or `since_id`. | ||
|
||
For HTTP POST requests, the `$data` argument can be one of: | ||
|
||
- An associative array of data. | ||
- A serializable object of data. | ||
- A string representing the raw payload. | ||
|
||
The data to provide will vary based on the endpoint. | ||
|
||
## Media uploads | ||
|
||
Since version 3.0, we have supported media uploads via the classes | ||
`ZendService\Twitter\Media`, `Image`, and `Video`. In each case, you will | ||
instantiate the appropriate class with the local filesystem path of the image to | ||
upload and the media type, followed by calling `upload()` with a properly | ||
configured HTTP client. The response will contain a `media_id` property, which | ||
you can then provide via the `media_ids` parameter when posting a status: | ||
|
||
|
||
```php | ||
$image = new Image('data/logo.png', 'image/png'); | ||
$response = $image->upload($twitter->getHttpClient()); | ||
|
||
$twitter->statusUpdate( | ||
'A post with an image', | ||
null, | ||
['media_ids' => [$response->media_id]] | ||
); | ||
``` | ||
|
||
When providing media for direct messages, you must provide additional flags to | ||
the media class's constructor: | ||
|
||
- A flag indicating it is for a direct message | ||
- A flag indicating whether or not the uploaded media may be shared/re-used in | ||
other direct messages. | ||
|
||
```php | ||
$image = new Image( | ||
'data/logo.png', | ||
'image/png', | ||
$forDirectMessage = true, | ||
$shared = false | ||
); | ||
$upload = $image->upload($twitter->getHttpClient()); | ||
``` | ||
|
||
Unlike non-DM media uploads, the identifier will be in the `id_str` parameter of | ||
the returned upload instance; use that as a `media_id` in your DM: | ||
|
||
```php | ||
$twitter->directmessagesEventsNew( | ||
$user, | ||
$message, | ||
['media_id' => $upload->id_str] | ||
); | ||
``` | ||
|
||
Note: direct messages only support a single attachment. | ||
|
||
## Rate limiting | ||
|
||
As of version 3.0, we now provide introspection of Twitter's rate limit headers, | ||
allowing you to act on them: | ||
|
||
```php | ||
$response = $twitter->statusUpdate('A post'); | ||
$rateLimit = $response->getRateLimit(); | ||
if ($rateLimit->remaining === 0) { | ||
// Time to back off! | ||
sleep($rateLimit->reset); // seconds left until reset | ||
} | ||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,11 +1,19 @@ | ||
- [ ] I was not able to find an [open](https://github.com/zendframework/ZendService_Twitter/issues?q=is%3Aopen) or [closed](https://github.com/zendframework/ZendService_Twitter/issues?q=is%3Aclosed) issue matching what I'm seeing. | ||
- [ ] This is not a question. (Questions should be asked on [slack](https://zendframework.slack.com/) ([Signup for Slack here](https://zendframework-slack.herokuapp.com/)) or our [forums](https://discourse.zendframework.com/).) | ||
|
||
Provide a narrative description of what you are trying to accomplish. | ||
|
||
### Code to reproduce the issue | ||
|
||
<!-- Please provide the minimum code necessary to recreate the issue --> | ||
|
||
```php | ||
``` | ||
|
||
### Expected results | ||
|
||
<!-- What do you think should have happened? --> | ||
|
||
### Actual results | ||
|
||
<!-- What did you actually observe? --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,17 +1,25 @@ | ||
Provide a narrative description of what you are trying to accomplish: | ||
|
||
- Are you fixing a bug? | ||
- Detail how the bug is invoked currently. | ||
- Detail the original, incorrect behavior. | ||
- Detail the new, expected behavior. | ||
- [ ] Are you fixing a bug? | ||
- [ ] Detail how the bug is invoked currently. | ||
- [ ] Detail the original, incorrect behavior. | ||
- [ ] Detail the new, expected behavior. | ||
- [ ] Base your feature on the `master` branch, and submit against that branch. | ||
- [ ] Add a regression test that demonstrates the bug, and proves the fix. | ||
- [ ] Add a `CHANGELOG.md` entry for the fix. | ||
|
||
- Are you creating a new feature? | ||
- Why is the new feature needed? What purpose does it serve? | ||
- How will users use the new feature? | ||
- [ ] Are you creating a new feature? | ||
- [ ] Why is the new feature needed? What purpose does it serve? | ||
- [ ] How will users use the new feature? | ||
- [ ] Base your feature on the `develop` branch, and submit against that branch. | ||
- [ ] Add only one feature per pull request; split multiple features over multiple pull requests | ||
- [ ] Add tests for the new feature. | ||
- [ ] Add documentation for the new feature. | ||
- [ ] Add a `CHANGELOG.md` entry for the new feature. | ||
|
||
- Is this related to quality assurance? | ||
- Detail why the changes are necessary. | ||
- [ ] Is this related to quality assurance? | ||
<!-- Detail why the changes are necessary --> | ||
|
||
- Is this related to documentation? | ||
- Is it a typographical and/or grammatical fix? | ||
- Is it new documentation? | ||
- [ ] Is this related to documentation? | ||
<!-- Is it a typographical and/or grammatical fix? --> | ||
<!-- Is it new documentation? --> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters