From 6e06426db72c301b88327608f54ac2c7c0724690 Mon Sep 17 00:00:00 2001 From: Tyrel Souza Date: Wed, 30 Apr 2014 13:57:58 -0400 Subject: [PATCH] talking to bettervideo --- app/controllers/campaigns_controller.rb | 4 +-- app/models/better_video.rb | 41 ++++++++++++++++++++++--- app/models/campaign.rb | 18 +++++++++++ 3 files changed, 56 insertions(+), 7 deletions(-) diff --git a/app/controllers/campaigns_controller.rb b/app/controllers/campaigns_controller.rb index c0e03fb..361f691 100644 --- a/app/controllers/campaigns_controller.rb +++ b/app/controllers/campaigns_controller.rb @@ -42,8 +42,8 @@ class CampaignsController < ApplicationController if @campaign.update(campaign_params) if params[:send] - client = BetterVideo.new(:url => "xxx") - bv_response = client.addVideo(campaign: @campaign) + client = BetterVideo.new #(:url => "xxx") + bv_response = client.addVideo(campaign: @campaign.to_bettervideo_format) if bv_response[:success] notice = bv_response[:message] @campaign.update({sent: true}) diff --git a/app/models/better_video.rb b/app/models/better_video.rb index 671969e..d8222ac 100644 --- a/app/models/better_video.rb +++ b/app/models/better_video.rb @@ -1,12 +1,43 @@ +require 'net/http' +require 'uri' +require 'json' + class BetterVideo def initialize(options={}) @addvideo_url = options.fetch(:url, "http://servicestest.bettervideo.com/orders/MDS.OrdersWS.svc/addVideo") end def addVideo(campaign) - response = Hash.new - response[:success] = true - response[:message] = "Submitted to better video." - response + uri = URI.parse(@addvideo_url) + header = {}#'Content-Type' => 'text/json'} + + http = Net::HTTP.new(uri.host, uri.port) + request = Net::HTTP::Post.new(uri.request_uri, header) + request.body = campaign[:campaign] + response = http.request(request) + + resp = JSON.parse(response.body) + puts resp + + if resp["success"] + resp[:success] = true + resp[:message] = "Successfully submitted to BetterVideo, Please wait." + else + resp[:message] = resp["errormessage"] + end + # "{\"errorcode\":1,\"errormessage\":\"There was an error parsing the supplied JSON.\",\"listingcode\":null,\"success\":false,\"videocode\":null}" + + resp end -end \ No newline at end of file + + + + private + def valid_json? json_ + JSON.parse(json_) + return true + rescue JSON::ParserError + return false + end + +end diff --git a/app/models/campaign.rb b/app/models/campaign.rb index c3289e6..fc69618 100644 --- a/app/models/campaign.rb +++ b/app/models/campaign.rb @@ -1,3 +1,5 @@ +require 'json' + class Campaign < ActiveRecord::Base has_many :videolistings, :dependent => :delete_all accepts_nested_attributes_for :videolistings,:reject_if => :all_blank, :allow_destroy => true @@ -12,6 +14,15 @@ class Campaign < ActiveRecord::Base def set_defaults self.clientid = 720 end + + def to_builder + Jbuilder.new do |json| + json.partial! 'campaigns/campaign', campaign: self + end + end + + + def has_at_least_one_videolisting errors.add(:base, 'Must add at least one Videolisting') if self.videolistings.blank? end @@ -23,6 +34,13 @@ class Campaign < ActiveRecord::Base 0 end + + def to_bettervideo_format + campaign = self.as_json(include: :videolistings) + campaigns = {campaigns: [campaign,]} + campaigns.to_json + end + # def send_to_better_video # if self.sent_changed? && self.sent? == true #