Completed
Push — master ( 1a1492...4290d0 )
by John
8s
created

Client   A

Complexity

Total Complexity 12

Size/Duplication

Total Lines 77
Duplicated Lines 18.18 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
c 4
b 0
f 0
dl 14
loc 77
rs 10
wmc 12

9 Methods

Rating   Name   Duplication   Size   Complexity  
A search_job_status() 0 5 1
A search_job() 0 7 1
A initialize() 0 12 1
A search() 0 7 1
A search_job_messages() 7 7 1
A search_job_records() 7 7 1
A dashboards() 0 8 2
A dashboard() 0 6 2
A dashboard_data() 0 6 2

How to fix   Duplicated Code   

Duplicated Code

Duplicate code is one of the most pungent code smells. A rule that is often used is to re-structure code once it is duplicated in three or more places.

Common duplication problems, and corresponding solutions are:

1
require 'faraday'
2
require 'faraday_middleware'
3
require 'faraday-cookie_jar'
4
require 'multi_json'
5
6
module SumoLogic
7
  VERSION = '0.0.5'
8
  URL = 'https://api.sumologic.com/api/v1'
9
10
  class Client
11
12
    def initialize(access_id=nil, access_key=nil, endpoint=SumoLogic::URL)
13
      @endpoint = endpoint
14
      @session  = Faraday
15
      headers   = {'Content-Type' => 'application/json', 'Accept' => 'application/json'}
16
      @session  = Faraday.new(url: @endpoint, headers: headers) do |conn|
17
        conn.basic_auth(access_id, access_key)
18
        conn.use      :cookie_jar
19
        conn.request  :json
20
        conn.response :json, content_type: 'application/json'
21
        conn.adapter  Faraday.default_adapter
22
      end
23
    end
24
25
    def search(query, from_time=nil, to_time=nil, time_zone='UTC')
26
      params = {q: query, from: from_time, to: to_time, tz: time_zone}
27
      r = @session.get do |req|
28
        req.url 'logs/search'
29
        req.params = params
30
      end    
31
    end
32
33
    def search_job(query, from_time=nil, to_time=nil, time_zone='UTC')
34
      params = {query: query, from: from_time, to: to_time, timeZone: time_zone}
35
      r = @session.post do |req|
36
        req.url 'search/jobs'
37
        req.body = MultiJson.encode(params)
38
      end
39
    end
40
41
    def search_job_status(search_job={})
42
      r = @session.get do |req|
43
        req.url 'search/jobs/' + search_job['id'].to_s
44
      end
45
    end
46
    
47 View Code Duplication
    def search_job_records(search_job, limit=nil, offset=0)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
48
      params = {limit: limit, offset: offset}
49
      r = @session.get do |req|
50
        req.url 'search/jobs/' + search_job['id'].to_s + '/records'
51
        req.params = params
52
      end
53
    end
54
55 View Code Duplication
    def search_job_messages(search_job, limit=nil, offset=0)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
56
      params = {:limit => limit, :offset => offset}
57
      r = @session.get do |req|
58
        req.url "search/jobs/#{search_job['id']}/messages"
59
        req.params = params
60
      end
61
    end
62
63
    def dashboards(monitors=false)
64
      params = {dashboards: monitors}
65
      r = @session.get do |req|
66
        req.url 'dashboards'
67
        req.params = params
68
      end
69
      return r.body.has_key?('dashboards') ? r.body['dashboards'] : nil
70
    end
71
72
    def dashboard(dashboard_id)
73
      r = @session.get do |req|
74
        req.url 'dashboards/' + dashboard_id.to_s
75
      end
76
      return r.body.has_key?('dashboard') ? r.body['dashboard'] : nil
77
    end
78
79
    def dashboard_data(dashboard_id)
80
      r = @session.get do |req|
81
        req.url 'dashboards/' + dashboard_id.to_s + '/data'
82
      end
83
      return r.body.has_key?('dashboardMonitorDatas') ? r.body['dashboardMonitorDatas'] : nil
84
    end
85
86
  end
87
end
88