Class: Snapcat::Requestor

Inherits:
Object
  • Object
show all
Includes:
HTTMultiParty
Defined in:
lib/snapcat/requestor.rb

Constant Summary collapse

SECRET =
'iEk21fuwZApXlz93750dmW22pw389dPwOk'
STATIC_TOKEN =
'm198sOkJEn37DjqZ32lpRu76xmw288xSQ9'
HASH_PATTERN =
'0001110111101110001111010101111011010001001110011000110001000110'

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(username) ⇒ Requestor

Returns a new instance of Requestor.



13
14
15
16
# File 'lib/snapcat/requestor.rb', line 13

def initialize(username)
  @auth_token = STATIC_TOKEN
  @username = username
end

Instance Attribute Details

#auth_tokenObject

Returns the value of attribute auth_token.



9
10
11
# File 'lib/snapcat/requestor.rb', line 9

def auth_token
  @auth_token
end

Instance Method Details

#request(endpoint, data = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/snapcat/requestor.rb', line 18

def request(endpoint, data = {})
  response = self.class.post(
    "/#{endpoint}",
    body: merge_defaults_with(data)
  )

  additional_fields = additional_fields_for(data)
  result = Response.new(response, additional_fields)

  auth_token_from(result, endpoint)
  result
end

#request_media(snap_id) ⇒ Object



31
32
33
34
35
36
37
38
# File 'lib/snapcat/requestor.rb', line 31

def request_media(snap_id)
  response = self.class.post(
    '/blob',
    { body: merge_defaults_with({ id: snap_id, username: @username }) }
  )

  Response.new(response)
end

#request_upload(data, type = nil) ⇒ Object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/snapcat/requestor.rb', line 44

def request_upload(data, type = nil)
  encrypted_data = Crypt.encrypt(data)
  media = Media.new(encrypted_data, type)
  file_extension = media.file_extension

  begin
    file = Tempfile.new(['snap', ".#{file_extension}"])
    file.write(encrypted_data.force_encoding('utf-8'))
    file.rewind

    return request_with_username(
      'upload',
      data: file,
      media_id: media.generate_id(@username),
      type: media.type_code
    )
  ensure
    file.close
    file.unlink
  end
end

#request_with_username(endpoint, data = {}) ⇒ Object



40
41
42
# File 'lib/snapcat/requestor.rb', line 40

def request_with_username(endpoint, data = {})
  request(endpoint, data.merge({ username: @username }))
end