ringcentral-avatars 0.1.0 → 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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -1
- data/README.md +13 -6
- data/lib/ringcentral-avatars.rb +3 -3
- data/lib/ringcentral-avatars/creator.rb +45 -12
- metadata +22 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ddb51ed74a787bcf1d66710f68078c96b8ed57f
|
4
|
+
data.tar.gz: 9632d38f8214ceb65d443571e74d7ad784a125f6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d3389e05df79a6c3b8618fec0be7b55c3005147c1f9543181faa7e5939bc5f096a903d98484cca2a841be7adab0598b227c23c94b365e06a03b7e166bbd38186
|
7
|
+
data.tar.gz: d924730e79e29bb6e71a14f7cbf99cc25ba69c36bcb9413b047f3da49ac808cf08395e197e65ff563be747eb8ae745ad74b56410b86d9b5eeb08465087465855
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
---------
|
3
|
-
- **2016-10-
|
3
|
+
- **2016-10-23**: 0.2.0
|
4
|
+
- Add avatar customization options
|
5
|
+
- Update avatar URLs method signature for options
|
6
|
+
- **2016-10-23**: 0.1.0
|
4
7
|
- Update module name
|
5
8
|
- Update method signatures for options
|
6
9
|
- **2016-10-22**: 0.0.1
|
data/README.md
CHANGED
@@ -19,16 +19,20 @@ This library will build RingCentral avatars using Gmail-like initial avatars. It
|
|
19
19
|
* specific extensions
|
20
20
|
* authorized user extension only
|
21
21
|
|
22
|
-
|
22
|
+
By default, the images will look like the following in the RingCentral softphone:
|
23
23
|
|
24
24
|

|
25
25
|
|
26
|
+
This library uses [Avatarly](https://github.com/lucek/avatarly) to generate the avatars and can pass through any avatar option for customization purposes.
|
27
|
+
|
26
28
|
## Pre-requisites
|
27
29
|
|
28
|
-
*
|
29
|
-
*
|
30
|
+
* ImageMagick
|
31
|
+
* A RingCentral account (production or sandbox)
|
30
32
|
* A RingCentral administrator account is necessary to update profile images for others
|
31
33
|
|
34
|
+
Test first in sandbox. Your app needs to be graduated in order to run against your production account.
|
35
|
+
|
32
36
|
## Installation
|
33
37
|
|
34
38
|
```bash
|
@@ -43,15 +47,18 @@ require 'ringcentral_sdk'
|
|
43
47
|
|
44
48
|
client = RingCentralSdk.new [...]
|
45
49
|
|
46
|
-
avatars = RingCentral::Avatars.new client
|
50
|
+
avatars = RingCentral::Avatars.new client # Default options
|
51
|
+
avatars = RingCentral::Avatars.new client, avatar_opts: {font_size: 250} # Avatarly options
|
47
52
|
|
48
53
|
avatars.create_defaults # create default avatars only
|
49
54
|
avatars.create_all # create all avatars, overwriting existing avatars
|
50
55
|
|
51
|
-
avatars.create_mine # does not overwrite user avatar
|
52
|
-
avatars.create_mine overwrite: true # overwrite existing user
|
56
|
+
avatars.create_mine # does not overwrite existing user avatar
|
57
|
+
avatars.create_mine overwrite: true # overwrite existing user avatar
|
53
58
|
```
|
54
59
|
|
60
|
+
See [Avatarly](https://github.com/lucek/avatarly) for avatar customization options. The default avatar size is `600`.
|
61
|
+
|
55
62
|
### Change Log
|
56
63
|
|
57
64
|
See [CHANGELOG.md](CHANGELOG.md)
|
data/lib/ringcentral-avatars.rb
CHANGED
@@ -2,11 +2,11 @@ require 'ringcentral-avatars/creator'
|
|
2
2
|
|
3
3
|
module RingCentral
|
4
4
|
module Avatars
|
5
|
-
VERSION = '0.
|
5
|
+
VERSION = '0.2.0'
|
6
6
|
|
7
7
|
class << self
|
8
|
-
def new(client)
|
9
|
-
RingCentral::Avatars::Creator.new client
|
8
|
+
def new(client, opts = {})
|
9
|
+
RingCentral::Avatars::Creator.new client, opts
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'avatarly'
|
2
2
|
require 'faraday'
|
3
|
+
require 'mime/types'
|
3
4
|
require 'ringcentral_sdk'
|
4
5
|
require 'tempfile'
|
5
6
|
|
@@ -8,14 +9,30 @@ module RingCentral
|
|
8
9
|
class Creator
|
9
10
|
DEFAULT_SIZE = 600
|
10
11
|
|
12
|
+
attr_accessor :avatar_opts
|
11
13
|
attr_accessor :client
|
12
14
|
attr_accessor :extensions
|
13
15
|
|
14
|
-
|
16
|
+
##
|
17
|
+
# Requires RingCentralSdk instance
|
18
|
+
# `:avatar_opts` is optional to pass-through options for Avatarly
|
19
|
+
def initialize(client, opts = {})
|
15
20
|
@client = client
|
21
|
+
@avatar_opts = build_avatar_opts opts[:avatar_opts]
|
16
22
|
load_extensions
|
17
23
|
end
|
18
24
|
|
25
|
+
def build_avatar_opts(avatar_opts = {})
|
26
|
+
avatar_opts = {} unless avatar_opts.is_a? Hash
|
27
|
+
unless avatar_opts.key? :size
|
28
|
+
avatar_opts[:size] = DEFAULT_SIZE
|
29
|
+
end
|
30
|
+
unless avatar_opts.key? :format
|
31
|
+
avatar_opts[:format] = 'png'
|
32
|
+
end
|
33
|
+
return avatar_opts
|
34
|
+
end
|
35
|
+
|
19
36
|
##
|
20
37
|
# Convenience method for creating default avatars for all extensions
|
21
38
|
# Defaults to not overwriting existing avatars
|
@@ -39,9 +56,10 @@ module RingCentral
|
|
39
56
|
# Convenience method for creating avatar for authorized extension
|
40
57
|
# Defaults to not overwriting existing avatar
|
41
58
|
def create_mine(opts = {})
|
42
|
-
|
43
|
-
create_avatar
|
59
|
+
res_ext = @client.http.get 'account/~/extension/~'
|
60
|
+
res_av = create_avatar res_ext.body, opts
|
44
61
|
load_extensions
|
62
|
+
res_av
|
45
63
|
end
|
46
64
|
|
47
65
|
##
|
@@ -52,7 +70,7 @@ module RingCentral
|
|
52
70
|
return if has_avatar(ext) && !opts[:overwrite]
|
53
71
|
avatar_temp = get_avatar_tmp_file ext
|
54
72
|
url = "account/~/extension/#{ext['id']}/profile-image"
|
55
|
-
image = Faraday::UploadIO.new
|
73
|
+
image = Faraday::UploadIO.new avatar_temp.path, avatar_mime_type
|
56
74
|
@client.http.put url, image: image
|
57
75
|
end
|
58
76
|
|
@@ -64,8 +82,8 @@ module RingCentral
|
|
64
82
|
end
|
65
83
|
|
66
84
|
def get_avatar_tmp_file(ext)
|
67
|
-
avatar_blob = Avatarly.generate_avatar(ext['name'],
|
68
|
-
avatar_temp = Tempfile.new(['avatar',
|
85
|
+
avatar_blob = Avatarly.generate_avatar(ext['name'], @avatar_opts)
|
86
|
+
avatar_temp = Tempfile.new(['avatar', avatar_extension])
|
69
87
|
avatar_temp.binmode
|
70
88
|
avatar_temp.write(avatar_blob)
|
71
89
|
avatar_temp.flush
|
@@ -80,26 +98,41 @@ module RingCentral
|
|
80
98
|
##
|
81
99
|
# Returns a list of avatar URLs which can be useful for testing purposes
|
82
100
|
# Adding the current access token is optional
|
83
|
-
def avatar_urls(
|
101
|
+
def avatar_urls(opts = {})
|
102
|
+
opts[:include_token] = false unless opts.key? :include_token
|
84
103
|
urls = []
|
85
104
|
@extensions.extensions_hash.keys.sort.each do |ext_id|
|
86
105
|
ext = @extensions.extensions_hash[ext_id]
|
87
|
-
urls.push avatar_url(ext,
|
106
|
+
urls.push avatar_url(ext, opts)
|
88
107
|
end
|
89
108
|
return urls
|
90
109
|
end
|
91
110
|
|
92
|
-
def my_avatar_url(
|
111
|
+
def my_avatar_url(opts = {})
|
112
|
+
opts[:include_token] = false unless opts.key? :include_token
|
93
113
|
res = @client.http.get 'account/~/extension/~'
|
94
|
-
avatar_url(res.body,
|
114
|
+
avatar_url(res.body, opts)
|
95
115
|
end
|
96
116
|
|
97
|
-
def avatar_url(ext,
|
117
|
+
def avatar_url(ext, opts = {})
|
118
|
+
opts[:include_token] = false unless opts.key? :include_token
|
98
119
|
token = @client.token.to_hash[:access_token]
|
99
120
|
url = ext['profileImage']['uri']
|
100
|
-
url += "?access_token=#{token}" if include_token
|
121
|
+
url += "?access_token=#{token}" if opts[:include_token]
|
101
122
|
return url
|
102
123
|
end
|
124
|
+
|
125
|
+
def avatar_mime_type
|
126
|
+
types = MIME::Types.type_for @avatar_opts[:format]
|
127
|
+
if types.length == 0
|
128
|
+
raise "Unknown avatar format: #{@avatar_opts[:format]}"
|
129
|
+
end
|
130
|
+
return types[0].to_s
|
131
|
+
end
|
132
|
+
|
133
|
+
def avatar_extension
|
134
|
+
".#{@avatar_opts[:format]}"
|
135
|
+
end
|
103
136
|
end
|
104
137
|
end
|
105
138
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ringcentral-avatars
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- John Wang
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-10-
|
11
|
+
date: 2016-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avatarly
|
@@ -50,6 +50,26 @@ dependencies:
|
|
50
50
|
- - ">="
|
51
51
|
- !ruby/object:Gem::Version
|
52
52
|
version: '0.9'
|
53
|
+
- !ruby/object:Gem::Dependency
|
54
|
+
name: mime-types
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
56
|
+
requirements:
|
57
|
+
- - "~>"
|
58
|
+
- !ruby/object:Gem::Version
|
59
|
+
version: '3.0'
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '3.1'
|
63
|
+
type: :runtime
|
64
|
+
prerelease: false
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '3.0'
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '3.1'
|
53
73
|
- !ruby/object:Gem::Dependency
|
54
74
|
name: ringcentral_sdk
|
55
75
|
requirement: !ruby/object:Gem::Requirement
|