diff options
author | Elmer Thomas <elmer@thinkingserious.com> | 2016-05-18 14:01:41 -0700 |
---|---|---|
committer | Elmer Thomas <elmer@thinkingserious.com> | 2016-05-18 14:01:41 -0700 |
commit | f9eb9b27bb42fee6ade548fc4c3a66b230a54543 (patch) | |
tree | f62fe4f36d9677aee5c3b620bd064424802b9b9a | |
parent | 36bb25d1d6026ac4ab8574f0b8a7bbd1f91c5faa (diff) | |
download | php-http-client-f9eb9b27bb42fee6ade548fc4c3a66b230a54543.zip php-http-client-f9eb9b27bb42fee6ade548fc4c3a66b230a54543.tar.gz php-http-client-f9eb9b27bb42fee6ade548fc4c3a66b230a54543.tar.bz2 |
Updated to conform to SendGrid's new Open Source policies
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | CONTRIBUTING.md | 108 | ||||
-rw-r--r-- | LICENSE.txt | 2 | ||||
-rw-r--r-- | README.md | 142 |
4 files changed, 102 insertions, 151 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index ad6bb25..95f2a35 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Change Log All notable changes to this project will be documented in this file. + This project adheres to [Semantic Versioning](http://semver.org/). ## [2.0.2] - 2016-02-29 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b5fd677..87c84ac 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,14 +1,28 @@ -Hello! Thank you for choosing to help contribute to the php-http-client. There are many ways you can contribute and help is always welcome. - +Hello! Thank you for choosing to help contribute to one of the SendGrid open source projects. There are many ways you can contribute and help is always welcome. We simply ask that you follow the following contribution policies. + +- [CLAs and CCLAs](#cla) +- [Roadmap & Milestones](#roadmap) +- [Feature Request](#feature_request) +- [Submit a Bug Report](#submit_a_bug_report) +- [Improvements to the Codebase](#improvements_to_the_codebase) +- [Understanding the Code Base](#understanding_the_codebase) +- [Testing](#testing) +- [Style Guidelines & Naming Conventions](#style_guidelines_and_naming_conventions) +- [Creating a Pull Request](#creating_a_pull_request) + +<a name="roadmap"></a> We use [Milestones](https://github.com/sendgrid/php-http-client/milestones) to help define current roadmaps, please feel free to grab an issue from the current milestone. Please indicate that you have begun work on it to avoid collisions. Once a PR is made, community review, comments, suggestions and additional PRs are welcomed and encouraged. -* [Feature Request](#feature_request) -* [Submit a Bug Report](#submit_a_bug_report) -* [Improvements to the Codebase](#improvements_to_the_codebase) -* [Understanding the Code Base](#understanding_the_codebase) -* [Testing](#testing) -* [Style Guidelines & Naming Conventions](#style_guidelines_and_naming_conventions) -* [Creating a Pull Request](#creating_a_pull_request) +<a name="cla"></a> +## CLAs and CCLAs + +Before you get started, SendGrid requires that a SendGrid Contributor License Agreement (CLA) or a SendGrid Company Contributor Licensing Agreement (CCLA) be filled out by every contributor to a SendGrid open source project. + +Our goal with the CLA and CCLA is to clarify the rights of our contributors and reduce other risks arising from inappropriate contributions. The CLA also clarifies the rights SendGrid holds in each contribution and helps to avoid misunderstandings over what rights each contributor is required to grant to SendGrid when making a contribution. In this way the CLA and CCLA encourage broad participation by our open source community and help us build strong open source projects, free from any individual contributor withholding or revoking rights to any contribution. + +SendGrid does not merge a pull request made against a SendGrid open source project until that pull request is associated with a signed CLA (or CCLA). Copies of the CLA and CCLA are available [here](https://drive.google.com/a/sendgrid.com/file/d/0B0PlcM9qA91LN2VEUTJWU2RIVXc/view). + +You may submit your completed [CLA or CCLA](https://drive.google.com/a/sendgrid.com/file/d/0B0PlcM9qA91LN2VEUTJWU2RIVXc/view) to SendGrid at [dx@sendgrid.com](mailto:dx@sendgrid.com). SendGrid will then confirm you are ready to begin making contributions. There are a few ways to contribute, which we'll enumerate below: @@ -37,29 +51,7 @@ Before you decide to create a new issue, please try the following: ### Please use our Bug Report Template -In order to make the process easier, we've included a sample bug report template (borrowed from [Ghost](https://github.com/TryGhost/Ghost/)). The template uses [GitHub flavored markdown](https://help.github.com/articles/github-flavored-markdown/) for formatting. - -``` -Short and descriptive example bug report title - -#### Issue Summary - -A summary of the issue and the environment in which it occurs. If suitable, include the steps required to reproduce the bug. Please feel free to include screenshots, screencasts, code examples. - - -#### Steps to Reproduce - -1. This is the first step -2. This is the second step -3. Further steps, etc. - -Any other information you want to share that is relevant to the issue being reported. Especially, why do you consider this to be a bug? What do you expect to happen instead? - -#### Technical details: - -* php-http-client Version: master (latest commit: 2cb34372ef0f31352f7c90015a45e1200cb849da) -* PHP Version: 5.6 -``` +In order to make the process easier, we've included a [sample bug report template](https://github.com/sendgrid/php-http-client/.github/ISSUE_TEMPLATE) (borrowed from [Ghost](https://github.com/TryGhost/Ghost/)). The template uses [GitHub flavored markdown](https://help.github.com/articles/github-flavored-markdown/) for formatting. <a name="improvements_to_the_codebase"></a> ## Improvements to the Codebase @@ -68,27 +60,35 @@ We welcome direct contributions to the php-http-client code base. Thank you! ### Development Environment ### -#### Install and run locally #### +#### Install and Run Locally #### ##### Prerequisites ##### -* PHP 5.2 through 5.6 -* [Composer](https://getcomposer.org/) +- PHP 5.2 through 5.6 +- [Composer](https://getcomposer.org/) ##### Initial setup: ##### -``` +```bash git clone https://github.com/sendgrid/php-http-client.git cd php-http-client -cp .env_sample .env ``` -Update your settings in `.env` +## Environment Variables -##### Execute: ##### +First, get your free SendGrid account [here](https://sendgrid.com/free?source=php-http-client). + +Next, update your environment with your [SENDGRID_API_KEY](https://app.sendgrid.com/settings/api_keys). -See the [examples folder](https://github.com/sendgrid/php-http-client/tree/master/examples) to get started quickly. +```bash +echo "export SENDGRID_API_KEY='YOUR_API_KEY'" > sendgrid.env +echo "sendgrid.env" >> .gitignore +source ./sendgrid.env +``` +##### Execute: ##### + +See the [examples folder](https://github.com/sendgrid/php-http-client/tree/master/examples <a name="understanding_the_codebase"></a> ## Understanding the Code Base @@ -96,7 +96,11 @@ See the [examples folder](https://github.com/sendgrid/php-http-client/tree/maste Working examples that demonstrate usage. -**client.php** +**/test/unit** + +Unit tests. + +**/lib/SendGrid/Client.php** An HTTP client with a fluent interface using method chaining and reflection. By returning self on [__call](https://github.com/sendgrid/php-http-client/blob/master/lib/client.php#L212) and [_()](https://github.com/sendgrid/php-http-client/blob/master/lib/client.pph#L198), we can dynamically build the URL using method chaining and [__call](https://github.com/sendgrid/php-http-client/blob/master/lib/client.php#L212) allows us to dynamically receive the method calls to achieve reflection. @@ -104,7 +108,7 @@ This allows for the following mapping from a URL to a method chain: `/api_client/{api_key_id}/version` maps to `client->api_client().->_($api_key_id)->version-><method>()` where <method> is a [HTTP verb](https://github.com/sendgrid/php-http-client/blob/master/lib/client.php#L94). -**config.php** +**/lib/SendGrid/Config.php** Loads the environment variables. @@ -113,26 +117,24 @@ Loads the environment variables. All PRs require passing tests before the PR will be reviewed. -All test files are in the `[test/unit](https://github.com/sendgrid/php-http-client/tree/master/test/unit)` directory. +All test files are in the [`/test/unit`](https://github.com/sendgrid/php-http-client/tree/master/test/unit) directory. For the purposes of contributing to this repo, please update the [`ClientTest.php`](https://github.com/sendgrid/php-http-client/blob/master/test/unit/ClientTest.php) file with unit tests as you modify the code. -`phpunit --bootstrap test/unit/bootstrap.php --filter test* test/unit` +```bash +phpunit --bootstrap test/unit/bootstrap.php --filter test* test/unit +``` <a name="style_guidelines_and_naming_conventions"></a> ## Style Guidelines & Naming Conventions Generally, we follow the style guidelines as suggested by the official language. However, we ask that you conform to the styles that already exist in the library. If you wish to deviate, please explain your reasoning. -* [pear coding standards](https://pear.php.net/manual/en/standards.php) - -Please run your code through [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer) +- [pear coding standards](https://pear.php.net/manual/en/standards.php) -### Directory Structure +Please run your code through: -* `examples`, for example calls -* `test\unit`, for all tests -* 'lib`, for source code +- [PHP Code Sniffer](https://github.com/squizlabs/PHP_CodeSniffer) ## Creating a Pull Request<a name="creating_a_pull_request"></a> @@ -143,7 +145,7 @@ Please run your code through [PHP Code Sniffer](https://github.com/squizlabs/PHP # Clone your fork of the repo into the current directory git clone https://github.com/sendgrid/php-http-client # Navigate to the newly cloned directory - cd php-http-client + cd sendgrid-python # Assign the original repo to a remote called "upstream" git remote add upstream https://github.com/sendgrid/php-http-client ``` @@ -187,4 +189,4 @@ Please run your code through [PHP Code Sniffer](https://github.com/squizlabs/PHP 7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) with a clear title and description against the `master` branch. All tests must be passing before we will review the PR. -If you have any additional questions, please feel free to [email](mailto:dx@sendgrid.com) us or create an issue in this repo. +If you have any additional questions, please feel free to [email](mailto:dx@sendgrid.com) us or create an issue in this repo.
\ No newline at end of file diff --git a/LICENSE.txt b/LICENSE.txt index aaa5589..c1631d6 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 SendGrid +Copyright (c) 2016 SendGrid, Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -2,6 +2,36 @@ **Quickly and easily access any REST or REST-like API.** +# Announcements + +All updates to this library is documented in our [CHANGELOG](https://github.com/sendgrid/php-http-client/blob/master/CHANGELOG.md). + +# Installation + +Add php-http-client to your `composer.json` file. If you are not using [Composer](http://getcomposer.org), you should be. It's an excellent way to manage dependencies in your PHP application. + +```json +{ + "require": { + "sendgrid/php-http-client": "2.*" + } +} +``` + +Then at the top of your PHP script require the autoloader: + +```php +require __DIR__ . '/vendor/autoload.php'; +``` + +Then from the command line: + +```bash +composer install +``` + +# Quick Start + Here is a quick example: `GET /your/api/{param}/call` @@ -33,106 +63,24 @@ print $response->responseHeaders(); print $response->responseBody(); ``` -# Installation - -Add php-http-client to your `composer.json` file. If you are not using [Composer](http://getcomposer.org), you should be. It's an excellent way to manage dependencies in your PHP application. - -```json -{ - "require": { - "sendgrid/php-http-client": "2.*" - } -} -``` - -Then at the top of your PHP script require the autoloader: - -```php -require __DIR__ . '/vendor/autoload.php'; -``` - -Then from the command line: - -```bash -composer install -``` - -## Usage ## - -Following is an example using SendGrid. You can get your free account [here](https://sendgrid.com/free?source=php-http-client). +# Usage -First, update your .env with your [SENDGRID_API_KEY](https://app.sendgrid.com/settings/api_keys) and HOST. For this example HOST=https://api.sendgrid.com. +- [Example Code](https://github.com/sendgrid/php-http-client/tree/master/examples) -Following is an abridged example, here is the [full working code](https://github.com/sendgrid/php-http-client/tree/master/examples). +## Roadmap -```php -<?php -require __DIR__ . '/vendor/autoload.php'; -$config = new SendGrid\Config(getcwd(), '.env'); -$api_key = getenv('SENDGRID_API_KEY'); -$headers = array( - 'Content-Type: application/json', - 'Authorization: Bearer '.$api_key -); -$client = new SendGrid\Client('https://api.sendgrid.com', $headers, '/v3', null); - -// GET Collection -$query_params = array('limit' => 100, 'offset' => 0); -$request_headers = array('X-Mock: 200'); -$response = $client->api_keys()->get(null, $query_params, $request_headers); - -// POST -$request_body = array( - 'name' => 'My PHP API Key', - 'scopes' => array( - 'mail.send', - 'alerts.create', - 'alerts.read' - ) -); -$response = $client->api_keys()->post($request_body); -$response_body = json_decode($response->responseBody()); -$api_key_id = $response_body->api_key_id; - -// GET Single -$response = $client->version('/v3')->api_keys()->_($api_key_id)->get(); - -// PATCH -$request_body = array( - 'name' => 'A New Hope' -); -$response = $client->api_keys()->_($api_key_id)->patch($request_body); - -// PUT -$request_body = array( - 'name' => 'A New Hope', - 'scopes' => array( - 'user.profile.read', - 'user.profile.update' - ) -); -$response = $client->api_keys()->_($api_key_id)->put($request_body); - -// DELETE -$response = $client->api_keys()->_($api_key_id)->delete(); -?> -``` +If you are intersted in the future direction of this project, please take a look at our [milestones](https://github.com/sendgrid/php-http-client/milestones). We would love to hear your feedback. -# Announcements +## How to Contribute -[2016.03.28] - We hit version 1! +We encourage contribution to our libraries, please see our [CONTRIBUTING](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md)) guide for details. -# Roadmap +Quick links: -[Milestones](https://github.com/sendgrid/php-http-client/milestones) - -# How to Contribute - -We encourage contribution to our libraries, please see our [CONTRIBUTING](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md) guide for details. - -* [Feature Request](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md#feature_request) -* [Bug Reports](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md#submit_a_bug_report) -* [Improvements to the Codebase](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md#improvements_to_the_codebase) +- [Feature Request](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md)#feature_request) +- [Bug Reports](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md)#submit_a_bug_report) +- [Sign the CLA to Create a Pull Request](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md)#cla) +- [Improvements to the Codebase](https://github.com/sendgrid/php-http-client/blob/master/CONTRIBUTING.md)#improvements_to_the_codebase) # Thanks @@ -140,9 +88,9 @@ We were inspired by the work done on [birdy](https://github.com/inueni/birdy) an # About -![SendGrid Logo] -(https://assets3.sendgrid.com/mkt/assets/logos_brands/small/sglogo_2015_blue-9c87423c2ff2ff393ebce1ab3bd018a4.png) - php-http-client is guided and supported by the SendGrid [Developer Experience Team](mailto:dx@sendgrid.com). -php-http-client is maintained and funded by SendGrid, Inc. The names and logos for python-http-client are trademarks of SendGrid, Inc. +php-http-client is maintained and funded by SendGrid, Inc. The names and logos for php-http-client are trademarks of SendGrid, Inc. + +![SendGrid Logo] +(https://assets3.sendgrid.com/mkt/assets/logos_brands/small/sglogo_2015_blue-9c87423c2ff2ff393ebce1ab3bd018a4.png)
\ No newline at end of file |