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