# SocialAvatarProxy This gem acts as a proxy for avatars on Twitter & Facebook. [![Build Status][2]][1] [![Code Climate][3]][4] [1]: http://travis-ci.org/platformq/social-avatar-proxy [2]: https://secure.travis-ci.org/platformq/social-avatar-proxy.png?branch=master [3]: https://codeclimate.com/badge.png [4]: https://codeclimate.com/github/platformq/social-avatar-proxy ## Installation Add this line to your application's Gemfile: ```ruby gem "social-avatar-proxy" ``` And then execute: $ bundle Or install it yourself as: $ gem install social-avatar-proxy ## Usage ### Rails In your `config/routes.rb` file: ```ruby mount SocialAvatarProxy::Engine, at: "/avatars" ``` The engine is basically a proxy for the Rack app, it also adds the path helpers below: In your views: ```ruby # for a Twitter user, by username: image_tag(twitter_avatar_path("username")) # by ID: image_tag(twitter_avatar_path(12345)) # for a Facebook user, by username: image_tag(facebook_avatar_path("username")) # by ID: image_tag(facebook_avatar_path(12345)) ``` You might wish to configure a default image which will be rendered if an avatar could not be found, or if the remote service has an error (e.g. times out or has a redirect loop), this is simple with an initializer: ```ruby # choose our image image_path = Rails.root.join(*%W(app assets images default_avatar.jpg)) # set the config SocialAvatarProxy.configure do default_image(image_path) end ``` HTTP caching can be configured as below: ```ruby SocialAvatarProxy.configure do http_cache do expires 10.minutes cache_control({ max_age: 5.days, max_stale: 1.day, public: true }) end end ``` Files can be cached in either or both of Memcached and the file system, here is the configuration options: ```ruby SocialAvatarProxy.configure do file_cache do directory "/path/to/folder" end memcache do enable # only required if you don't set either of the following options host "192.168.1.2:11211" # defaults to "localhost:11211" namespace "something:" # defaults to "sap/" end end ``` ### Rack The Rack app is available at: SocialAvatarProxy::App. Both the class and an instance respond to `call` so either can be mounted. ```ruby use SocialAvatarProxy::App # or use SocialAvatarProxy::App.new ``` ## Contributing 1. Fork it 2. Create your feature branch (`git checkout -b my-new-feature`) 3. Commit your changes (`git commit -am 'Add some feature'`) 4. Push to the branch (`git push origin my-new-feature`) 5. Create new Pull Request