Coder Social home page Coder Social logo

retrofit-php-bundle's Issues

Running cache:clear creates empty cache file

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.

Can't specify library separately.

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.

Cache clearing breaks when services change.

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.

Steps to reproduce

  1. Create a valid service
  2. Warm cache
  3. Add an additional, valid, method to the service
  4. Attempt to clear cache, observe the following error:
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

Instructions do not lead to a working client

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;
    }

Provider Service Factory has unecessary parameter.

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();
    }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.