mirror of
https://github.com/ovh/php-ovh.git
synced 2023-11-05 03:20:26 +01:00
Use a PHP build tool, Phing instead of Grunt.
As I already mentioned in the #35 issue, I think it's more suitable to use a PHP build tool instead of a JS one. I don't tell that Grunt is not a powerful tool but it's a complicated installation process to be able to run tests. Phing is required as a composer package and can be run directly after the composer install. Examples: ``` vendor/bin/phing vendor/bin/phing test vendor/bin/phing clean vendor/bin/phing phplint vendor/bin/phing phpcs vendor/bin/phing phpunit vendor/bin/phing phpunit -Donly.units=true #The travis test process ``` The only difference here is the watch process. Phing doesn't have that kind of feature. It can be emulated with different tasks but require a lot more work. I think that PR is the first step, maybe we can go further if necessary. Signed-off-by: Stéphane HULARD <s.hulard@chstudio.fr>
This commit is contained in:
parent
815b07ba22
commit
c13758720b
2
.gitignore
vendored
2
.gitignore
vendored
@ -3,3 +3,5 @@ vendor
|
||||
composer.lock
|
||||
composer.phar
|
||||
/phpunit.xml
|
||||
/build.properties
|
||||
/docs
|
||||
|
@ -6,7 +6,7 @@ addons:
|
||||
language: php
|
||||
php:
|
||||
- hhvm
|
||||
- 7.0
|
||||
- 7.0
|
||||
- 5.6
|
||||
- 5.5
|
||||
- 7.0
|
||||
@ -15,4 +15,4 @@ before_script:
|
||||
- composer self-update
|
||||
- composer install
|
||||
|
||||
script: phpunit tests/ApiTest.php
|
||||
script: vendor/bin/phing test -Donly.units=true
|
||||
|
77
Gruntfile.js
77
Gruntfile.js
@ -1,77 +0,0 @@
|
||||
/**
|
||||
* Gruntfile.js
|
||||
*/
|
||||
module.exports = function(grunt) {
|
||||
grunt.initConfig({
|
||||
pkg: grunt.file.readJSON('package.json'),
|
||||
php: {
|
||||
dist: {
|
||||
options: {
|
||||
port: 8080,
|
||||
base: 'web',
|
||||
open: true,
|
||||
keepalive: true
|
||||
}
|
||||
}
|
||||
},
|
||||
phpcs: {
|
||||
application: {
|
||||
dir: ['src/']
|
||||
},
|
||||
options: {
|
||||
bin: 'vendor/bin/phpcs',
|
||||
standard: 'PSR2'
|
||||
}
|
||||
},
|
||||
phplint: {
|
||||
options: {
|
||||
swapPath: '/tmp'
|
||||
},
|
||||
all: ['src/*.php']
|
||||
},
|
||||
phpdocumentor: {
|
||||
dist: {
|
||||
options: {
|
||||
directory: './src/',
|
||||
bin: 'vendor/bin/phpdoc.php',
|
||||
target: 'docs/'
|
||||
}
|
||||
}
|
||||
},
|
||||
clean: {
|
||||
phpdocumentor: 'docs/'
|
||||
},
|
||||
phpunit: {
|
||||
unit: {
|
||||
dir: 'tests'
|
||||
},
|
||||
options: {
|
||||
bin: 'vendor/bin/phpunit',
|
||||
colors: true,
|
||||
testdox: true
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
scripts: {
|
||||
files: ['src/*.php', 'src/**/*.php', 'tests/*.php', 'tests/**/*.php'],
|
||||
tasks: ['precommit'],
|
||||
},
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
grunt.loadNpmTasks('grunt-phpcs');
|
||||
grunt.loadNpmTasks('grunt-php');
|
||||
grunt.loadNpmTasks('grunt-phplint');
|
||||
grunt.loadNpmTasks('grunt-phpunit');
|
||||
grunt.loadNpmTasks('grunt-phpdocumentor');
|
||||
grunt.loadNpmTasks('grunt-contrib-watch');
|
||||
grunt.loadNpmTasks('grunt-contrib-clean');
|
||||
grunt.registerTask('phpdocs', [
|
||||
'clean:phpdocumentor',
|
||||
'phpdocumentor'
|
||||
]);
|
||||
grunt.registerTask('precommit', ['phplint:all', 'phpcs', 'phpunit:unit']);
|
||||
grunt.registerTask('default', ['phplint:all', 'phpcs', 'phpunit:unit', 'phpdocs']);
|
||||
grunt.registerTask('server', ['php']);
|
||||
};
|
16
README.md
16
README.md
@ -27,7 +27,7 @@ Quickstart
|
||||
|
||||
To download this wrapper and integrate it inside your PHP application, you can use [Composer](https://getcomposer.org).
|
||||
|
||||
Add the repository in your **composer.json** file or, if you don't already have
|
||||
Add the repository in your **composer.json** file or, if you don't already have
|
||||
this file, create it at the root of your project with this content:
|
||||
|
||||
```json
|
||||
@ -58,7 +58,7 @@ How to login as a user?
|
||||
|
||||
To communicate with APIs, the SDK uses a token on each request to identify the
|
||||
user. This token is called *Consumer Key*. To have a validated *Consumer Key*,
|
||||
you need to redirect your user on specific authentication page. Once the user has
|
||||
you need to redirect your user on specific authentication page. Once the user has
|
||||
logged in, the token is validated and user will be redirected on __$redirection__ url.
|
||||
|
||||
```php
|
||||
@ -173,11 +173,10 @@ you can install local npm project in a clone a project
|
||||
git clone https://github.com/ovh/php-ovh.git
|
||||
cd php-ovh
|
||||
php composer.phar install
|
||||
npm install
|
||||
|
||||
To generate documentation, it's possible to use directly:
|
||||
|
||||
grunt default
|
||||
vendor/bin/phing phpdocs
|
||||
|
||||
Documentation is available in docs/ directory.
|
||||
|
||||
@ -190,12 +189,15 @@ local npm project in a clone a project
|
||||
git https://github.com/ovh/php-ovh.git
|
||||
cd php-ovh
|
||||
php composer.phar install
|
||||
npm install
|
||||
|
||||
Edit **phpunit.xml** file with your credentials to pass functionals tests. Then,
|
||||
you can run directly unit and functionals tests with grunt.
|
||||
you can run directly unit and functionals tests with [phing](http://www.phing.info/).
|
||||
|
||||
grunt
|
||||
vendor/bin/phing test
|
||||
|
||||
To skip functionals and run unit tests only, you can use the `only.units` option :
|
||||
|
||||
vendor/bin/phing test -Donly.units=true
|
||||
|
||||
Supported APIs
|
||||
--------------
|
||||
|
114
build.xml
Normal file
114
build.xml
Normal file
@ -0,0 +1,114 @@
|
||||
<?xml version="1.0"?>
|
||||
<project name="ovh/ovh" default="all">
|
||||
<property name="base" value="${project.basedir}/" />
|
||||
<property environment="env" />
|
||||
|
||||
<if>
|
||||
<available file="${base}build.properties" property="" />
|
||||
<then>
|
||||
<property file="${base}build.properties" override="true" />
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<!--##########################################################################################################-->
|
||||
<target name="help">
|
||||
<echo message="${phing.project.name} on [${git.branch}]" />
|
||||
<echo message=" Available commands are:" />
|
||||
<echo message=" test -> Run unit tests" />
|
||||
<echo message=" clean -> Clean current environment" />
|
||||
<echo message=" server -> Launch PHP built-in server" />
|
||||
<echo message=" watch -> Run precommit task on every file changed" />
|
||||
<echo message=" precommit -> Source code validation before commit" />
|
||||
<echo message=" Specific tools tasks:" />
|
||||
<echo message=" phpcs -> Run PHP Code Sniffer" />
|
||||
<echo message=" phplint -> Run PHP Lint" />
|
||||
<echo message=" phpdocs -> Run PHP Documentor" />
|
||||
<echo message=" phpunit -> Run PHPUnit" />
|
||||
</target>
|
||||
<!--##########################################################################################################-->
|
||||
<target name="test" description="Run unit tests">
|
||||
<phingcall target="phpunit" />
|
||||
</target>
|
||||
<target name="clean" description="Clean current environment">
|
||||
<delete dir="docs" includeemptydirs="true" verbose="true" failonerror="true" />
|
||||
</target>
|
||||
<target name="precommit" description="Source code validation before commit">
|
||||
<phingcall target="phplint" />
|
||||
<phingcall target="phpcs" />
|
||||
<phingcall target="phpunit" />
|
||||
</target>
|
||||
<target name="all" description="Make a full integration check">
|
||||
<phingcall target="phplint" />
|
||||
<phingcall target="phpcs" />
|
||||
<phingcall target="phpunit" />
|
||||
<phingcall target="phpdocs" />
|
||||
</target>
|
||||
<!--##########################################################################################################-->
|
||||
<target name="phpcs" description="Run PHP Code Sniffer">
|
||||
<phpcodesniffer
|
||||
standard="PSR2"
|
||||
format="summary"
|
||||
>
|
||||
<fileset dir=".">
|
||||
<include name="src/**/*.php"/>
|
||||
<include name="test/**/*.php"/>
|
||||
</fileset>
|
||||
</phpcodesniffer>
|
||||
</target>
|
||||
<target name="phpcbf" description="Run PHP Code Sniffer">
|
||||
<exec command="vendor/bin/phpcbf --standard=PSR2 src" logoutput="true" />
|
||||
</target>
|
||||
<target name="phplint" description="Run PHP Lint">
|
||||
<phplint deprecatedAsError="true">
|
||||
<fileset dir=".">
|
||||
<include name="src/**/*.php"/>
|
||||
<include name="test/**/*.php"/>
|
||||
</fileset>
|
||||
</phplint>
|
||||
</target>
|
||||
<target name="phpdocs" description="Run PHP Documentor" depends="clean">
|
||||
<if>
|
||||
<not><available file="docs" /></not>
|
||||
<then>
|
||||
<mkdir dir="docs" />
|
||||
</then>
|
||||
</if>
|
||||
|
||||
<phpdoc2 destdir="docs">
|
||||
<fileset dir="src">
|
||||
<include name="**/*.php" />
|
||||
</fileset>
|
||||
</phpdoc2>
|
||||
</target>
|
||||
<target name="phpunit" description="Run PHPUnit">
|
||||
<if>
|
||||
<and>
|
||||
<isset property="only.units" />
|
||||
<equals arg1="${only.units}" arg2="true" />
|
||||
</and>
|
||||
<then>
|
||||
<fileset dir="tests" id="tests">
|
||||
<include name="ApiTest.php"/>
|
||||
</fileset>
|
||||
</then>
|
||||
<else>
|
||||
<fileset dir="tests" id="tests">
|
||||
<include name="**/*.php"/>
|
||||
</fileset>
|
||||
</else>
|
||||
</if>
|
||||
|
||||
<phpunit
|
||||
haltonfailure="true"
|
||||
haltonerror="true"
|
||||
bootstrap="tests/bootstrap.php"
|
||||
printsummary="true"
|
||||
>
|
||||
<formatter type="plain" usefile="false"/>
|
||||
<batchtest>
|
||||
<fileset refid="tests" />
|
||||
</batchtest>
|
||||
</phpunit>
|
||||
</target>
|
||||
<!--##########################################################################################################-->
|
||||
</project>
|
@ -11,6 +11,7 @@
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "4.*",
|
||||
"phpdocumentor/phpdocumentor": "2.*",
|
||||
"squizlabs/php_codesniffer": "1.*"
|
||||
"squizlabs/php_codesniffer": "2.*",
|
||||
"phing/phing": "^2.14"
|
||||
}
|
||||
}
|
||||
|
15
package.json
15
package.json
@ -1,15 +0,0 @@
|
||||
{
|
||||
"name": "ovh-ovh",
|
||||
"version": "1.1.0",
|
||||
"project": "Ovh",
|
||||
"dependencies": {
|
||||
"grunt": "~0.4.1",
|
||||
"grunt-contrib-clean": "~0.5.0",
|
||||
"grunt-phpcs": "~0.2.2",
|
||||
"grunt-php": "~0.3.2",
|
||||
"grunt-phplint": "~0.0.5",
|
||||
"grunt-phpunit": "~0.3.3",
|
||||
"grunt-phpdocumentor": "~0.4.1",
|
||||
"grunt-contrib-watch ": "~0.6.1"
|
||||
}
|
||||
}
|
13
src/Api.php
13
src/Api.php
@ -228,13 +228,12 @@ class Api
|
||||
$url = $this->endpoint . $path;
|
||||
$request = new Request($method, $url);
|
||||
if (isset($content) && $method == 'GET') {
|
||||
|
||||
$query_string = $request->getUri()->getQuery();
|
||||
|
||||
$query = array();
|
||||
if (!empty($query_string)) {
|
||||
$queries = explode('&', $query_string);
|
||||
foreach($queries as $element) {
|
||||
foreach ($queries as $element) {
|
||||
$key_value_query = explode('=', $element, 2);
|
||||
$query[$key_value_query[0]] = $key_value_query[1];
|
||||
}
|
||||
@ -243,14 +242,10 @@ class Api
|
||||
$query = array_merge($query, (array)$content);
|
||||
|
||||
// rewrite query args to properly dump true/false parameters
|
||||
foreach($query as $key => $value)
|
||||
{
|
||||
if ($value === false)
|
||||
{
|
||||
foreach ($query as $key => $value) {
|
||||
if ($value === false) {
|
||||
$query[$key] = "false";
|
||||
}
|
||||
elseif ($value === true)
|
||||
{
|
||||
} elseif ($value === true) {
|
||||
$query[$key] = "true";
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user