class Snapcat::Client

Attributes

user[R]

Public Class Methods

new(username) click to toggle source
# File lib/snapcat/client.rb, line 5
def initialize(username)
  @user = User.new
  @requestor = Requestor.new(username)
end

Public Instance Methods

add_friend(username) click to toggle source
# File lib/snapcat/client.rb, line 53
def add_friend(username)
  @requestor.request_with_username(
    'friend',
    action: 'add',
    friend: username
  )
end
auth_token() click to toggle source
# File lib/snapcat/client.rb, line 10
def auth_token
  @requestor.auth_token
end
auth_token=(auth_token) click to toggle source
# File lib/snapcat/client.rb, line 14
def auth_token=(auth_token)
  @requestor.auth_token = auth_token
end
block(username) click to toggle source
# File lib/snapcat/client.rb, line 18
def block(username)
  @requestor.request_with_username(
    'friend',
    action: 'block',
    friend: username
  )
end
clear_feed() click to toggle source
# File lib/snapcat/client.rb, line 26
def clear_feed
  @requestor.request_with_username('clear')
end
delete_friend(username) click to toggle source
# File lib/snapcat/client.rb, line 45
def delete_friend(username)
  @requestor.request_with_username(
    'friend',
    action: 'delete',
    friend: username
  )
end
fetch_updates(update_timestamp = 0) click to toggle source
# File lib/snapcat/client.rb, line 30
def fetch_updates(update_timestamp = 0)
  set_user_data_with(@requestor.request_with_username(
    'updates',
    update_timestamp: update_timestamp
  ))
end
get_stories() click to toggle source
# File lib/snapcat/client.rb, line 37
def get_stories
  @requestor.request_with_username('stories')
end
login(password) click to toggle source
# File lib/snapcat/client.rb, line 70
def login(password)
  set_user_data_with(
    @requestor.request_with_username('login', password: password)
  )
end
logout() click to toggle source
# File lib/snapcat/client.rb, line 76
def logout
  @requestor.request_with_username('logout')
end
media_for(snap_id) click to toggle source
# File lib/snapcat/client.rb, line 41
def media_for(snap_id)
  @requestor.request_media(snap_id)
end
register(password, birthday, email) click to toggle source
# File lib/snapcat/client.rb, line 80
def register(password, birthday, email)
  result = @requestor.request(
    'register',
    birthday: birthday,
    email: email,
    password: password
  )
  unless result.success?
    return result
  end

  result_two = @requestor.request_with_username(
    'registeru',
    email: email
  )

  set_user_data_with(result_two)
end
screenshot(snap_id, view_duration = 1) click to toggle source
# File lib/snapcat/client.rb, line 99
def screenshot(snap_id, view_duration = 1)
  snap_data = {
    snap_id => {
      c: Snap::Status::SCREENSHOT,
      sv: view_duration,
      t: Timestamp.float
    }
  }
  events = [
    {
      eventName: 'SNAP_SCREENSHOT',
      params: { id: snap_id },
      ts: Timestamp.macro - view_duration
    }
  ]

  @requestor.request_with_username(
    'update_snaps',
    events: events.to_json,
    json: snap_data.to_json
  )
end
send_media(data, recipients, options = {}) click to toggle source
# File lib/snapcat/client.rb, line 122
def send_media(data, recipients, options = {})
  result = @requestor.request_upload(data, options[:type])

  unless result.success?
    return result
  end

  media_id = result.data[:media_id]

  @requestor.request_with_username(
    'send',
    media_id: media_id,
    recipient: prepare_recipients(recipients),
    time: options[:view_duration] || 3
  )
end
send_story(data, options = {}) click to toggle source
# File lib/snapcat/client.rb, line 139
def send_story(data, options = {})
  @requestor.request_upload_story(data, options[:time], options[:caption_text], options[:type])
end
set_display_name(username, display_name) click to toggle source
# File lib/snapcat/client.rb, line 61
def set_display_name(username, display_name)
  @requestor.request_with_username(
    'friend',
    action: 'display',
    display: display_name,
    friend: username
  )
end
unblock(username) click to toggle source
# File lib/snapcat/client.rb, line 143
def unblock(username)
  @requestor.request_with_username(
    'friend',
    action: 'unblock',
    friend: username
  )
end
update_email(email) click to toggle source
# File lib/snapcat/client.rb, line 175
def update_email(email)
  @requestor.request_with_username(
    'settings',
    action: 'updateEmail',
    email: email
  )
end
update_privacy(code) click to toggle source
# File lib/snapcat/client.rb, line 183
def update_privacy(code)
  @requestor.request_with_username(
    'settings',
    action: 'updatePrivacy',
    privacySetting: code
  )
end
view(snap_id, view_duration = 1) click to toggle source
# File lib/snapcat/client.rb, line 151
def view(snap_id, view_duration = 1)
  snap_data = {
    snap_id => { t: Timestamp.float, sv: view_duration }
  }
  events = [
    {
      eventName: 'SNAP_VIEW',
      params: { id: snap_id },
      ts: Timestamp.macro - view_duration
    },
    {
      eventName: 'SNAP_EXPIRED',
      params: { id: snap_id },
      ts: Timestamp.macro
    }
  ]

  @requestor.request_with_username(
    'update_snaps',
    events: events.to_json,
    json: snap_data.to_json
  )
end

Private Instance Methods

prepare_recipients(recipients) click to toggle source
# File lib/snapcat/client.rb, line 193
def prepare_recipients(recipients)
  if recipients.is_a? Array
    recipients.join(',')
  else
    recipients
  end
end
request_events(events, snap_data) click to toggle source
# File lib/snapcat/client.rb, line 201
def request_events(events, snap_data)
  @requestor.request_with_username(
    'update_snaps',
    events: events,
    json: snap_data
  )
end
set_user_data_with(result) click to toggle source
# File lib/snapcat/client.rb, line 209
def set_user_data_with(result)
  if result.success?
    @user.data = result.data
  end

  result
end