class Kollus

Public Class Methods

new(account_key, api_token) click to toggle source
# File lib/kollus.rb, line 13
def initialize(account_key, api_token)
  @key = account_key
  @token = api_token
end

Public Instance Methods

detail(upload_key) click to toggle source
# File lib/kollus.rb, line 18
def detail(upload_key)
  api_uri = URI("http://api.kr.kollus.com/0//media/library/media_content/#{upload_key}?access_token=#{@token}")

  response = Net::HTTP.get(api_uri)
  response = JSON.parse response

  return nil unless response['error'] == 0
  return response['result']
end
encrypt(source_string) click to toggle source
# File lib/kollus.rb, line 28
def encrypt(source_string)
  api_uri = URI('http://api.kr.kollus.com/0/media_auth/media_token/get_kollus_encrypt.json?access_token=' + @token)
  params = {
    source_string: source_string
  }

  response = Net::HTTP.post_form(api_uri, params)
  # TODO: Error handling

  response = JSON.parse response.body
  # TODO: Error handling

  raise KollusError, response unless response['error'] == 0

  response['result']['encrypt_string']
end
media(media_content_key, client_user_id, media_profile_key = nil, awt_code = nil, expire_time = 7200, playlist_flag = nil) click to toggle source
# File lib/kollus.rb, line 45
def media(media_content_key, client_user_id, media_profile_key = nil, awt_code = nil, expire_time = 7200, playlist_flag = nil)
  api_uri = URI('http://api.kr.kollus.com/0/media_auth/media_token/get_media_link_by_userid?access_token=' + @token)
  params = {
    client_user_id: client_user_id,
    security_key: @key,
    media_content_key: media_content_key,
    media_profile_key: media_profile_key,
    awt_code: awt_code,
    expire_time: expire_time,
    playlist_flag: playlist_flag
  }

  response = Net::HTTP.post_form(api_uri, params)
  # TODO: Error handling

  response = JSON.parse response.body
  # TODO: Error handling

  unless response['error'] == 0
    # TODO: Error handling
    return nil
  end

  MediaSession.new response['result']['media_token']
end
upload(category_key = nil, title = nil, expire_time = 600, encrypted = true, audio = false) click to toggle source
# File lib/kollus.rb, line 88
def upload(category_key = nil, title = nil, expire_time = 600, encrypted = true, audio = false)
  tries ||= 3
  api_uri = URI('http://api.kr.kollus.com/0/media_auth/upload/create_url.json?access_token=' + @token)
  params = {
    # 값의 범위는 0 < expire_time <= 21600 입니다. 빈값을 보내거나 항목 자체를 제거하면 기본 600초로 설정됩니다.
    expire_time: expire_time,
    # 업로드한 파일이 속할 카테고리의 키(API를 이용하여 확득 가능)입니다. 빈값을 보내 거나 항목 자체를 제거하면 '없음'에 속합니다.
    category_key: category_key,
    # 입력한 제목을 컨텐츠의 제목으로 강제지정합니다. 이 값을 보내지 않거나 빈값으로 보내면 기본 적으로 파일명이 제목으로 사용됩니다.
    title: title,
    # 0은 일반 업로드, 1은 암호화 업로드입니다. 암호화 업로드시 파일이 암호화 되어 Kollus의 전용 플레이어로만 재생됩니다.
    is_encryption_upload: encrypted ? 1 : 0,
    # 0은 비디오 업로드, 1은 음원 파일 업로드입니다.
    is_audio_upload: audio ? 1 : 0,
    # 파일의 분할 업로드를 지원하기 위한 값입니다. 추후 제공될 기능이며, 현재는 동작하지 않습니다.
    is_multipart_upload: 0
  }

  response = Net::HTTP.post_form(api_uri, params)
  # TODO: Error handling

  response = JSON.parse response.body
  # TODO: Error handling

  raise KollusError, response unless response['error'] == 0

  UploadSession.new response['result']
rescue KollusError => e
  retry unless (tries -= 1).zero?
  raise e
end