Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aide pour API Google Reader #704

Closed
Alkarex opened this issue Nov 10, 2014 · 32 comments
Closed

Aide pour API Google Reader #704

Alkarex opened this issue Nov 10, 2014 · 32 comments
Assignees

Comments

@Alkarex
Copy link
Member

@Alkarex Alkarex commented Nov 10, 2014

@cmtm78 writes: Hello, I am trying to build my own reader client on FreshRss (tinder like interface).
EasyRSS connects well to my FreshRSS server.
On my app, I can not pass the "token" phase of the API.

"http://www.acacis.com/p/api/greader.php/reader/api/0/token" where acacis.com is where my freshrss is located

In the log I have HTTP_AUTHORIZATION set but empty.
my ".htaccess" is

RewriteEngine on RewriteRule .\* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

Server is a shared server at One.com.

What is wrong ? As easyRSS works fine, I suppose it is not my server. I must miss something.

Thanks for your help

@Alkarex Alkarex self-assigned this Nov 10, 2014
@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Nov 10, 2014

Copy of #443 (comment)

Hello @cmtm78,
Good idea :-)

I suggest you start by generating a log with a client that works (e.g. EasyRSS, News+), with full debug information:

I can help if you provide log samples.

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Nov 10, 2014

@cmtm78 écrit :
Bonjour Alexandre,

merci pour ton retour rapide.

ci joint :

A noter que je tape les 2 commandes ci dessus directement dans mon browser pour essayer de comprendre comment ca fonctionne.

Est ce que je n’oublie pas un argument ?

merci pour ton aide

Thierry

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Nov 10, 2014

@cmtm78 : Je fais une tâche dédiée pour parler de cela.

Les pièces jointes n'ont pas été reçues. Merci de les attacher depuis l'interface Web.

Authorization est un entête HTTP supplémentaire. Ce n'est pas un paramètre de l'URL.

Pour l'essayer à la main depuis un navigateur, il faut passer par un outil de développement qui permet de modifier les entêtes HTTP. Par exemple https://addons.mozilla.org/fr/firefox/addon/httprequester/

Si vous êtes familier de la ligne commande, les entêtes peuvent être ajoutés à une commande cURL par l'option --header ou -H. Quelque chose comme :

curl -H "Authorization:GoogleLogin auth=<auth value>" http://www.acacis.com/p/api/greader.php/reader/api/0/token

En quel langage développez vous ?

@cmtm78
Copy link

@cmtm78 cmtm78 commented Nov 10, 2014

Je developpe le client avec AngulaJS et IONIC.

CI dessous le log avec EasyRSS :


Array
(
[date] => 2014-11-10T14:11:26+00:00
[headers] => Array
(
[Authorization] => GoogleLogin auth=cmtm/0af0e3ca314715d3233377be0be06210d6855c58
[User-Agent] => Dalvik/1.6.0 (Linux; U; Android 4.3; Archos 50 Helium 4G Build/JLS36C)
[Host] => www.acacis.com
[Accept-Encoding] => gzip
[X-Onecom-Forwarded-Ip] => 86.68.34.132
[X-Onecom-Forwarded-Proto] => http
[X-Forwarded-For] => 86.68.34.132
[X-Varnish] => 2388282336
[Connection] => close
)

[_SERVER] => Array
    (
        [PATH] => /usr/local/bin:/usr/bin:/bin
        [ONECOM_DOMAIN_NAME] => acacis.com
        [ONECOM_DOMAIN_ROOT] => /customers/2/6/3/acacis.com/
        [PHP_INI_SCAN_DIR] => /customers/2/6/3/acacis.com//config/conf.d.php
        [ONECOM_TMPDIR] => /customers/2/6/3/acacis.com//tmp
        [FCGI_ROLE] => RESPONDER
        [ONECOM_CLIENT_IP] => 86.68.34.132
        [DOCUMENT_ROOT] => /customers/2/6/3/acacis.com/httpd.www
        [ONECOM_DOCUMENT_ROOT] => /customers/2/6/3/acacis.com/httpd.www
        [WEBC_USER_DOCUMENT_ROOT] => /customers/2/6/3/acacis.com/httpd.www
        [DOMAIN_NAME] => acacis.com
        [WEBC_USER_DOMAIN_NAME] => acacis.com
        [HTTP_AUTHORIZATION] => GoogleLogin auth=cmtm/0af0e3ca314715d3233377be0be06210d6855c58
        [CONTENT_TYPE] => application/x-www-form-urlencoded
        [HTTP_USER_AGENT] => Dalvik/1.6.0 (Linux; U; Android 4.3; Archos 50 Helium 4G Build/JLS36C)
        [HTTP_HOST] => www.acacis.com
        [HTTP_ACCEPT_ENCODING] => gzip
        [CONTENT_LENGTH] => 79
        [HTTP_X_ONECOM_FORWARDED_IP] => 86.68.34.132
        [HTTP_X_ONECOM_FORWARDED_PROTO] => http
        [HTTP_X_FORWARDED_FOR] => 86.68.34.132
        [HTTP_X_VARNISH] => 2388282336
        [SERVER_SIGNATURE] => 
        [SERVER_SOFTWARE] => Apache
        [SERVER_NAME] => www.acacis.com
        [SERVER_ADDR] => 10.246.64.100
        [SERVER_PORT] => 80
        [REMOTE_ADDR] => 86.68.34.132
        [SERVER_ADMIN] => support@one.com
        [SCRIPT_FILENAME] => /customers/2/6/3/acacis.com/httpd.www/p/api/greader.php
        [REMOTE_PORT] => 56359
        [GATEWAY_INTERFACE] => CGI/1.1
        [SERVER_PROTOCOL] => HTTP/1.1
        [REQUEST_METHOD] => POST
        [QUERY_STRING] => 
        [REQUEST_URI] => /p/api/greader.php/accounts/ClientLogin
        [SCRIPT_NAME] => /p/api/greader.php
        [PATH_INFO] => /accounts/ClientLogin
        [PATH_TRANSLATED] => /customers/2/6/3/acacis.com/httpd.www/accounts/ClientLogin
        [HTTP_CONNECTION] => close
        [PHP_SELF] => /p/api/greader.php/accounts/ClientLogin
        [REQUEST_TIME] => 1415628686
    )

[_GET] => Array
    (
    )

[_POST] => Array
    (
        [Email] => cmtm
        [Passwd] => benjamin
        [accountType] => GOOGLE
        [service] => reader
        [source] => Sun-EasyRSS
    )

[_COOKIE] => Array
    (
    )

[INPUT] => Email=cmtm&Passwd=benjamin&accountType=GOOGLE&service=reader&source=Sun-EasyRSS

)
authorizationToUserConf()
headerVariable
User => cmtm

clientLogin(cmtm)

Le log avec la commande login en direct :


Array
(
[date] => 2014-11-10T14:15:57+00:00
[headers] => Array
(
[Authorization] =>
[Host] => www.acacis.com
[User-Agent] => Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
[Accept] => text/html,application/xhtml+xml,application/xml;q=0.9,/;q=0.8
[Accept-Language] => fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
[Accept-Encoding] => gzip, deflate
[Dnt] => 1
[Cookie] => FreshRSS=gd0tooicqhblmak8hoevc5rn56
[Cache-Control] => max-age=0
[X-Onecom-Forwarded-Ip] => 86.68.34.132
[X-Onecom-Forwarded-Proto] => http
[X-Forwarded-For] => 86.68.34.132
[X-Varnish] => 2388720031
[Connection] => close
)

[_SERVER] => Array
    (
        [PATH] => /usr/local/bin:/usr/bin:/bin
        [ONECOM_DOMAIN_NAME] => acacis.com
        [ONECOM_DOMAIN_ROOT] => /customers/2/6/3/acacis.com/
        [PHP_INI_SCAN_DIR] => /customers/2/6/3/acacis.com//config/conf.d.php
        [ONECOM_TMPDIR] => /customers/2/6/3/acacis.com//tmp
        [FCGI_ROLE] => RESPONDER
        [ONECOM_CLIENT_IP] => 86.68.34.132
        [DOCUMENT_ROOT] => /customers/2/6/3/acacis.com/httpd.www
        [ONECOM_DOCUMENT_ROOT] => /customers/2/6/3/acacis.com/httpd.www
        [WEBC_USER_DOCUMENT_ROOT] => /customers/2/6/3/acacis.com/httpd.www
        [DOMAIN_NAME] => acacis.com
        [WEBC_USER_DOMAIN_NAME] => acacis.com
        [HTTP_AUTHORIZATION] => 
        [HTTP_HOST] => www.acacis.com
        [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 6.3; WOW64; rv:33.0) Gecko/20100101 Firefox/33.0
        [HTTP_ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
        [HTTP_ACCEPT_LANGUAGE] => fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
        [HTTP_ACCEPT_ENCODING] => gzip, deflate
        [HTTP_DNT] => 1
        [HTTP_COOKIE] => FreshRSS=gd0tooicqhblmak8hoevc5rn56
        [HTTP_CACHE_CONTROL] => max-age=0
        [HTTP_X_ONECOM_FORWARDED_IP] => 86.68.34.132
        [HTTP_X_ONECOM_FORWARDED_PROTO] => http
        [HTTP_X_FORWARDED_FOR] => 86.68.34.132
        [HTTP_X_VARNISH] => 2388720031
        [SERVER_SIGNATURE] => 
        [SERVER_SOFTWARE] => Apache
        [SERVER_NAME] => www.acacis.com
        [SERVER_ADDR] => 10.246.64.100
        [SERVER_PORT] => 80
        [REMOTE_ADDR] => 86.68.34.132
        [SERVER_ADMIN] => support@one.com
        [SCRIPT_FILENAME] => /customers/2/6/3/acacis.com/httpd.www/p/api/greader.php
        [REMOTE_PORT] => 2408
        [GATEWAY_INTERFACE] => CGI/1.1
        [SERVER_PROTOCOL] => HTTP/1.1
        [REQUEST_METHOD] => GET
        [QUERY_STRING] => Email=cmtm&Passwd=benjamin
        [REQUEST_URI] => /p/api/greader.php/accounts/ClientLogin?Email=cmtm&Passwd=benjamin
        [SCRIPT_NAME] => /p/api/greader.php
        [PATH_INFO] => /accounts/ClientLogin
        [PATH_TRANSLATED] => /customers/2/6/3/acacis.com/httpd.www/accounts/ClientLogin
        [HTTP_CONNECTION] => close
        [CONTENT_LENGTH] => 0
        [PHP_SELF] => /p/api/greader.php/accounts/ClientLogin
        [REQUEST_TIME] => 1415628957
    )

[_GET] => Array
    (
        [Email] => cmtm
        [Passwd] => benjamin
    )

[_POST] => Array
    (
    )

[_COOKIE] => Array
    (
        [FreshRSS] => gd0tooicqhblmak8hoevc5rn56
    )

[INPUT] => 

)
authorizationToUserConf()
headerVariable
User =>
clientLogin(cmtm)

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Nov 11, 2014

Voilà, comme dit précédemment, il vous manque l'entête HTTP Authorization à ajouter dans votre requête. Une recherche très rapide semble montrer que dans IONIC (que je ne connais pas), l'objet $http accepte un paramètre headers.

@cmtm78
Copy link

@cmtm78 cmtm78 commented Nov 11, 2014

ok. merci.

IONIC est pratique pour générer des apps compatibles sur divers OS .

From: Alexandre Alapetite
Sent: Tuesday, November 11, 2014 11:38 AM
To: FreshRSS/FreshRSS
Cc: cmtm78
Subject: Re: [FreshRSS] Aide pour API Google Reader (#704)

Voilà, comme dit précédemment, il vous manque l'entête HTTP Authorization à ajouter dans votre requête. Une recherche très rapide semble montrer que dans IONIC (que je ne connais pas), l'objet $http accepte un paramètre headers.


Reply to this email directly or view it on GitHub.

@cmtm78
Copy link

@cmtm78 cmtm78 commented Nov 13, 2014

Bonjour Alexandre,

j'arrive maintenant à m'authentifier et à récupérer les flux.

mon soucis est maintenant de récupérer le texte d'un coté et l'image de l'autre depuis le summary fourni via la requete feed.

As tu utilisé une fonction particulière ?

merci pour ton aide

Thierry

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Nov 13, 2014

Très bien pour l'authentification.
Un requête du type /reader/api/0/stream/contents/user/-/state/com.google/reading... retourne une structure JSON, avec entre autres le contenu des articles en HTML.
À l'heure actuelle, les pièces jointes (qui varient selon les formats, ATOM, RSS1, RSS2...) sont ajoutées en HTML en fin d'article .
Vous aurez ainsi directement le texte, ainsi que des liens vers les vidéos, images, sons qui devront être récupérés par autant de requêtes vers leur serveur d'origine (pour l'instant, FreshRSS ne fait pas proxy/cache pour les médias).

@cmtm78
Copy link

@cmtm78 cmtm78 commented Nov 30, 2014

Bonjour Alexandre,

j'ai encore un petit point qui me dérange.

Je n'arrive pas à comprendre comment faire une comparaison entre la date
/ heure actuelle et la date représentée par un int dans la table entry.

Merci pour ton aide

Thierry
Le 13/11/2014 21:16, Alexandre Alapetite a écrit :

Très bien pour l'authentification.
Un requête du type
|/reader/api/0/stream/contents/user/-/state/com.google/reading...|
retourne une structure JSON, avec entre autre le contenu des articles
en HTML.
À l'heure actuelle, les pièces jointes (qui varient selon les formats,
ATOM, RSS1, RSS2...) sont ajoutées en HTML en fin d'article .
Vous aurez ainsi directement le texte, ainsi que des liens vers les
vidéos, images, sons qui devront être récupérés par autant de requêtes
vers leur serveur d'origine (pour l'instant, FreshRSS ne fait pas
proxy/cache pour les médias).


Reply to this email directly or view it on GitHub
#704 (comment).


Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Nov 30, 2014

Je ne sais pas de quel champ plus précis vous parlez, mais une bonne partie
des dates sont en microsecondes depuis Epoch
http://fr.wikipedia.org/wiki/Heure_Unix . Quelques autres sont en
millisecondes depuis Epoch.

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 13, 2014

Bonjour, je souhaiterai moi aussi developper un petit truc (un simple notifier) via l'API mais je n'arrive pas a me connecter via l'api (donc pas de SID ni de token ce qui est plutot genant)
curl "https://purexo.eu/FreshRSS/p/api/greader.php/accounts/ClientLogin?Email=Purexo&Passwd=monpass"
Unauthorized!

J'avou ne pas trop comprendre d'ou viens le pb.
Je suis sur la version 0.8.1, et l'api est bien activé

Edit :
la grosse boulette je viens de voir qu'il y avais un mdp suplementaire a configurer pour l'api

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Dec 13, 2014

@Purexo N'hésitez pas à redemander s'il y a un autre problème

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 13, 2014

C'est bon merci ^^
Apres avoir galeré plusieurs heures voici mon add-on

  • J'avais jamais fabriqué d'add-on
  • J'avais jamais vraiment fait de JS (et sans regret, le scope des variables est super bizarre... je suis plus à l'aise sur Java)
  • J'ai passé des heures à chercher à résoudre un bug qui n'en était pas un (à quoi sert ce putain de champ data dans l'objet de notification !!!)

Mon add-on est en open-source totalitaire (GPL3) gniark gniark gniark !

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Dec 13, 2014

@Purexo Ok :-) L'API que vous avez utilisée est plus puissante, mais pour simplement récupérer le nombre d'articles non-lus, il est aussi possible de faire une requête à https://purexo.eu/FreshRSS/p/i/?c=javascript&a=nbUnreadsPerFeed qui retourne un JSON

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 13, 2014

?c=javascript&a=nbUnreadsPerFeed ça s'invente pas xD et ça passe pas par un compte utilisateur du coup ?
Sinon ben mon add-on fait son taf et me permettra plus de flexibilité quand je voudrai lui ajouter des fonctionalité.
Le seul probleme est cette fichu mise à jours des variables qui ce fait en décalé j'ai l'impression, et je vois pas comment corriger ça. Je pense que ça viens des requetes (petit laps de temps de reponse) mais que le script continu sans attendre la fin de celles ci.

Edit :
Message: ReferenceError: setTimeout is not defined... fichue SDK, j'ai l'impression qu'il n'implemente pas, ou bloque certaine fonction de Javascript

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Dec 13, 2014

Je n'ai que rapidement jeté un œil au code, mais connect(); unread(); ne va pas. Il faut attendre la fin du premier et traiter la suite uniquement avec des événements.
P.S. : oui, la requête JavaScript requiert une authentification préalable.

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 13, 2014

Je m'y connais pas trop en prog evenementielle.
le seul evenement de request c'est "complete" que j'utilise via onComplete: connectComplete par exemple.

Du coup je vois pas trop quoi faire de plus :(

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Dec 14, 2014

Vous pouvez par exemple appeler unread() depuis la fin de votre connectComplete().

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 14, 2014

Faire les appel des fonctions en cascades donc.

ça à l'air de fonctionner mieux comme ça évidement ^^.
Plus qu'a faire des test.

Merci bien pour ces suggestions.

EDIT :
Du coup voici ma V0.2.1 ^^

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 14, 2014

Sinon j'ai une vrai question,
Y a-t-il dans l'api une fonction capable d'actualiser les flux ?

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Dec 14, 2014

Non, il n'y a pas d'actualisation dans l'API (ça pourrait être ajouté comme extension spécifique à FreshRSS). L'actualisation est plutôt sensée être faite par une tâche cron en arrière plan. Sinon, il y a aussi des requêtes possibles (du même style que mon lien plus haut) pour rafraîchir les flux individuellement mais qui nécessitent une authentification préalable.

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 14, 2014

Pour expliquer ma demarche :
Je pensais faire un addon capable de notifier les articles non lu selon l'algo suivant (en gros) :

  1. actualisation des flux
  2. recuperation du nombre d'article non lu
  3. (optionel) ouvrir la page des flux
    Avec bien sur l'addon qui le fait à intervalle regulier.

actualisation flux par flux, semble un peu ennuyante, mais si il faut passer par la.

il y a de la doc pour l'api "native", et l'authentification passe par des cookies, le header ?

@cmtm78
Copy link

@cmtm78 cmtm78 commented Jan 3, 2015

Bonjour Alexandre

Je cherche maintenant à modifier la version que je me suis installée de FreshRSS pour ne garder en base que des entries qui contiennent une img.

Je voudrai intervenir à la source mais je ne vois pas dans quelle partie du code se fait l'actualisation de la base entry (je prévois simplement de ne pas enregistrer les entrées dans lesquelles je ne trouve pas de photo au parsing du champs content).

Peux tu m'indiquer ou je dois intervenir ?

Merci pour ton aide

T

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Jan 3, 2015

Les nouveaux articles sont préparés avant ajout en base de données via la fonction loadEntries() https://github.com/FreshRSS/FreshRSS/blob/beta/app/Models/Feed.php#L264
Vous pouvez voir quelques ligne plus bas la gestion des enclosure ou pièces jointes des flux (images, vidéos, sons), bien que dans certains cas ces liens soient directement dans le corps HTML de l'article. Pour sauter un article, il ne faut pas l'ajouter à $entries[] https://github.com/FreshRSS/FreshRSS/blob/beta/app/Models/Feed.php#L315

Une autre option est d'ajouter tous les articles en base de données, mais de les filtrer en sortie.

Dans les deux cas, je vous suggère de regarder les discussions actuelles sur le mécanisme d'extension (plug-ins) en cours de développement, qui me semblerait bien adapté à votre besoin.

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Aug 29, 2015

Je ferme ce ticket qui ne semble plus actif (j'espère que vous avez eu les informations nécessaires), mais n'hésitez pas à le rouvrir au besoin ou d'en créer un nouveau.

@Alkarex Alkarex closed this Aug 29, 2015
@Purexo
Copy link
Contributor

@Purexo Purexo commented Nov 16, 2015

Bonjour je reviens vers vous (après un long moment)
j'ai beau chercher, je ne trouve pas de doc lisible des apis de FreshRSS

Pour les versions future de mon Addon, j'aurais besoins de récuperer le nombre d'article non lu, ça c'est OK :

GET /p/api/greader.php/reader/api/0/unread-count?output=json (avec le header d'authetification)
Authorization:GoogleLogin auth=TOKEN

Et surtout, une liste des (5) derniers flux non lu avec
le titre, le lien du flux, et son contenu (si possible un petit résumé plutot que le contenu complet)

Aussi, est il possible pour l'authentification d'utiliser le cookie de FreshRSS, plutot que d'utiliser une requete en GET, avec le login et le mot de passe en clair à l'interieur pour récuperer un token d'authetification.

Sinon j'ai vraiment mal cherché, ou la doc du greader est imbitable ?

J'ai trouvé une doc lisible mais je bute sur item-contents, ça fait toujours des badrequest.

Pour mes test j'utilise l'addon firefox "http requester" qui est pratique pour former des requetes

Donc :

  • Unread : /p/api/greader.php/reader/api/0/unread-count?output=json OK
  • ListID : /p/api/greader.php/reader/api/0/stream/items/ids?output=json OK
    • s=user/-/state/com.google/reading-list
    • n=5
  • ItemContent : /p/api/greader.php/reader/api/0/stream/items/contents?output=json BAD
    • i=tag:google.com,2005:reader/item/00157a17b192950b65be3791
    • i=reader/item/00157a17b192950b65be3791
    • i=00157a17b192950b65be3791

ItemContent, ça marche pour aucun des cas. :(

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Nov 17, 2015

@Purexo Voir les commentaires en tête de https://github.com/FreshRSS/FreshRSS/blob/beta/p/api/greader.php pour une liste des documentations que j'ai pu trouver. Regardez aussi les commentaires dans le reste du fichier.

Pour vos 5 articles les plus récents non-lus, essayez quelque-chose comme :

GET /p/api/greader.php/reader/api/0/stream/contents/user%2F-%2Fstate%2Fcom.google%2Freading-list?xt=user/-/state/com.google/read&n=5&r=n

Pour l'instant, il y a un mot de passe API différent du mot de passe principal à cause du fait que ce mot de passe risque d'être stocké par les applications, et qu'il est transmis en dépendant entièrement de HTTPS (aucune protection dans le cas de HTTP).

P.S. : D'une manière générale, c'est une bonne idée de regarder dans les logs de votre serveur Web les requêtes faites par un client de référence, comme News+ ou EasyRSS.

@Purexo
Copy link
Contributor

@Purexo Purexo commented Nov 19, 2015

Merci, j'avais vraiment galéré longtemps avant d'abandonner et espérer une réponse.
Après avoir testé, votre requete est pas tout à fait bonne en voici la correction :

POST /p/api/greader.php/reader/api/0/stream/contents/reading-list
output=json
xt=user/-/state/com.google/read
n=5
r=n

Je met en POST pour plus de lisibilité (et ça fonctionne) mais GET fonctionne aussi.
C'est pas tout a fait les critère qu'il me faut, mais je me débrouillerai avec du code.
Mais dans l'idée, j'ai besoin d'afficher 5 items. en priorité les non lu. Ensuite les déja lu pour completer si besoin les slots manquant.

Concernant la partie de l'authetification, justement, peut-on utiliser le cookie de FreshRSS (quand on ce co normalement à son site pour lire les flux) dans un addon, et si oui, comment ça ce passe au niveau des requetes. Cela afin d'éviter un password en clair qui ce balade partout.

@Purexo
Copy link
Contributor

@Purexo Purexo commented Nov 22, 2015

J'arrive pas à sélectionner juste les flux lu, et suite à la lecture du code de greader.php ça ne m’étonne pas, mais c'est vraiment dommage :(

greader.php - ligne 360 - function streamContents

    switch ($exclude_target) {
        case 'user/-/state/com.google/read':
            $state = FreshRSS_Entry::STATE_NOT_READ;
            break;
        default:
            $state = FreshRSS_Entry::STATE_ALL;
            break;
    }

il serait intéressant d'ajouter :

case 'user/-/state/com.google/unread':
    $state = FreshRSS_Entry::STATE_READ;
    break;

Et pourquoi pas d'autres états encore

je viens de faire une PR, suite à un test rapide sur mon serveur, je peux maintenant faire :

GET /p/api/greader.php/reader/api/0/stream/contents/user/-/state/com.google/reading-list?xt=user%2F-%2Fstate%2Fcom.google%2Funread&n=5

et je récupère ainsi les 5 derniers flux lu

@Purexo
Copy link
Contributor

@Purexo Purexo commented Nov 23, 2015

Maintenant que mon Addon Firefox est fonctionnel, je me disais que ça pourrai intéresser des gens.

Ou dois-je signaler ça ?
pour l'info il est disponible ici : https://github.com/purexo/FreshRSS-Notify
et en attente de review ici : https://addons.mozilla.org/fr/firefox/addon/freshrss-notify/
tant qu'il n'est pas vérifié, il n'apparaitra pas. Même avec le lien :-(

@Alkarex
Copy link
Member Author

@Alkarex Alkarex commented Dec 1, 2015

@Purexo Votre extension semble avoir été acceptée, non ?

@Purexo
Copy link
Contributor

@Purexo Purexo commented Dec 3, 2015

Oui. Et les trucs qui me restent à faire attendront plus tard (passer au système 'universel' chrome, revoir le système d'authentification : cad utiliser le système de cookie pour ce logger à l'api si possible, pour ne pas avoir à demander de password)

Les prochaines versions ce sera essentiellement du bugfixes (si j'en trouve).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.