Skip to content

Commit

Permalink
Merge pull request #24 from sushant12/tests
Browse files Browse the repository at this point in the history
Tests
  • Loading branch information
sushant12 authored Jul 6, 2017
2 parents 5be589a + 4721b19 commit cd13b90
Show file tree
Hide file tree
Showing 13 changed files with 214 additions and 53 deletions.
1 change: 1 addition & 0 deletions .rspec
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
--require spec_helper
15 changes: 12 additions & 3 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ source 'https://rubygems.org'

# Padrino supports Ruby version 1.9 and later
ruby '2.4.0'
gem "koala"
gem 'koala'
# Project requirements
gem 'rake'

Expand All @@ -16,7 +16,16 @@ gem 'sequel'
# Padrino Stable Gem
gem 'padrino', '0.14.1.1'

gem 'awesome_print', :require => 'ap', :group => :development

gem 'omniauth-facebook'
gem 'dotenv'

group :test do
gem 'codecov', :require => false
gem 'rspec'
gem 'webmock'
end

group :development do
gem 'awesome_print', :require => 'ap'
gem 'pry'
end
44 changes: 44 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,20 @@ GEM
addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2)
awesome_print (1.7.0)
codecov (0.1.10)
json
simplecov
url
coderay (1.1.1)
crack (0.4.3)
safe_yaml (~> 1.0.0)
diff-lcs (1.3)
docile (1.1.5)
dotenv (2.2.1)
enumerable-lazy (0.0.2)
faraday (0.12.1)
multipart-post (>= 1.2, < 3)
hashdiff (0.3.4)
hashie (3.5.5)
i18n (0.8.4)
json (2.1.0)
Expand All @@ -18,6 +28,7 @@ GEM
json (>= 1.8)
mail (2.6.6)
mime-types (>= 1.16, < 4)
method_source (0.8.2)
mime-types (2.99.3)
moneta (0.8.1)
multi_json (1.12.1)
Expand Down Expand Up @@ -74,34 +85,67 @@ GEM
padrino-core (= 0.14.1.1)
padrino-support (0.14.1.1)
pg (0.21.0)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
public_suffix (2.0.5)
puma (3.9.0)
rack (2.0.3)
rack-protection (2.0.0)
rack
rake (12.0.0)
rspec (3.6.0)
rspec-core (~> 3.6.0)
rspec-expectations (~> 3.6.0)
rspec-mocks (~> 3.6.0)
rspec-core (3.6.0)
rspec-support (~> 3.6.0)
rspec-expectations (3.6.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.6.0)
rspec-mocks (3.6.0)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.6.0)
rspec-support (3.6.0)
safe_yaml (1.0.4)
sequel (4.47.0)
simplecov (0.14.1)
docile (~> 1.1.0)
json (>= 1.8, < 3)
simplecov-html (~> 0.10.0)
simplecov-html (0.10.1)
sinatra (2.0.0)
mustermann (~> 1.0)
rack (~> 2.0)
rack-protection (= 2.0.0)
tilt (~> 2.0)
slop (3.6.0)
thor (0.19.4)
tilt (2.0.7)
url (0.3.2)
webmock (3.0.1)
addressable (>= 2.3.6)
crack (>= 0.3.2)
hashdiff

PLATFORMS
ruby

DEPENDENCIES
awesome_print
codecov
dotenv
koala
omniauth-facebook
padrino (= 0.14.1.1)
pg
pry
puma
rake
rspec
sequel
webmock

RUBY VERSION
ruby 2.4.0p-1
Expand Down
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
# (I have paused the development of fuitter for a while. Gona be back after a while)
## Fuitter

Fuitter is an open source Facebook page to website converter.
Expand All @@ -20,4 +21,4 @@ A lot of work is yet to be done and I would be more than happy if you could cont

### Why is the app ugly?

Coz, I want to finish the features first and my css skills are shit. Feel free to contribute.
Coz, I want to finish the features first and my css skills are shit. Feel free to contribute.
10 changes: 1 addition & 9 deletions app/controllers/home.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,7 @@

get :facebook_pages do
pages = get_facebook_page_from_db
@pages = pages.any? ? pages : save_pages(get_facebook_pages_from_api(Koala::Facebook::API.new(session[:facebook_token], ENV['FACEBOOK_SECRET'])))
@pages = pages.any? ? pages : save_pages(Facebook.get_object(session[:facebook_token], 'me?fields=accounts'))
render 'facebook_pages'
end

private

def save_pages(pages)
pages.map do |page|
current_account.add_facebook_page(name: page['name'], category: page['category'], token: page['access_token'])
end
end
end
38 changes: 10 additions & 28 deletions app/controllers/page.rb
Original file line number Diff line number Diff line change
@@ -1,29 +1,32 @@
Fuitter::App.controllers :page do
layout :page_layout

before do
# check if common data is present
# else save the data
get_data_for_home ? '': save_common_page_field(Facebook.get_object(page_token, 'me?fields=about,description_html,cover,link,location,website'))
end

get :page_home, map: '/:id/home' do
@home = get_data_for_home || save_common_page_field(get_data_from_api(Koala::Facebook::API.new(page_token, ENV['FACEBOOK_SECRET'])))
@home = get_data_for_home
render 'home'
end

get :page_about, map: '/:id/about' do
@about = get_data_for_about || save_common_page_field(get_data_from_api(Koala::Facebook::API.new(page_token, ENV['FACEBOOK_SECRET'])))
@about = get_data_for_about
render 'about'
end

get :page_contact, map: '/:id/contact' do
@contact = get_data_for_contact || save_common_page_field(get_data_from_api(Koala::Facebook::API.new(page_token, ENV['FACEBOOK_SECRET'])))
@contact = get_data_for_contact
render 'contact'
end

get :page_news, map: '/:id/news' do
@news = get_data_for_news || save_page_feed(get_page_feed_from_api(Koala::Facebook::API.new(page_token, ENV['FACEBOOK_SECRET'])))
@news = get_data_for_news || save_page_feed(Facebook.get_object(page_token, 'me?fields=feed{created_time,description,name,attachments}'))
render 'news'
end

# get :template_events, map: '/:token/events' do
# end

get :page_gallery, map: '/:id/gallery' do
@albums = get_data_for_gallery || get_albums_from_api(Koala::Facebook::API.new(page_token, ENV['FACEBOOK_SECRET']))
render 'gallery'
Expand All @@ -34,25 +37,4 @@
render 'photos'
end

private

def save_common_page_field(fields)
FacebookPage.where(id: params[:id]).update(about: fields.dig('about'), description_html: fields.dig('description_html'), link: fields.dig('link'), website: fields.dig('website'), cover_image: fields.dig('cover','source'), country: fields.dig('location','country'), city: fields.dig('location','city'))
end

def save_page_feed(feeds)
facebook_page = FacebookPage.find(id:params['id'])
feeds.each do |feed|
# check if attachment exist
cover_image = feed.dig('attachments','data')[0].dig('media','image','src') if feed.dig('attachments','data')
attachment_url = feed.dig('attachments','data')[0].dig('url') if feed.dig('attachments','data')

facebook_page.add_page_feed(created_time: feed.dig('created_time'), description: feed.dig('description'),name: feed.dig('name'),cover_image: cover_image,attachment_url: attachment_url)
end
end

end

# def get_data_for_events(obj)
# obj.get_connection('me','event')
# end
16 changes: 4 additions & 12 deletions app/helpers/facebook_api_helper.rb
Original file line number Diff line number Diff line change
@@ -1,24 +1,16 @@
module Fuitter
class App
module FacebookApiHelper
def get_facebook_pages_from_api(obj)
obj.get_connections('me','accounts')
end

# TODO: decouple get_albums_from_api
def get_albums_from_api(obj)
save_albums(obj.get_connection('me','albums'), obj)
end

def get_data_from_api(obj)
fields = {fields: 'about,description_html,cover,link,location,website'}
obj.get_object('me',fields)
end

def get_page_feed_from_api(obj)
fields = ['created_time','description','name','attachments']
obj.get_connection('me','feed',{fields: fields})
end
# def get_page_feed_from_api(obj)
# fields = ['created_time','description','name','attachments']
# obj.get_connection('me','feed',{fields: fields})
# end


end
Expand Down
6 changes: 6 additions & 0 deletions app/helpers/home_herlper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,12 @@ def get_facebook_page_from_db
current_account.facebook_pages
end

def save_pages(pages)
pages['accounts']['data'].map do |page|
current_account.add_facebook_page(name: page['name'], category: page['category'], token: page['access_token'])
end
end

end
helpers HomeHelper
end
Expand Down
15 changes: 15 additions & 0 deletions app/helpers/page_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,21 @@ def save_photos(id,img)
album.add_picture(url: img)
end

def save_common_page_field(fields)
FacebookPage.where(id: params[:id]).update(about: fields.dig('about'), description_html: fields.dig('description_html'), link: fields.dig('link'), website: fields.dig('website'), cover_image: fields.dig('cover','source'), country: fields.dig('location','country'), city: fields.dig('location','city'))
end

def save_page_feed(feeds)
facebook_page = FacebookPage.find(id:params['id'])
feeds['feed']['data'].each do |feed|
# check if attachment exist
cover_image = feed.dig('attachments','data')[0].dig('media','image','src') if feed.dig('attachments','data')
attachment_url = feed.dig('attachments','data')[0].dig('url') if feed.dig('attachments','data')

facebook_page.add_page_feed(created_time: feed.dig('created_time'), description: feed.dig('description'),name: feed.dig('name'),cover_image: cover_image,attachment_url: attachment_url)
end
end


end

Expand Down
1 change: 1 addition & 0 deletions app/views/page/news.html.erb
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
<% @news.each do |item| %>

<%= item.created_time %> <br>
<%= item.description %> <br>
<%= item.name %> <br>
Expand Down
11 changes: 11 additions & 0 deletions lib/facebook.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
class Facebook
class << self
def fbgraph(token)
Koala::Facebook::API.new(token)
end

def get_object(token, id, args = {}, options = {}, &block)
fbgraph(token).get_object(id, args, options, &block)
end
end
end
7 changes: 7 additions & 0 deletions models/home.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
class Home < Sequel::Model
def save_pages(pages)
pages.map do |page|
current_account.add_facebook_page(name: page['name'], category: page['category'], token: page['access_token'])
end
end
end
Loading

0 comments on commit cd13b90

Please sign in to comment.