Completed
Push — master ( 232f8a...96fc96 )
by John
01:03
created

Client.sources()   A

Complexity

Conditions 1

Size

Total Lines 4

Duplication

Lines 4
Ratio 100 %

Importance

Changes 0
Metric Value
cc 1
dl 4
loc 4
rs 10
c 0
b 0
f 0
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
      @session.get do |req|
27
        req.url 'logs/search'
28
        req.params = {q: query, from: from_time, to: to_time, tz: time_zone}
29
      end    
30
    end
31
32
    def search_job(query, from_time=nil, to_time=nil, time_zone='UTC')
33
      params = {query: query, from: from_time, to: to_time, timeZone: time_zone}
34
      @session.post do |req|
35
        req.url 'search/jobs'
36
        req.body = MultiJson.encode(params)
37
      end
38
    end
39
40
    def search_job_status(search_job={})
41
      @session.get "search/jobs/#{search_job['id']}"
42
    end
43
44 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...
45
      params = {limit: limit, offset: offset}
46
      @session.get "search/jobs/#{search_job['id']}/messages", params
47
    end
48
49 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...
50
      params = {limit: limit, offset: offset}
51
      @session.get "search/jobs/#{search_job['id']}/records", params
52
    end
53
54 View Code Duplication
    def collectors(limit=nil, offset=nil)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
55
      @session.get 'collectors', {limit: limit, offset: offset}
56
    end
57
58
    def collector(collector_id)
59
      @session.get "collectors/#{collector_id}"
60
    end
61
62
    def update_collector(collector, etag)
63
      @session.put do |req|
64
        req.url "collectors/#{collector['collector']['id']}"
65
        req.headers['If-Match'] = etag
66
        req.body = collector
67
      end
68
    end
69
70
    def delete_collector(collector)
71
      @session.delete "collectors/#{collector['id']}"
72
    end
73
74 View Code Duplication
    def sources(collector_id, limit=nil, offset=nil)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
75
      params = {limit: limit, offset: offset}
76
      @session.get "collectors/#{collector_id}", params
77
    end
78
79
    def source(collector_id, source_id)
80
      @session.get "collectors/#{collector_id}/sources/#{source_id}"
81
    end
82
83
    def update_source(collector_id, source, etag)
84
      @session.put do |req|
85
        req.url "collectors/#{collector_id}/sources/#{source['source']['id']}"
86
        req.headers['If-Match'] = etag
87
        req.body = source
88
      end
89
    end
90
91
    def delete_source(collector_id, source)
92
      @session.delete "collectors/#{collector_id}/sources/#{source['source']['id']}"
93
    end
94
95
    def create_content(path, data)
96
      @session.post "content/#{path}", data
97
    end
98
99
    def get_content(path)
100
      @session.get "content/#{path}"
101
    end
102
103
    def delete_content(path)
104
      @session.delete "content/#{path}"
105
    end
106
107 View Code Duplication
    def dashboards(monitors=false)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
108
      r = @session.get 'dashboards', {dashboards: monitors}
109
      return r.body.has_key?('dashboards') ? r.body['dashboards'] : nil
110
    end
111
112 View Code Duplication
    def dashboard(dashboard_id)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
113
      r = @session.get "dashboards/#{dashboard_id}"
114
      return r.body.has_key?('dashboard') ? r.body['dashboard'] : nil
115
    end
116
117 View Code Duplication
    def dashboard_data(dashboard_id)
0 ignored issues
show
Duplication introduced by
This code seems to be duplicated in your project.
Loading history...
118
      r = @session.get "dashboards/#{dashboard_id}/data"
119
      return r.body.has_key?('dashboardMonitorDatas') ? r.body['dashboardMonitorDatas'] : nil
120
    end
121
122
  end
123
end
124