Skip to content
This repository has been archived by the owner on Aug 12, 2020. It is now read-only.

Commit

Permalink
Added Model for Temporary Storage
Browse files Browse the repository at this point in the history
  • Loading branch information
dantetwc committed Apr 19, 2012
1 parent c09eb87 commit 7519ef9
Show file tree
Hide file tree
Showing 7 changed files with 69 additions and 16 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -35,7 +35,7 @@ You'll need to have a AfterShip account [http://www.aftership.com](http://www.af

###2. Setup the API Key

Log in to AfterShip and copy the consumer key and consumer secret to initializers/aftership.rb
Log in to AfterShip. Go to "Settings" page and select "Profile" tab, then copy the consumer key and consumer to initializers/aftership.rb

Spree::Aftership::Config[:consumer_key] = "YOUR_CONSUMER_KEY"
Spree::Aftership::Config[:consumer_secret] = "YOUR_CONSUMER_SECRET"
Expand Down
34 changes: 34 additions & 0 deletions app/models/aftership_tracking.rb
@@ -0,0 +1,34 @@
require 'uri'
require 'net/http'
require 'net/https'
require 'cgi'

class AftershipTracking < ActiveRecord::Base
attr_accessible :tracking, :email, :order_number, :add_to_aftership

def self.add_to_aftership
AftershipTracking.where(:add_to_aftership => nil).each do |tracking|
post_data = {"consumer_key" => Spree::Aftership::Config[:consumer_key], "consumer_secret" => Spree::Aftership::Config[:consumer_secret], "tracking_number" => tracking.tracking, "email" => tracking.email, "title" => "Spree Order: #{tracking.order_number}"}

begin
url = URI.parse("https://www.aftership.com/en/api/add-tracking/")
req = Net::HTTP::Post.new(url.path)
req.set_form_data(post_data)

sock = Net::HTTP.new(url.host, url.port)
sock.use_ssl = true
res = sock.start { |http| http.request(req) }

case res
when Net::HTTPOK
tracking.update_attribute(:add_to_aftership, Time.now)
else
logger.error 'Unable to add tracking number to AfterShip!'
end
rescue Exception => e
logger.error "AfterShip error:#{e.message}"
end
end
AftershipTracking.where("add_to_aftership <= ?", 1.month.ago).destroy_all
end
end
17 changes: 2 additions & 15 deletions app/models/spree/shipment_decorator.rb
@@ -1,8 +1,3 @@
require 'uri'
require 'net/http'
require 'net/https'
require 'cgi'

Spree::Shipment.class_eval do

after_save :send_tracking_to_aftership
Expand All @@ -11,16 +6,8 @@

def send_tracking_to_aftership
if tracking && tracking_changed?
post_data = {"consumer_key" => Spree::Aftership::Config[:consumer_key], "consumer_secret" => Spree::Aftership::Config[:consumer_secret], "tracking_number" => tracking, "email"=> order.email, "title" => "#{Spree::Config.site_name} Order: #{order.number}"}

url = URI.parse("https://www.aftership.com/en/api/add-tracking/")
req = Net::HTTP::Post.new(url.path)
req.set_form_data(post_data)

sock = Net::HTTP.new(url.host, url.port)
sock.use_ssl = true
res = sock.start {|http| http.request(req) }

AftershipTracking.create(:tracking => tracking, :email => order.email, :order_number => order.number)
AftershipTracking.add_to_aftership
end
end

Expand Down
12 changes: 12 additions & 0 deletions db/migrate/20120419031347_create_aftership_trackings.rb
@@ -0,0 +1,12 @@
class CreateAftershipTrackings < ActiveRecord::Migration
def change
create_table :aftership_trackings do |t|
t.string :tracking
t.string :email
t.string :order_number
t.datetime :add_to_aftership

t.timestamps
end
end
end
13 changes: 13 additions & 0 deletions lib/generators/spree_aftership/install/install_generator.rb
Expand Up @@ -7,6 +7,19 @@ def copy_initializers
copy_file "aftership.rb", "config/initializers/aftership.rb"
end

def add_migrations
run 'bundle exec rake railties:install:migrations FROM=spree_aftership'
end

def run_migrations
res = ask "Would you like to run the migrations now? [Y/n]"
if res == "" || res.downcase == "y"
run 'bundle exec rake db:migrate'
else
puts "Skiping rake db:migrate, don't forget to run it!"
end
end

end
end
end
2 changes: 2 additions & 0 deletions log/development.log
@@ -0,0 +1,2 @@
 (0.3ms) select owner_id, owner_type, name, value from spree_preferences where `key` is null
SQLite3::SQLException: no such table: spree_preferences: select owner_id, owner_type, name, value from spree_preferences where `key` is null
5 changes: 5 additions & 0 deletions spec/models/aftership_tracking_spec.rb
@@ -0,0 +1,5 @@
require 'spec_helper'

describe AftershipTracking do
pending "add some examples to (or delete) #{__FILE__}"
end

0 comments on commit 7519ef9

Please sign in to comment.