riq 0.9.1 → 1.0.1
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.
- checksums.yaml +4 -4
- metadata +4 -34
- data/.gitignore +0 -42
- data/.yardopts +0 -2
- data/Gemfile +0 -8
- data/LICENSE.txt +0 -21
- data/README.md +0 -15
- data/lib/riq.rb +0 -103
- data/lib/riq/account.rb +0 -82
- data/lib/riq/batch_manager.rb +0 -197
- data/lib/riq/client.rb +0 -148
- data/lib/riq/contact.rb +0 -158
- data/lib/riq/error.rb +0 -56
- data/lib/riq/event.rb +0 -165
- data/lib/riq/list.rb +0 -89
- data/lib/riq/list_item.rb +0 -119
- data/lib/riq/list_item_manager.rb +0 -13
- data/lib/riq/riq_obj.rb +0 -104
- data/lib/riq/user.rb +0 -47
- data/riq.gemspec +0 -29
- data/test/test.rb +0 -4
- data/test/test_account.rb +0 -44
- data/test/test_batch_manager.rb +0 -72
- data/test/test_contact.rb +0 -62
- data/test/test_event.rb +0 -56
- data/test/test_list_item.rb +0 -42
data/lib/riq/list.rb
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
require_relative 'riq_obj'
|
2
|
-
|
3
|
-
module RIQ
|
4
|
-
# A List is an object that can be created and customized by a User to represent
|
5
|
-
# Accounts (companies) or Contacts (people) in a process (such as a sales pipeline).
|
6
|
-
class List < RIQObject
|
7
|
-
# can't create a list through api, so these don't need to write
|
8
|
-
attr_reader :title
|
9
|
-
attr_reader :type
|
10
|
-
attr_reader :list_items
|
11
|
-
# for consistency
|
12
|
-
alias_method :name, :title
|
13
|
-
|
14
|
-
# (see RIQObject#initialize)
|
15
|
-
def initialize(id = nil)
|
16
|
-
super
|
17
|
-
@list_items = ListItemManager.new(@id)
|
18
|
-
end
|
19
|
-
|
20
|
-
# (see RIQObject#node)
|
21
|
-
def node
|
22
|
-
self.class.node(@id)
|
23
|
-
end
|
24
|
-
|
25
|
-
# (see RIQObject.node)
|
26
|
-
def self.node(id = nil)
|
27
|
-
"lists/#{id}"
|
28
|
-
end
|
29
|
-
|
30
|
-
# (see RIQObject#data)
|
31
|
-
def data
|
32
|
-
{
|
33
|
-
id: @id,
|
34
|
-
title: @title,
|
35
|
-
type: @type,
|
36
|
-
fields: @fields
|
37
|
-
}
|
38
|
-
end
|
39
|
-
|
40
|
-
# Overwriting parent because lists can't be saved through the API
|
41
|
-
def save
|
42
|
-
raise NotImplementedError, "Lists can't be edited through the API"
|
43
|
-
end
|
44
|
-
|
45
|
-
# Gets field if it exists
|
46
|
-
# @param id [String, Integer] field ID
|
47
|
-
# @return [Hash, nil] info on the field specified
|
48
|
-
def fields(id = nil)
|
49
|
-
unless id.nil?
|
50
|
-
@fields.select{|f| f['id'] == id.to_s}.first
|
51
|
-
else
|
52
|
-
@fields
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
# Convenience method for fetching or creating a listitem from the given list
|
57
|
-
# @param oid [String, nil] ObjectId
|
58
|
-
def list_item(oid = nil)
|
59
|
-
RIQ::ListItem.new(oid, lid: @id)
|
60
|
-
end
|
61
|
-
|
62
|
-
private
|
63
|
-
|
64
|
-
def init(obj = nil)
|
65
|
-
unless obj.nil?
|
66
|
-
@id = obj[:id]
|
67
|
-
@title = obj[:title]
|
68
|
-
@type = obj[:listType]
|
69
|
-
@fields = obj[:fields]
|
70
|
-
else
|
71
|
-
@id = nil
|
72
|
-
@title = nil
|
73
|
-
@type = nil
|
74
|
-
@fields = nil
|
75
|
-
end
|
76
|
-
self
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
class << self
|
81
|
-
# Convenience method to create new Lists
|
82
|
-
# @param id [String, nil] create a blank List object or
|
83
|
-
# fetch an existing one by id.
|
84
|
-
# @return [List]
|
85
|
-
def list(id = nil)
|
86
|
-
List.new(id)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
end
|
data/lib/riq/list_item.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
require_relative 'riq_obj'
|
2
|
-
using RIQExtensions
|
3
|
-
|
4
|
-
module RIQ
|
5
|
-
# A List Item is a row in a List.
|
6
|
-
class ListItem < RIQObject
|
7
|
-
attr_accessor :name
|
8
|
-
attr_accessor :field_values
|
9
|
-
attr_accessor :account_id
|
10
|
-
attr_accessor :contact_ids
|
11
|
-
attr_accessor :list_id
|
12
|
-
|
13
|
-
attr_reader :modified_date
|
14
|
-
attr_reader :created_date
|
15
|
-
|
16
|
-
def initialize(id = nil, lid: nil)
|
17
|
-
if id.is_a? Hash
|
18
|
-
super(id)
|
19
|
-
elsif id.nil? && lid.nil?
|
20
|
-
super(nil)
|
21
|
-
elsif id.nil? && !lid.nil?
|
22
|
-
super(nil)
|
23
|
-
@list_id = lid
|
24
|
-
elsif id.nil? || lid.nil?
|
25
|
-
raise RIQError, 'ObjectID and List ID are required'
|
26
|
-
else
|
27
|
-
super("#{lid}/listitems/#{id}")
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
# (see RIQObject#node)
|
32
|
-
def node
|
33
|
-
self.class.node(@list_id, @id)
|
34
|
-
end
|
35
|
-
|
36
|
-
# @note this is the only object for which you have to include two params
|
37
|
-
# @param lid [String] ListId that the lit item belongs to
|
38
|
-
# @param oid [String] ObjectId for the object
|
39
|
-
def self.node(lid = nil, oid = nil)
|
40
|
-
# weird workaround for fetching node on init
|
41
|
-
if lid.nil? && !oid.nil?
|
42
|
-
"lists/#{oid}"
|
43
|
-
else
|
44
|
-
"lists/#{lid || @list_id}/listitems/#{oid}"
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
# (see RIQObject#data)
|
49
|
-
def data
|
50
|
-
{
|
51
|
-
name: @name,
|
52
|
-
account_id: @account_id,
|
53
|
-
contact_ids: @contact_ids.flatten,
|
54
|
-
id: @id,
|
55
|
-
list_id: @list_id,
|
56
|
-
field_values: @field_values,
|
57
|
-
modified_date: @modified_date
|
58
|
-
}
|
59
|
-
end
|
60
|
-
|
61
|
-
# (see RIQObject#payload)
|
62
|
-
def payload
|
63
|
-
pld = {}
|
64
|
-
data.each do |k, v|
|
65
|
-
if k == :field_values
|
66
|
-
pld['fieldValues'] = @field_values.to_raw
|
67
|
-
elsif k['_']
|
68
|
-
pld[k.to_cam] = v
|
69
|
-
else
|
70
|
-
pld[k] = v
|
71
|
-
end
|
72
|
-
end
|
73
|
-
pld.to_json
|
74
|
-
end
|
75
|
-
|
76
|
-
# @overload field_value(key)
|
77
|
-
# @param key [String, Integer]
|
78
|
-
# @return [Array] Value of key
|
79
|
-
# @overload field_value(key, value)
|
80
|
-
# Sets key to value
|
81
|
-
# @param key [String, Integer] Key to set
|
82
|
-
# @param value [#to_s] Sets key to value
|
83
|
-
def field_value(key, value = nil)
|
84
|
-
# TODO: double check that this works with arrays of stuff
|
85
|
-
# or, have a format function that casts ints to string on save
|
86
|
-
if value.nil?
|
87
|
-
@field_values.fetch(key.to_sym, nil)
|
88
|
-
else
|
89
|
-
@field_values[key.to_sym] = value.to_s
|
90
|
-
{key.to_sym => value.to_s}
|
91
|
-
end
|
92
|
-
end
|
93
|
-
|
94
|
-
private
|
95
|
-
|
96
|
-
def init(obj = nil)
|
97
|
-
unless obj.nil?
|
98
|
-
@id = obj[:id]
|
99
|
-
@list_id = obj[:list_id]
|
100
|
-
@name = obj[:name]
|
101
|
-
@field_values = obj[:field_values] ? obj[:field_values].from_raw : {}
|
102
|
-
@account_id = obj[:account_id]
|
103
|
-
@contact_ids = obj[:contact_ids] || []
|
104
|
-
@modified_date = obj[:modified_date].cut_milis if obj[:modified_date]
|
105
|
-
@created_date = obj[:creaeted_date].cut_milis if obj[:creaeted_date]
|
106
|
-
else
|
107
|
-
@id = nil
|
108
|
-
@list_id = nil
|
109
|
-
@name = nil
|
110
|
-
@field_values = {}
|
111
|
-
@account_id = nil
|
112
|
-
@contact_ids = []
|
113
|
-
@modified_date = nil
|
114
|
-
@created_date = nil
|
115
|
-
end
|
116
|
-
self
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
require_relative 'batch_manager'
|
2
|
-
require_relative 'list_item'
|
3
|
-
|
4
|
-
module RIQ
|
5
|
-
# Special child for initializing list items, who need to include extra info.
|
6
|
-
class ListItemManager < BatchManager
|
7
|
-
def initialize(lid, page_length = 200)
|
8
|
-
raise RIQError, 'List id can\'t be nil' if lid.nil?
|
9
|
-
@list_id = lid
|
10
|
-
super(RIQ::ListItem, page_length)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
data/lib/riq/riq_obj.rb
DELETED
@@ -1,104 +0,0 @@
|
|
1
|
-
require_relative 'client'
|
2
|
-
using RIQExtensions
|
3
|
-
|
4
|
-
module RIQ
|
5
|
-
# @abstract This class should not be used directly.
|
6
|
-
# Instead, use a child such as {Contact} or {List}.
|
7
|
-
class RIQObject
|
8
|
-
|
9
|
-
|
10
|
-
attr_accessor :id
|
11
|
-
attr_reader :modified_date
|
12
|
-
|
13
|
-
# @param id [String, Hash] ObjectId or well-formatted hash of data (usually provided by another object
|
14
|
-
# @return [RIQObject] Self
|
15
|
-
def initialize(id = nil)
|
16
|
-
@client = RIQ.client
|
17
|
-
@id = id
|
18
|
-
|
19
|
-
unless @id.nil?
|
20
|
-
# data hash
|
21
|
-
if @id.is_a? Hash
|
22
|
-
# this looks dumb, could name variables better
|
23
|
-
data = @id
|
24
|
-
else
|
25
|
-
data = @client.get(node)
|
26
|
-
end
|
27
|
-
init(data.symbolize)
|
28
|
-
else
|
29
|
-
init
|
30
|
-
end
|
31
|
-
self
|
32
|
-
end
|
33
|
-
|
34
|
-
# @return [String] endpoint
|
35
|
-
def node
|
36
|
-
raise RIQError, 'This should be overwritten'
|
37
|
-
end
|
38
|
-
|
39
|
-
# @param id [String] Objectid
|
40
|
-
# @return [String] endpoint
|
41
|
-
def self.node(id = nil)
|
42
|
-
raise RIQError, 'This should be overwritten'
|
43
|
-
end
|
44
|
-
|
45
|
-
# @return [Hash] all relevant stored data
|
46
|
-
def data
|
47
|
-
raise RIQError, 'This should be overwritten'
|
48
|
-
end
|
49
|
-
|
50
|
-
# @return [String] the json representation of {#data}
|
51
|
-
def payload
|
52
|
-
pld = {}
|
53
|
-
data.each do |k, v|
|
54
|
-
if k['_']
|
55
|
-
pld[k.to_cam] = v
|
56
|
-
else
|
57
|
-
pld[k] = v
|
58
|
-
end
|
59
|
-
end
|
60
|
-
pld.to_json
|
61
|
-
end
|
62
|
-
|
63
|
-
# Creates or updates the object
|
64
|
-
def save(options = nil)
|
65
|
-
if @id.nil?
|
66
|
-
# create
|
67
|
-
init(@client.post(node, payload, options: options).symbolize)
|
68
|
-
else
|
69
|
-
# update
|
70
|
-
init(@client.put(node, payload, options: options).symbolize)
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
# Deletes the object
|
75
|
-
# @note This is IRREVERSIBLE
|
76
|
-
def delete
|
77
|
-
@client.delete(node)
|
78
|
-
end
|
79
|
-
|
80
|
-
# when you print the object
|
81
|
-
# def to_s
|
82
|
-
# JSON.pretty_generate(data)
|
83
|
-
# data
|
84
|
-
# end
|
85
|
-
|
86
|
-
# When the object itself is called or returned
|
87
|
-
def inspect
|
88
|
-
data
|
89
|
-
end
|
90
|
-
|
91
|
-
private
|
92
|
-
def init
|
93
|
-
raise RIQError, 'This should be overwritten'
|
94
|
-
end
|
95
|
-
|
96
|
-
# def exists
|
97
|
-
# if @id.nil?
|
98
|
-
# false
|
99
|
-
# else
|
100
|
-
# @client.fetch(node)
|
101
|
-
# end
|
102
|
-
# end
|
103
|
-
end
|
104
|
-
end
|
data/lib/riq/user.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
require_relative 'riq_obj'
|
2
|
-
|
3
|
-
module RIQ
|
4
|
-
# Users are represented by owners and contacts in your RelateIQ organization
|
5
|
-
class User < RIQObject
|
6
|
-
attr_accessor :name
|
7
|
-
attr_accessor :email
|
8
|
-
|
9
|
-
# (see RIQObject#node)
|
10
|
-
def node
|
11
|
-
"users/#{@id}"
|
12
|
-
end
|
13
|
-
|
14
|
-
# (see RIQObject#data)
|
15
|
-
def data
|
16
|
-
{
|
17
|
-
id: @id,
|
18
|
-
name: @name,
|
19
|
-
email: @email
|
20
|
-
}
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
def init(obj = nil)
|
25
|
-
unless obj.nil?
|
26
|
-
@id = obj[:id]
|
27
|
-
@name = obj[:name]
|
28
|
-
@email = obj[:email]
|
29
|
-
else
|
30
|
-
@id = nil
|
31
|
-
@name = nil
|
32
|
-
@email = nil
|
33
|
-
end
|
34
|
-
self
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
class << self
|
39
|
-
# Convenience method to create new Users
|
40
|
-
# @param id [String, nil] create a blank User object or
|
41
|
-
# fetch an existing one by id.
|
42
|
-
# @return [User]
|
43
|
-
def user(id = nil)
|
44
|
-
RIQ::User.new(id)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
data/riq.gemspec
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
# lib = File.expand_path('../lib', __FILE__)
|
3
|
-
# $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
|
5
|
-
Gem::Specification.new do |spec|
|
6
|
-
spec.name = 'riq'
|
7
|
-
spec.version = '0.9.1'
|
8
|
-
spec.authors = ['David Brownman']
|
9
|
-
spec.email = ['david@relateiq.com']
|
10
|
-
spec.homepage = "https://github.com/relateiq/ruby-sdk"
|
11
|
-
spec.summary = 'Ruby RIQ API client'
|
12
|
-
spec.description = 'Full featured ruby client for interacting with the RelateIQ API'
|
13
|
-
spec.license = 'MIT'
|
14
|
-
spec.files = `git ls-files -z`.split("\x0")
|
15
|
-
# spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
16
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
17
|
-
spec.require_paths = ['lib']
|
18
|
-
|
19
|
-
# 2.0 is min becuase use of refinements
|
20
|
-
spec.required_ruby_version = '>= 2.0.0'
|
21
|
-
# spec.post_install_message = 'The power of relationship intelligence is in your hands!'
|
22
|
-
|
23
|
-
# prod dependencies
|
24
|
-
spec.add_dependency 'httparty', '0.13.3'
|
25
|
-
|
26
|
-
# dev dependencies
|
27
|
-
spec.add_development_dependency 'bundler', '~> 1.7'
|
28
|
-
# spec.add_development_dependency 'rake', '~> 10.0'
|
29
|
-
end
|
data/test/test.rb
DELETED
data/test/test_account.rb
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require_relative '../lib/riq'
|
3
|
-
|
4
|
-
describe RIQ::Account do
|
5
|
-
before do
|
6
|
-
RIQ.init
|
7
|
-
# netflix account ID
|
8
|
-
@netflix = RIQ.account('54e6542fe4b01ad3b7362bc4')
|
9
|
-
@a = RIQ.account
|
10
|
-
@dat = RIQ.account({name: 'Glengarry', field_values: {'0' => 3}})
|
11
|
-
end
|
12
|
-
|
13
|
-
describe '#new' do
|
14
|
-
it 'should get account' do
|
15
|
-
@netflix.name.must_equal 'Netflix'
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'should make blank account' do
|
19
|
-
@a.wont_be_nil
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should take a data hash' do
|
23
|
-
@dat = RIQ.account({name: 'David'})
|
24
|
-
@dat.name.wont_be_nil
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
describe '#save' do
|
29
|
-
it 'should create new account' do
|
30
|
-
@a.name = 'Delete Test Inc'
|
31
|
-
@a.field_value(2, '1')
|
32
|
-
@a.save
|
33
|
-
|
34
|
-
@a.id.wont_be_nil
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "#field_value" do
|
39
|
-
it 'should fetch a field value' do
|
40
|
-
@netflix.field_value(2).wont_be_nil
|
41
|
-
@dat.field_value(0).wont_be_nil
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|