Class: MintsLink

Inherits:
Object
  • Object
show all
Defined in:
lib/generators/mints_link.rb

Instance Method Summary collapse

Constructor Details

#initializeMintsLink

Returns a new instance of MintsLink.



4
5
6
7
8
9
10
11
12
# File 'lib/generators/mints_link.rb', line 4

def initialize
  @host = ENV['MONGO_HOST'] || '127.0.0.1'
  @database = ENV['MONGO_DATABASE'] || 'mints'
  @port = ENV['MONGO_PORT'] || '27017'
  @client = Mongo::Client.new(["#{@host}:#{@port}"], :database => @database)
  @short_links = @client[:short_links]
  @sl_visits = @client[:sl_visits]
  generate_indexes
end

Instance Method Details

#generate(url) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/generators/mints_link.rb', line 14

def generate(url)
  code = random_string.upcase
  collection = @short_links
  doc = {
    url: url,
    code: code
  }

  result = collection.insert_one(doc)
  if result.n === 1
    code
  else
    false
  end
end

#get_url(code) ⇒ Object



30
31
32
33
34
# File 'lib/generators/mints_link.rb', line 30

def get_url(code)
  collection = @short_links
  record = collection.find({ 'code' => code }).first
  record["url"]
end

#get_visits(filter, page = 1, page_size = 1000) ⇒ Object



49
50
51
52
# File 'lib/generators/mints_link.rb', line 49

def get_visits(filter, page = 1, page_size = 1000)
  collection = @sl_visits
  collection.find(filter).sort({ _id: 1 }).skip(page * page_size - page_size).limit(page_size)
end

#visit(code, url, contact_id, user_agent, ip) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/generators/mints_link.rb', line 36

def visit(code, url, contact_id, user_agent, ip)
  collection = @sl_visits
  doc = {
    code: code,
    url: url,
    contact_id: contact_id,
    user_agent: user_agent,
    ip: ip
  }
  result = collection.insert_one(doc)
  result.n === 1
end