Sha256: 245ccc56aaa492adb0694754d0bd422c33156a2a916faa048dae5d8b7f1a0fe8

Contents?: true

Size: 1.3 KB

Versions: 1

Compression:

Stored size: 1.3 KB

Contents

require 'faraday'

module Chronicle
  module Foursquare
    class Proxy
      API_VERSION = 20170310

      def initialize(access_token: )
        @access_token = access_token
      end

      def load_visits(since: nil, limit: nil)
        has_more = true
        visits = []
        count = 0

        while has_more
          results = load_checkins(limit: 50, offset: count, since: since)
          results = results.first(limit - count) if limit
          visits += results

          count += results.length
          has_more = results.any?
        end
        visits
      end

      def load_self
        load_endpoint('users/self')[:response][:user]
      end

      def load_checkins(limit: 50, offset: 0, since: nil)
        params = {
          limit: limit,
          offset: offset,
          afterTimestamp: since.to_i
        }

        load_endpoint('users/self/checkins', params)[:response][:checkins][:items]
      end

      def load_endpoint(endpoint, params={})
        params = params.merge({
          oauth_token: @access_token,
          v: API_VERSION
        })

        conn = Faraday.new(
          url: 'https://api.foursquare.com/v2/',
          params: params
        )

        response = conn.get(endpoint)
        JSON.parse(response.body, { symbolize_names: true })
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
chronicle-foursquare-0.1.0 lib/chronicle/foursquare/proxy.rb