From 36689d1e3688b43449ecd9779e3ae1e1b4de4982 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=C3=B1or=20Rolando?= Date: Thu, 12 Dec 2013 21:58:37 +0100 Subject: [PATCH] Determine list of open mentions to repost. --- app/controllers/reposts_controller.rb | 13 ++++++++----- app/models/post_data.rb | 18 ++++++++++++++++++ app/models/repost.rb | 2 +- 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/app/controllers/reposts_controller.rb b/app/controllers/reposts_controller.rb index 36ab6b9..eb61403 100644 --- a/app/controllers/reposts_controller.rb +++ b/app/controllers/reposts_controller.rb @@ -40,18 +40,21 @@ class RepostsController < ApplicationController puts "===< retrieve latest post >===" res = Repost.get_most_recent_user_post(access_token) api_res = ApiResponse.new(:raw_json => res.body) - dump_api_response(api_res) latest_post = PostData.most_recent_post(api_res.data) puts "=== latest postid: " + latest_post.post_id.to_s + ", created at: " + latest_post.created_at.to_s - # TODO: select max(postid) - # retrieve new mentions. # TODO restrict to: fetch( since_id=previous max_id ) puts "===< retrieve new mentions >===" res = Repost.get_mentions_stream(access_token) - api_response = ApiResponse.new(:raw_json => res.body) - # dump_api_response(api_response) + api_res = ApiResponse.new(:raw_json => res.body) + todo_posts_array = PostData.extract_not_yet_reposted(api_res.data, latest_post.post_id) + + # tmp + puts "===> " + todo_posts_array.length.to_s + " noch offene posts." + todo_posts_array.each do |post_id| + puts "--- reposten: " + post_id.to_s + end # TODO: res.body contains the mentions in JSON. Proceed from there. #new_mentions.each do | post | diff --git a/app/models/post_data.rb b/app/models/post_data.rb index 79f390c..fce6671 100644 --- a/app/models/post_data.rb +++ b/app/models/post_data.rb @@ -34,4 +34,22 @@ class PostData end post end + + # in: array of posts with all (recent) mentions + # in: ID of latest repost that has been done already + # out: Array of post ids that haven't been reposted, yet + def self.extract_not_yet_reposted(mentions_array, latest_post_id) + ret = Array.new + mentions_array.each do |line| + line.each do |elem| + # We only care about the post's ID. Everything else: throw away. + if elem[0] == "id" then + cur_id = elem[1].to_i + puts "... cur_id = " + elem[1] + ret << cur_id if cur_id > latest_post_id + end + end + end + ret + end end diff --git a/app/models/repost.rb b/app/models/repost.rb index d71f86d..237bea2 100644 --- a/app/models/repost.rb +++ b/app/models/repost.rb @@ -20,7 +20,7 @@ class Repost < ActiveRecord::Base # http://developers.app.net/docs/resources/post/streams/#retrieve-posts-mentioning-a-user def self.get_mentions_stream(access_token) - uri = "https://alpha-api.app.net/stream/0/users/me/mentions" + uri = "https://alpha-api.app.net/stream/0/users/me/mentions?since_id=16899626" self.make_api_get_call(uri, access_token) end