Update Diigo API URL
test plan - verify you can set up the diigo plugin with the information in gollum https://gollum.instructure.com/OtherServiceTestAccounts - on the user settings page, verify you can use your diigo username and password to register the service Change-Id: I78fb9614f03a51a8e0d11ac806a49a7a85e8e2f7 Reviewed-on: https://gerrit.instructure.com/44379 Tested-by: Jenkins <jenkins@instructure.com> Reviewed-by: Jeremy Stanley <jeremy@instructure.com> QA-Review: Clare Strong <clare@instructure.com> Product-Review: Mysti Sadler <mysti@instructure.com>
This commit is contained in:
parent
d2f0450179
commit
0154dc6d22
|
@ -856,7 +856,7 @@ class UsersController < ApplicationController
|
|||
when 'delicious'
|
||||
delicious_get_last_posted(service)
|
||||
when 'diigo'
|
||||
Diigo::Connection.diigo_get_bookmarks(service, 1)
|
||||
Diigo::Connection.diigo_get_bookmarks(service)
|
||||
when 'skype'
|
||||
true
|
||||
when 'yo'
|
||||
|
|
|
@ -229,7 +229,7 @@ class UserService < ActiveRecord::Base
|
|||
when 'delicious'
|
||||
'http://delicious.com/'
|
||||
when 'diigo'
|
||||
'https://secure.diigo.com/sign-up'
|
||||
'https://www.diigo.com/sign-up'
|
||||
when 'linked_in'
|
||||
'https://www.linkedin.com/reg/join'
|
||||
when 'skype'
|
||||
|
|
|
@ -17,46 +17,55 @@
|
|||
#
|
||||
|
||||
module Diigo
|
||||
class Error < ::Exception; end
|
||||
class TooManyRedirectsError < Diigo::Error; end
|
||||
|
||||
class Connection
|
||||
def self.diigo_generate_request(url, method, user_name, password)
|
||||
url = URI.parse url
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
http.use_ssl = true
|
||||
request = nil
|
||||
if method == 'GET'
|
||||
path = url.path
|
||||
path += "?" + url.query if url.query
|
||||
request = Net::HTTP::Get.new(path)
|
||||
else
|
||||
request = Net::HTTP::Post.new(url.path)
|
||||
end
|
||||
request.basic_auth user_name, password
|
||||
[http,request]
|
||||
def self.diigo_url(service)
|
||||
"https://www.diigo.com/api/v2/bookmarks?key=#{CGI.escape(key)}&user=#{CGI.escape(service.service_user_name)}"
|
||||
end
|
||||
|
||||
def self.diigo_get_bookmarks(service, cnt=10)
|
||||
http,request = diigo_generate_request("https://secure.diigo.com/api/v2/bookmarks?key=#{CGI.escape(self.key)}&user=#{CGI.escape(service.service_user_name)}",
|
||||
'GET', service.service_user_name, service.decrypted_password)
|
||||
response = http.request(request)
|
||||
case response
|
||||
def self.diigo_generate_request(url, method, user_name, password, form_data=nil)
|
||||
redirect_limit = 3
|
||||
loop do
|
||||
raise(TooManyRedirectsError) if redirect_limit <= 0
|
||||
|
||||
url = URI.parse url
|
||||
http = Net::HTTP.new(url.host, url.port)
|
||||
http.use_ssl = true
|
||||
path = url.path
|
||||
path += "?" + url.query if url.query
|
||||
|
||||
if method == 'GET'
|
||||
request = Net::HTTP::Get.new(path)
|
||||
else
|
||||
request = Net::HTTP::Post.new(path)
|
||||
end
|
||||
request.set_form_data(form_data) if form_data
|
||||
request.basic_auth user_name, password
|
||||
response = http.request(request)
|
||||
|
||||
case response
|
||||
when Net::HTTPSuccess
|
||||
return ActiveSupport::JSON.decode(response.body)
|
||||
return response
|
||||
when Net::HTTPRedirection
|
||||
url = response['Location']
|
||||
redirect_limit -= 1
|
||||
else
|
||||
response.error!
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.diigo_get_bookmarks(service)
|
||||
response = diigo_generate_request(diigo_url(service), 'GET', service.service_user_name, service.decrypted_password)
|
||||
ActiveSupport::JSON.decode(response.body)
|
||||
end
|
||||
|
||||
def self.diigo_post_bookmark(service, url, title, desc, tags)
|
||||
http,request = diigo_generate_request("https://secure.diigo.com/api/v2/bookmarks?key=#{CGI.escape(self.key)}&user=#{CGI.escape(service.service_user_name)}",
|
||||
'POST', service.service_user_name, service.decrypted_password)
|
||||
request.set_form_data({:title => title, :url => url, :tags => tags.join(","), :desc => desc})
|
||||
response = http.request(request)
|
||||
case response
|
||||
when Net::HTTPSuccess
|
||||
return ActiveSupport::JSON.decode(response.body)
|
||||
else
|
||||
response.error!
|
||||
end
|
||||
form_data = {:title => title, :url => url, :tags => tags.join(","), :desc => desc}
|
||||
response = diigo_generate_request(diigo_url(service), 'POST', service.service_user_name, service.decrypted_password, form_data)
|
||||
ActiveSupport::JSON.decode(response.body)
|
||||
end
|
||||
|
||||
def self.key(key=nil)
|
||||
|
|
Loading…
Reference in New Issue