<commit_before><?php

namespace OAuth\OAuth1\Service;

use OAuth\OAuth1\Signature\SignatureInterface;
use OAuth\OAuth1\Token\StdOAuth1Token;
use OAuth\Common\Http\Exception\TokenResponseException;
use OAuth\Common\Http\Uri\Uri;
use OAuth\Common\Consumer\CredentialsInterface;
use OAuth\Common\Http\Uri\UriInterface;
use OAuth\Common\Storage\TokenStorageInterface;
use OAuth\Common\Http\Client\ClientInterface;

class Flickr extends AbstractService{
	
	public function __construct(CredentialsInterface $credentials, ClientInterface $httpClient, TokenStorageInterface $storage, SignatureInterface $signature, UriInterface $baseApiUri = null){
		parent::__construct($credentials, $httpClient, $storage, $signature, $baseApiUri);
		if($baseApiUri === null){
			$this->baseApiUri = new Uri('https://api.flickr.com/services/rest/');
		}
	}
	
	public function getRequestTokenEndpoint(){
		return new Uri('https://www.flickr.com/services/oauth/request_token');
	}
	
	public function getAuthorizationEndpoint(){
		return new Uri('https://www.flickr.com/services/oauth/authorize');
	}
	
	public function getAccessTokenEndpoint(){
		return new Uri('https://www.flickr.com/services/oauth/access_token');
	}
	
	protected function parseRequestTokenResponse($responseBody){
		parse_str($responseBody, $data);
		if(null === $data || !is_array($data)){
			throw new TokenResponseException('Unable to parse response.');
		}
		elseif(!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] != 'true'){
			throw new TokenResponseException('Error in retrieving token.');
		}
		return $this->parseAccessTokenResponse($responseBody);
	}
	
	protected function parseAccessTokenResponse($responseBody){
		parse_str($responseBody, $data);
		if($data === null || !is_array($data)){
			throw new TokenResponseException('Unable to parse response.');
		}
		elseif(isset($data['error'])){
			throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"');
		}
		
		$token = new StdOAuth1Token();
		$token->setRequestToken($data['oauth_token']);
		$token->setRequestTokenSecret($data['oauth_token_secret']);
		$token->setAccessToken($data['oauth_token']);
		$token->setAccessTokenSecret($data['oauth_token_secret']);
		$token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES);
		unset($data['oauth_token'], $data['oauth_token_secret']);
		$token->setExtraParams($data);
		
		return $token;
	}
	
	public function request($path, $method = 'GET', $body = null, array $extraHeaders = array()){
		$uri = $this->determineRequestUriFromPath('/', $this->baseApiUri);
		$uri->addToQuery('method', $path);
		
		$token = $this->storage->retrieveAccessToken($this->service());
		$extraHeaders = array_merge($this->getExtraApiHeaders(), $extraHeaders);
		$authorizationHeader = array(
			'Authorization' => $this->buildAuthorizationHeaderForAPIRequest($method, $uri, $token, $body)
		);
		$headers = array_merge($authorizationHeader, $extraHeaders);
		
		return $this->httpClient->retrieveResponse($uri, $body, $headers, $method);
	}
}<commit_msg>PSR2 standard.<commit_after><?php

namespace OAuth\OAuth1\Service;

use OAuth\OAuth1\Signature\SignatureInterface;
use OAuth\OAuth1\Token\StdOAuth1Token;
use OAuth\Common\Http\Exception\TokenResponseException;
use OAuth\Common\Http\Uri\Uri;
use OAuth\Common\Consumer\CredentialsInterface;
use OAuth\Common\Http\Uri\UriInterface;
use OAuth\Common\Storage\TokenStorageInterface;
use OAuth\Common\Http\Client\ClientInterface;

class Flickr extends AbstractService
{
    
    public function __construct(
        CredentialsInterface $credentials,
        ClientInterface $httpClient,
        TokenStorageInterface $storage,
        SignatureInterface $signature,
        UriInterface $baseApiUri = null
    ) {
        parent::__construct($credentials, $httpClient, $storage, $signature, $baseApiUri);
        if ($baseApiUri === null) {
            $this->baseApiUri = new Uri('https://api.flickr.com/services/rest/');
        }
    }
    
    public function getRequestTokenEndpoint()
    {
        return new Uri('https://www.flickr.com/services/oauth/request_token');
    }
    
    public function getAuthorizationEndpoint()
    {
        return new Uri('https://www.flickr.com/services/oauth/authorize');
    }
    
    public function getAccessTokenEndpoint()
    {
        return new Uri('https://www.flickr.com/services/oauth/access_token');
    }
    
    protected function parseRequestTokenResponse($responseBody)
    {
        parse_str($responseBody, $data);
        if (null === $data || !is_array($data)) {
            throw new TokenResponseException('Unable to parse response.');
        } elseif (!isset($data['oauth_callback_confirmed']) || $data['oauth_callback_confirmed'] != 'true') {
            throw new TokenResponseException('Error in retrieving token.');
        }
        return $this->parseAccessTokenResponse($responseBody);
    }
    
    protected function parseAccessTokenResponse($responseBody)
    {
        parse_str($responseBody, $data);
        if ($data === null || !is_array($data)) {
            throw new TokenResponseException('Unable to parse response.');
        } elseif (isset($data['error'])) {
            throw new TokenResponseException('Error in retrieving token: "' . $data['error'] . '"');
        }
        
        $token = new StdOAuth1Token();
        $token->setRequestToken($data['oauth_token']);
        $token->setRequestTokenSecret($data['oauth_token_secret']);
        $token->setAccessToken($data['oauth_token']);
        $token->setAccessTokenSecret($data['oauth_token_secret']);
        $token->setEndOfLife(StdOAuth1Token::EOL_NEVER_EXPIRES);
        unset($data['oauth_token'], $data['oauth_token_secret']);
        $token->setExtraParams($data);
        
        return $token;
    }
    
    public function request($path, $method = 'GET', $body = null, array $extraHeaders = array())
    {
        $uri = $this->determineRequestUriFromPath('/', $this->baseApiUri);
        $uri->addToQuery('method', $path);
        
        $token = $this->storage->retrieveAccessToken($this->service());
        $extraHeaders = array_merge($this->getExtraApiHeaders(), $extraHeaders);
        $authorizationHeader = array(
            'Authorization' => $this->buildAuthorizationHeaderForAPIRequest($method, $uri, $token, $body)
        );
        $headers = array_merge($authorizationHeader, $extraHeaders);
        
        return $this->httpClient->retrieveResponse($uri, $body, $headers, $method);
    }
}
{'fraction_non_alphanumeric': 0.14445809026711698, 'fraction_numerical': 0.0019957015658581515, 'mean_word_length': 4.28814935064935, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 41, 'https://': 8, 'lorem ipsum': 0, 'www.': 6, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1991391', 'n_tokens_mistral': 1973, 'n_tokens_neox': 1890, 'n_words': 325}