itrigga-admin_api_client 0.1.4 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/VERSION +1 -1
- data/itrigga-admin_api_client.gemspec +6 -1
- data/lib/itrigga/admin_api_client.rb +31 -0
- data/lib/itrigga/admin_api_client/admin_api_client.rb +86 -0
- data/lib/itrigga/admin_api_client/proxies/admin.rb +26 -0
- data/lib/itrigga/admin_api_client/proxies/api.rb +52 -0
- data/lib/itrigga/admin_api_client/proxies/search_tracker.rb +13 -0
- metadata +9 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{itrigga-admin_api_client}
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Anson Kelly"]
|
@@ -27,6 +27,11 @@ Gem::Specification.new do |s|
|
|
27
27
|
"VERSION",
|
28
28
|
"configuration.yml",
|
29
29
|
"itrigga-admin_api_client.gemspec",
|
30
|
+
"lib/itrigga/admin_api_client.rb",
|
31
|
+
"lib/itrigga/admin_api_client/admin_api_client.rb",
|
32
|
+
"lib/itrigga/admin_api_client/proxies/admin.rb",
|
33
|
+
"lib/itrigga/admin_api_client/proxies/api.rb",
|
34
|
+
"lib/itrigga/admin_api_client/proxies/search_tracker.rb",
|
30
35
|
"spec/admin_api_client_spec.rb",
|
31
36
|
"spec/proxies/admin_spec.rb",
|
32
37
|
"spec/proxies/api_spec.rb",
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# allow this to be used outside of full Rails init
|
2
|
+
this_dir = File.dirname(__FILE__)
|
3
|
+
$: << this_dir unless $:.include?(this_dir)
|
4
|
+
|
5
|
+
#require 'faster_csv'
|
6
|
+
require 'yaml'
|
7
|
+
require 'hashie'
|
8
|
+
require 'core_ext'
|
9
|
+
require 'trigga/param_fu'
|
10
|
+
require 'net_helper'
|
11
|
+
|
12
|
+
#require 'trigga/param_fu'
|
13
|
+
Dir[File.join(File.dirname(File.expand_path(__FILE__)),"admin_api_client","proxies","*.rb")].each {|f| require f }
|
14
|
+
Dir[File.join(File.dirname(File.expand_path(__FILE__)),"admin_api_client","*.rb")].each {|f| require f }
|
15
|
+
|
16
|
+
# load configuration
|
17
|
+
unless defined? RAILS_ENV
|
18
|
+
RAILS_ENV = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development"
|
19
|
+
end
|
20
|
+
|
21
|
+
Itrigga.add_log_line("", true)
|
22
|
+
Itrigga.add_log_line(" iTrigga Admin Client API")
|
23
|
+
Itrigga.add_log_line("", true)
|
24
|
+
|
25
|
+
begin
|
26
|
+
plugin_configuration_file = ENV['TRIGGA_ADMIN_API_CLIENT_CONFIG_FILE'] || File.join(File.dirname(File.expand_path(__FILE__)),"..","..","configuration.yml")
|
27
|
+
TRIGGA_ADMIN_API_CLIENT_CONFIG = Hashie::Mash.new(YAML.load_file(plugin_configuration_file)[RAILS_ENV])
|
28
|
+
rescue Exception => e
|
29
|
+
Itrigga.add_log_line("...disabled => Unable to load Admin Client API configuration from #{plugin_configuration_file}.\n")
|
30
|
+
Itrigga.add_log_line("Exception: #{e.message}")
|
31
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
module Itrigga
|
2
|
+
module AdminApiClient
|
3
|
+
include Trigga::ParamFu
|
4
|
+
include Itrigga::AdminApiClient::Proxies::Admin
|
5
|
+
include Itrigga::AdminApiClient::Proxies::Api
|
6
|
+
include Itrigga::AdminApiClient::Proxies::SearchTracker
|
7
|
+
|
8
|
+
private
|
9
|
+
|
10
|
+
def self.make_call(module_name, endpoint, opts = {})
|
11
|
+
require_param(opts, :api_key)
|
12
|
+
|
13
|
+
host = make_absolute_url( opts[:host] || TRIGGA_ADMIN_API_CLIENT_CONFIG[module_name].base_url )
|
14
|
+
|
15
|
+
begin
|
16
|
+
url = build_url(host,endpoint,opts)
|
17
|
+
Itrigga.add_log_line("[API Client] - #{url}")
|
18
|
+
|
19
|
+
response = JSON.parse(Itrigga::NetHelper.do_get(url))
|
20
|
+
::Hashie::Mash.new(response.kind_of?(Array) ? default_response : response.merge(default_response) )
|
21
|
+
|
22
|
+
rescue Exception => e
|
23
|
+
Itrigga.add_log_line "[API Client Error] - #{e.message}\n#{e.backtrace.join('\n')}" if RAILS_ENV == "development"
|
24
|
+
::Hashie::Mash.new(:error => e.message, :status_code => status_code_from_error(e.message))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.default_response
|
29
|
+
{:status_code => 200}
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.make_endpoint_absolute(endpoint)
|
33
|
+
endpoint.to_s.match(/^\/{1}.*/) ? endpoint : "/#{endpoint}"
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.make_absolute_url(url)
|
37
|
+
url.to_s.match(/^https?:\/\//) ? url : "http://#{url}"
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.build_url(url, endpoint, h = {})
|
41
|
+
# default format to json
|
42
|
+
format = h[:format] || "json"
|
43
|
+
h.delete :format
|
44
|
+
|
45
|
+
params = h.map { |k, v| "#{k}=#{v}" }.join("&")
|
46
|
+
"#{url}#{make_endpoint_absolute(endpoint)}.#{format}#{params.empty? ? '' : '?' + params}"
|
47
|
+
end
|
48
|
+
|
49
|
+
# get the status code from the error message
|
50
|
+
# eg "404 Not Found"
|
51
|
+
def self.status_code_from_error(error)
|
52
|
+
code = error.match(/^(\d{3} )/)
|
53
|
+
if code
|
54
|
+
code.to_s.to_i
|
55
|
+
else
|
56
|
+
0
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
# ==============================================================================================================================
|
63
|
+
# Prints a debugging info line into the log...
|
64
|
+
# ==============================================================================================================================
|
65
|
+
|
66
|
+
def self.add_log_line(line, add_padding = false)
|
67
|
+
is_terminal = false
|
68
|
+
begin
|
69
|
+
@terminal_width ||= `stty size`.split.map { |x| x.to_i }.reverse[0]
|
70
|
+
is_terminal = true
|
71
|
+
rescue Exception => e
|
72
|
+
# not running in terminal``
|
73
|
+
end
|
74
|
+
|
75
|
+
if add_padding and is_terminal and !@terminal_width.nil?
|
76
|
+
puts "#{line.ljust(@terminal_width - line.length, "=")}\n"
|
77
|
+
else
|
78
|
+
if defined?(Rails.logger)
|
79
|
+
Rails.logger.info line
|
80
|
+
else
|
81
|
+
puts line
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Itrigga
|
2
|
+
module AdminApiClient
|
3
|
+
module Proxies
|
4
|
+
module Admin
|
5
|
+
|
6
|
+
def self.included(base)
|
7
|
+
base.send("extend",self)
|
8
|
+
end
|
9
|
+
|
10
|
+
def get_stats( opts = {})
|
11
|
+
Itrigga::AdminApiClient.make_call "admin", "stats", opts
|
12
|
+
end
|
13
|
+
|
14
|
+
def get_clients(opts = {})
|
15
|
+
Itrigga::AdminApiClient.make_call "admin", "clients", opts
|
16
|
+
end
|
17
|
+
|
18
|
+
def get_client(opts = {})
|
19
|
+
require_param(opts, :client_id)
|
20
|
+
Itrigga::AdminApiClient.make_call "admin", "clients/#{opts[:client_id]}", opts
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
module Itrigga
|
2
|
+
module AdminApiClient
|
3
|
+
module Proxies
|
4
|
+
module Api
|
5
|
+
|
6
|
+
def self.included(base)
|
7
|
+
base.send("extend",self)
|
8
|
+
end
|
9
|
+
|
10
|
+
private
|
11
|
+
|
12
|
+
def common_params
|
13
|
+
[:page, :per_page, :max_tags, :site_key, :api_key]
|
14
|
+
end
|
15
|
+
|
16
|
+
def make_api_call(endpoint, opts = {})
|
17
|
+
require_one_of( opts, :site_key, :site_id )
|
18
|
+
Itrigga::AdminApiClient.make_call("api", endpoint, opts.reject{|k,v| !common_params.include?(k.to_sym) } )
|
19
|
+
end
|
20
|
+
|
21
|
+
public
|
22
|
+
|
23
|
+
def get_channels(opts)
|
24
|
+
make_api_call("channels", opts )
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_channel_items( opts )
|
28
|
+
require_param( opts, :channel_id )
|
29
|
+
make_api_call("channels/#{opts[:channel_id]}", opts )
|
30
|
+
end
|
31
|
+
|
32
|
+
def get_sources( opts )
|
33
|
+
make_api_call('sources', opts)
|
34
|
+
end
|
35
|
+
|
36
|
+
def get_item_tags( opts )
|
37
|
+
make_api_call('item_tags', opts)
|
38
|
+
end
|
39
|
+
|
40
|
+
def get_latest_items( opts )
|
41
|
+
make_api_call('items', opts)
|
42
|
+
end
|
43
|
+
|
44
|
+
def get_item_details( opts )
|
45
|
+
require_param( opts, :item_id )
|
46
|
+
make_api_call("items/#{opts[:item_id]}", opts)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: itrigga-admin_api_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 23
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 0.2.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Anson Kelly
|
@@ -256,6 +256,11 @@ files:
|
|
256
256
|
- VERSION
|
257
257
|
- configuration.yml
|
258
258
|
- itrigga-admin_api_client.gemspec
|
259
|
+
- lib/itrigga/admin_api_client.rb
|
260
|
+
- lib/itrigga/admin_api_client/admin_api_client.rb
|
261
|
+
- lib/itrigga/admin_api_client/proxies/admin.rb
|
262
|
+
- lib/itrigga/admin_api_client/proxies/api.rb
|
263
|
+
- lib/itrigga/admin_api_client/proxies/search_tracker.rb
|
259
264
|
- spec/admin_api_client_spec.rb
|
260
265
|
- spec/proxies/admin_spec.rb
|
261
266
|
- spec/proxies/api_spec.rb
|