tebru / retrofit-php-bundle Goto Github PK
View Code? Open in Web Editor NEWA Symfony2 bundle to ease use of the retrofit-php library.
A Symfony2 bundle to ease use of the retrofit-php library.
In the configuration example, you set use the service @rest_adapter
, but never define it.
For some reason running the cache:clear command does not populate the cache file.
It appears to be running the warmup command. Look at whether compiling is happening, or it's bailing early for another reason.
If you specify the library separately, as recommended by the docs. If you do, you'll get a version conflict.
Your requirements could not be resolved to an installable set of packages.
Problem 1
- tebru/retrofit-bundle dev-master requires tebru/retrofit-php 0.2.* -> no matching package found.
- tebru/retrofit-bundle dev-master requires tebru/retrofit-php 0.2.* -> no matching package found.
- Installation request for tebru/retrofit-bundle dev-master -> satisfiable by tebru/retrofit-bundle[dev-master].
Potential causes:
- A typo in the package name
- The package is not available in a stable-enough version according to your minimum-stability setting
see <https://groups.google.com/d/topic/composer-dev/_g3ASeIFlrc/discussion> for more details.
Read <http://getcomposer.org/doc/articles/troubleshooting.md> for further common problems.
If you set up and use a working service, then change the definition of the service. The cache breaks and can no longer be cleared with the cache:clear
command.
PHP Fatal error: Class Tebru\Retrofit\Service\NSGenerated_1acc84d6465b3c918d8baf845be4cc86\Generated_1acc84d6465b3c918d8baf845be4cc86 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (FooService::newMethod) in ./app/cache/dev/retrofit/php_retrofit_cache.php on line 29
Fatal error: Class Tebru\Retrofit\Service\NSGenerated_1acc84d6465b3c918d8baf845be4cc86\Generated_1acc84d6465b3c918d8baf845be4cc86 contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (FooService::newMethod) in ./app/cache/dev/retrofit/php_retrofit_cache.php on line 29
Guessing this is not compatible with Symfony 3.2 as all I get from the instructions is:
ClassNotFoundException in RestAdapter.php line 110:
Attempted to load class "GoogleTokenAdapter" from namespace "Tebru\Retrofit\Generated\OAuthBundle\RestAdapter".
Did you forget a "use" statement for another namespace?
I'm familiar with the square.io RetroFit for Java (and Android) and figured I'd use this for a PHP project I'm working on, but I can't get past the setup instructions.
Here's my services.yml
parameters:
# Adapters
o_auth.google_token.adapter.class: OAuthBundle\RestAdapter\GoogleTokenAdapter
# Providers
o_auth.google_token.provider.class: OAuthBundle\RestAdapter\GoogleTokenProvider
# Services
o_auth.google_credentials.class: OAuthBundle\Service\GoogleCredentialsService
services:
# Services
o_auth.google_credentials.service:
class: '%o_auth.google_credentials.class%'
arguments: ['%google.client_id%', '%google.client_secret%', '@foo_service']
foobar_rest_adapter:
class: '%tebru_retrofit.rest_adapter.class%'
factory: ['OAuthBundle\RestAdapter\GoogleTokenProvider', 'get']
foo_service:
class: '%o_auth.google_token.adapter.class%'
factory: ['@foobar_rest_adapter', 'create']
arguments: ['%o_auth.google_token.adapter.class%']
tags:
- { name: tebru_retrofit.register }
Or, at least there are the parts that matter.
GoogleTokenAdapter:
interface GoogleTokenAdapter
{
const BASE_URL = "https://accounts.google.com";
/**
* @Rest\GET("/o/oauth2/token")
* @Rest\QueryMap("params")
*
* @param array $params
*
* @return
*/
public function getToken(array $params);
}
GoogleTokenProvider:
class GoogleTokenProvider
{
/**
* Gets a RetroFit Adapter for Google oAuth Token Access
*
* @return RestAdapter
*/
public function get()
{
return RestAdapter::builder()
->setBaseUrl(GoogleTokenAdapter::BASE_URL)
->build();
}
}
GoogleCredentialsService constructor:
/**
* GoogleCredentialsService constructor.
*
* @param string $clientId
* @param string $clientSecret
* @param GoogleTokenAdapter $tokenProvider
*/
public function __construct(string $clientId, string $clientSecret, GoogleTokenAdapter $tokenProvider)
{
$this->client = new Client();
$this->clientId = $clientId;
$this->clientSecret = $clientSecret;
$this->tokenProvider = $tokenProvider;
}
The definition of the factory has a $baseUrl
parameter that doesn't seem to be provided anywhere. Either this should be dropped and just manually specified (my preference) or the service configuration should specify how to set this.
static public function get($baseUrl)
{
// setup additional dependencies like an http client here and use
// the setters to add them to the builder
// build the rest adapter
return RestAdapter::builder()
->setBaseUrl($baseUrl)
->build();
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.