class GlossyApp::Session
You find the rest of the methods in glossyapp/session/*
Public Class Methods
new(api_key, base_url = 'http://api.glossyapp.com/v1', proxy = nil, timeout = 30)
click to toggle source
# File lib/glossyapp/session.rb, line 20 def initialize(api_key, base_url = 'http://api.glossyapp.com/v1', proxy = nil, timeout = 30) @api_key = api_key @base_url = base_url @proxy = proxy @timeout = timeout @user_agent = "glossyapp-api-ruby/#{GlossyApp::VERSION}" # Handle Proxy if @proxy raise "Setting a proxy is no longer supported" end end
Public Instance Methods
asset_folder_with_name_exists?(asset_folder_name, parent_folder_id='root')
click to toggle source
# File lib/glossyapp/session/assets.rb, line 53 def asset_folder_with_name_exists?(asset_folder_name, parent_folder_id='root') response = glossy_get "/asset_folders/#{parent_folder_id}" if [200].include?(response.status) root = JSON.parse(response.body) root['asset_folder']['children'].each do |folder| return folder['id'] if folder['name'] == asset_folder_name.to_s end return false else return false end end
bla()
click to toggle source
# File lib/glossyapp/session/publications.rb, line 5 def bla puts "bla" end
create_assets_folder(name, parent_id = 'root')
click to toggle source
# File lib/glossyapp/session/assets.rb, line 27 def create_assets_folder(name, parent_id = 'root') data = { 'asset_folder' => { 'parent_id' => parent_id, 'name' => name } } response = glossy_post('/asset_folders', data.to_json, {"Content-Type" => "application/json"}) if [200, 201].include?(response.status) asset_folder = JSON.parse(response.body) return asset_folder['asset_folder']['id'] else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
create_document(publication_id, title, language = "en", external_id = nil, tag_list = [], published_at = nil)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 38 def create_document(publication_id, title, language = "en", external_id = nil, tag_list = [], published_at = nil) post_data = { 'document' => { 'publication_id' => publication_id, 'title' => title, 'external_id' => external_id, 'language' => language, 'tag_list' => tag_list, 'published_at' => published_at } } response = glossy_post("/documents", post_data.to_json, {"Content-Type" => "application/json"}) if [200, 201].include?(response.status) document = JSON.parse(response.body) document_id = document['document']['id'] return document_id else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
create_file_asset(file_path, asset_folder_id)
click to toggle source
# File lib/glossyapp/session/assets.rb, line 5 def create_file_asset(file_path, asset_folder_id) response = glossy_post_multipart("/asset_folders/#{asset_folder_id}/asset_files", {}, { 'asset_file[asset_file]' => file_path }) if [200, 201].include?(response.status) asset_file = JSON.parse(response.body) return asset_file['asset_file']['id'] else raise "Invalid response: #{response.inspect}\n#{response.body}" end return nil end
create_page_element(document_id, page_id, x, y, width, height, type, data, title = nil)
click to toggle source
# File lib/glossyapp/session/page_elements.rb, line 5 def create_page_element(document_id, page_id, x, y, width, height, type, data, title = nil) data = { 'page_element' => { 'page_id' => page_id, 'type' => type, 'title' => title, 'x' => x, 'y' => y, 'width' => width, 'height' => height }.merge(data) } response = glossy_post("/documents/#{document_id}/pages/#{page_id}/page_elements", data.to_json, {"Content-Type" => "application/json"}) if [200, 201].include?(response.status) json = JSON.parse(response.body) return json['page_element']['id'] else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
delete_assets_folder(assets_folder_id)
click to toggle source
# File lib/glossyapp/session/assets.rb, line 44 def delete_assets_folder(assets_folder_id) response = glossy_delete("/asset_folders/#{assets_folder_id}") if [200, 201].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
delete_document(document_id)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 62 def delete_document(document_id) response = glossy_delete("/documents/#{document_id}") if [200, 201].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
delete_file_asset(asset_folder_id, asset_file_id)
click to toggle source
# File lib/glossyapp/session/assets.rb, line 18 def delete_file_asset(asset_folder_id, asset_file_id) response = glossy_delete("/asset_folders/#{asset_folder_id}/asset_files/#{asset_file_id}") if [200, 201].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
delete_page_element(document_id, page_id, page_element_id)
click to toggle source
# File lib/glossyapp/session/page_elements.rb, line 27 def delete_page_element(document_id, page_id, page_element_id) response = glossy_delete "/documents/#{document_id}/pages/#{page_id}/page_elements/#{page_element_id}" if [200].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
document_exists?(document_id)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 71 def document_exists?(document_id) response = glossy_get "/documents/#{document_id}" if [200].include?(response.status) doc = JSON.parse(response.body) return document_id.to_s == doc['id'].to_s else return false end end
get_document(document_id)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 29 def get_document(document_id) response = glossy_get "/documents/#{document_id}" if [200].include?(response.status) return JSON.parse(response.body) else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
get_document_with_external_id(external_id)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 5 def get_document_with_external_id(external_id) response = glossy_get "/documents" if [200].include?(response.status) json = JSON.parse(response.body) document_id = nil json['documents'].each do |document| if document['external_id'].to_s == external_id.to_s document_id = document['id'] break end end if document_id return get_document(document_id) else return nil end else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
get_pages(document_id)
click to toggle source
# File lib/glossyapp/session/pages.rb, line 22 def get_pages(document_id) response = glossy_get "/documents/#{document_id}/pages" if [200].include?(response.status) return JSON.parse(response.body) else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
import_asset_file_into_document(document_id, asset_file_id)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 99 def import_asset_file_into_document(document_id, asset_file_id) response = glossy_post("/documents/#{document_id}/import", {:asset_file_id => asset_file_id}.to_json, {"Content-Type" => "application/json"}) if [200, 201].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
page_id_for_page_position(document_id, position)
click to toggle source
# File lib/glossyapp/session/pages.rb, line 31 def page_id_for_page_position(document_id, position) response = glossy_get "/documents/#{document_id}/pages?positions=#{position}" if [200].include?(response.status) json = JSON.parse(response.body) if json['pages'].is_a?(Array) and json['pages'].size > 0 return json['pages'].first['id'] else return nil end else return nil end end
ping()
click to toggle source
# File lib/glossyapp/session.rb, line 35 def ping response = glossy_get "/ping" if [200].include?(response.status) return true else return false end end
publish_document(document_id)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 81 def publish_document(document_id) response = glossy_post("/documents/#{document_id}/publish", {}.to_json) if [200, 201].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
set_external_id_for_page(document_id, page_id, external_id)
click to toggle source
# File lib/glossyapp/session/pages.rb, line 5 def set_external_id_for_page(document_id, page_id, external_id) post_data = { 'page' => { 'external_id' => external_id } } response = glossy_put("/documents/#{document_id}/pages/#{page_id}", post_data.to_json, {"Content-Type" => "application/json"}) if [200, 201].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
unpublish_document(document_id)
click to toggle source
# File lib/glossyapp/session/documents.rb, line 90 def unpublish_document(document_id) response = glossy_post("/documents/#{document_id}/unpublish", {}.to_json) if [200, 201].include?(response.status) return true else raise "Invalid response: #{response.inspect}\n#{response.body}" end end
Protected Instance Methods
build_uri(path)
click to toggle source
# File lib/glossyapp/session.rb, line 87 def build_uri(path) return URI("#{@base_url}#{path}") end
glossy_delete(path, headers = {})
click to toggle source
# File lib/glossyapp/session.rb, line 78 def glossy_delete(path, headers = {}) request = Net::HTTP::Delete.new(build_uri(path)) return make_request(request, headers) end
glossy_get(path, headers = {})
click to toggle source
# File lib/glossyapp/session.rb, line 47 def glossy_get(path, headers = {}) request = Net::HTTP::Get.new(build_uri(path)) return make_request(request, headers) end
glossy_post(path, data, headers = {})
click to toggle source
# File lib/glossyapp/session.rb, line 58 def glossy_post(path, data, headers = {}) request = Net::HTTP::Post.new(build_uri(path)) request.body = data return make_request(request, headers) end
glossy_post_multipart(path, data = {}, files = {}, headers = {})
click to toggle source
# File lib/glossyapp/session.rb, line 64 def glossy_post_multipart(path, data = {}, files = {}, headers = {}) raise ArgumentError, "data needs to be a hash" unless data.is_a? Hash raise ArgumentError, "files needs to be a hash" unless files.is_a? Hash post_data = {} data.each_pair { |key, value| post_data[key] = value } files.each_pair { |key, value| post_data[key] = UploadIO.new(File.new(value), 'application/octet-stream', File.basename(value)) } uri = build_uri(path) request = Net::HTTP::Post::Multipart.new(uri, post_data) return make_request(request, headers) end
glossy_put(path, data, headers = {})
click to toggle source
# File lib/glossyapp/session.rb, line 52 def glossy_put(path, data, headers = {}) request = Net::HTTP::Put.new(build_uri(path)) request.body = data return make_request(request, headers) end
make_request(request, headers)
click to toggle source
# File lib/glossyapp/session.rb, line 91 def make_request(request, headers) request['Accept'] = 'application/json' request['User-Agent'] = @user_agent headers.each_pair { |key, value| request[key] = value } request.basic_auth @api_key, '' response = Net::HTTP.start(request.uri.hostname, request.uri.port, :use_ssl => request.uri.scheme == 'https', :read_timeout => @timeout) do |http| http.request(request) end return GlossyResponse.new(response.code.to_i, response.body) end