infogram-ruby 0.0.4 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 673b209eab1d0ab5e1cbc5e37c1a0920718e7ca4
4
- data.tar.gz: a21a7942c9f0371b6ae3a4287a14d136949e6463
3
+ metadata.gz: 0a23c1315dba87443649183c1d56c7131b87a9ec
4
+ data.tar.gz: 61fb6428f5166f7bc551bf8c8a8a50558ac54e4b
5
5
  SHA512:
6
- metadata.gz: 42c6e5cbe3ebef37551ed03144061ffadb3bb71177fd32c9002ac9c4097cd6491391e44ba45d020dc54c31e11aed435106b943fbc81b8e569d0c43817d5425d7
7
- data.tar.gz: 0dd4da9af12eff3b18dc916546208709934d8585dd296eb213d790b8ba8e23adc3da5d5c158d9110768155d0fc684dd0cccaa3b9fa525e26eb1968bf56d7a9d6
6
+ metadata.gz: 5c6928409104494f998b9711bb655fc63f5668cb396bb1e7c64ed8a19635c65e7a8ae818abd215f89ff7e0130b1c56ed9c07425ca1f97a4e97e6e43941a1d4f0
7
+ data.tar.gz: f6cc7bd51b25d90e05e994e46e276d249755066677486da4540b5129b1134bcf0f2d90c4e148291d6c7f7c2c481424befcb44f7881ad101a5f265604a0a90119
data/.gitignore CHANGED
@@ -1,14 +1,7 @@
1
- /.bundle/
2
- /.yardoc
3
- /Gemfile.lock
4
- /_yardoc/
5
- /coverage/
6
- /doc/
7
- /pkg/
8
- /spec/reports/
9
- /tmp/
10
- *.bundle
11
- *.so
12
- *.o
13
- *.a
14
- mkmf.log
1
+ *~
2
+ .*
3
+ pkg/*
4
+ doc/*
5
+ Gemfile.lock
6
+ *.gem
7
+ docs/_build
data/README.md CHANGED
@@ -4,25 +4,16 @@ Ruby library for Infogr.am
4
4
 
5
5
  ## Installation
6
6
 
7
- Add this line to your application's Gemfile:
8
-
9
- ```ruby
10
- gem 'infogram-ruby'
11
- ```
12
-
13
- And then execute:
14
-
15
- $ bundle
16
-
17
- Or install it yourself as:
18
-
19
7
  $ gem install infogram-ruby
20
8
 
21
9
  ## Usage
22
10
  ```ruby
11
+ require 'infogram-ruby'
12
+
23
13
  infogram = Infogram.new('API_KEY', 'API_SECRET')
24
14
  infogram.get_themes
25
15
  ```
16
+
26
17
  ## Example response
27
18
  ```json
28
19
  [
@@ -31,6 +22,11 @@ infogram.get_themes
31
22
  "title": "twitter",
32
23
  "thumb": "https://infogr.am/i/templates/61/twitter-thumbnail-small.png"
33
24
  },
25
+ {
26
+ "id": 44,
27
+ "title": "Megaphone",
28
+ "thumb": "https://infogr.am/i/templates/S/PRO-megaphone.png"
29
+ },
34
30
  {
35
31
  "id": 34,
36
32
  "title": "Asketic-new",
@@ -4,9 +4,9 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'infogram-ruby'
7
- s.version = '0.0.4'
7
+ s.version = '0.0.5'
8
8
  s.authors = ['Maksim Berjoza']
9
- s.email = ['maksim@infogr.am']
9
+ s.email = ['torbjon@gmail.com']
10
10
  s.summary = %q{Infogr.am Ruby SDK}
11
11
  s.description = %q{Ruby library for Infogr.am}
12
12
  s.homepage = 'https://github.com/infogram/infogram-ruby'
@@ -3,18 +3,20 @@ require 'json'
3
3
  require 'cgi'
4
4
 
5
5
  class Infogram
6
+ API_URL = 'https://infogr.am/service/v1'
7
+
6
8
  attr_accessor :api_key, :api_secret, :api_url
7
9
 
8
10
  def initialize(api_key, api_secret)
9
11
  @api_key = api_key
10
12
  @api_secret = api_secret
11
- @api_url = 'https://infogr.am/service/v1'
13
+ @api_url = API_URL
12
14
  end
13
15
 
14
16
  def decode_params(params)
15
17
  params.keys.sort.map{ |k|
16
- value = ("#{k}" == 'content') ? params[k].to_json : params[k]
17
- "#{k}=#{url_escaping(value)}"
18
+ value = (k.to_s == 'content') ? url_escaping(params[k].to_json) : params[k]
19
+ "#{k}=#{value}"
18
20
  }.join('&')
19
21
  end
20
22
 
@@ -25,21 +27,29 @@ class Infogram
25
27
  end
26
28
 
27
29
  def url_escaping(string)
28
- CGI.escape(string.to_s).gsub('+', '%20')
30
+ CGI.escape(string).gsub('+', '%20')
29
31
  end
30
32
 
33
+ # themes
31
34
  def get_themes(opts={})
32
35
  opts[:api_key] = @api_key
33
36
  opts[:api_sig] = signature('GET', 'themes', opts)
34
37
  HTTParty.get("#{@api_url}/themes", query: opts)
35
38
  end
36
39
 
40
+ # infographics
37
41
  def get_infographics(opts={})
38
42
  opts[:api_key] = @api_key
39
- opts[:api_sig] = signature('GET', 'infographics', opts)
43
+ opts[:api_sig] = signature('GET', "infographics", opts)
40
44
  HTTParty.get("#{@api_url}/infographics", query: opts)
41
45
  end
42
46
 
47
+ def get_infographic(id, opts={})
48
+ opts[:api_key] = @api_key
49
+ opts[:api_sig] = signature('GET', "infographics/#{id}", opts)
50
+ HTTParty.get("#{@api_url}/infographics/#{id}", query: opts)
51
+ end
52
+
43
53
  def create_infographic(opts={})
44
54
  opts[:api_key] = @api_key
45
55
  opts[:api_sig] = signature('POST', 'infographics', opts)
@@ -0,0 +1,10 @@
1
+ {
2
+ "id": "d819d9b7-67fb-40ec-9400-d63cc209aea8",
3
+ "title": "sample infographic 2",
4
+ "theme_id": 32,
5
+ "published": true,
6
+ "thumbnail_url": "https://s3-eu-west-1.amazonaws.com/infogram-thumbs-200/d819d9b7-67fb-40ec-9400-d63cc209aea8.jpg",
7
+ "date_modified": "2014-12-19T09:32:52.000Z",
8
+ "url": "https://infogr.am/sample-infographic-28",
9
+ "embed_responsive": "<script id=\"infogram_0_sample-infographic-28\" src=\"//e.infogr.am/js/embed.js?zni\" type=\"text/javascript\"></script><div style=\"width:100%;border-top:1px solid #acacac;padding-top:3px;font-family:Arial;font-size:10px;text-align:center;\"><a target=\"_blank\" href=\"https://infogr.am/sample-infographic-28\" style=\"color:#acacac;text-decoration:none;\">sample infographic 2</a> |<a style=\"color:#acacac;text-decoration:none;\" href=\"https://infogr.am\" target=\"_blank\">Create infographics</a></div>"
10
+ }
@@ -0,0 +1,21 @@
1
+ [
2
+ {
3
+ "id": "309b6f66-83d2-437e-84d3-edb76035b771",
4
+ "title": "Sample infographic 1",
5
+ "theme_id": 29,
6
+ "published": false,
7
+ "thumbnail_url": "https://s3-eu-west-1.amazonaws.com/infogram-thumbs-200/309b6f66-83d2-437e-84d3-edb76035b771.jpg",
8
+ "date_modified": "2014-12-09T13:28:36.000Z",
9
+ "user_profile": "infogram_demo"
10
+ }, {
11
+ "id": "d819d9b7-67fb-40ec-9400-d63cc209aea8",
12
+ "title": "sample infographic 2",
13
+ "theme_id": 32,
14
+ "published": true,
15
+ "thumbnail_url": "https://s3-eu-west-1.amazonaws.com/infogram-thumbs-200/d819d9b7-67fb-40ec-9400-d63cc209aea8.jpg",
16
+ "date_modified": "2014-12-19T09:32:52.000Z",
17
+ "user_profile": "infogram_demo",
18
+ "url": "https://infogr.am/sample-infographic-28",
19
+ "embed_responsive": "<script id=\"infogram_0_sample-infographic-28\" src=\"//e.infogr.am/js/embed.js?xvj\" type=\"text/javascript\"></script><div style=\"width:100%;border-top:1px solid #acacac;padding-top:3px;font-family:Arial;font-size:10px;text-align:center;\"><a target=\"_blank\" href=\"https://infogr.am/sample-infographic-28\" style=\"color:#acacac;text-decoration:none;\">sample infographic 2</a> |<a style=\"color:#acacac;text-decoration:none;\" href=\"https://infogr.am\" target=\"_blank\">Create infographics</a></div>"
20
+ }
21
+ ]
@@ -0,0 +1,17 @@
1
+ [
2
+ {
3
+ "id":61,
4
+ "title":"twitter",
5
+ "thumbnail_url":"https://infogr.am/i/templates/61/twitter-thumbnail-small.png"
6
+ },
7
+ {
8
+ "id":44,
9
+ "title":"Megaphone",
10
+ "thumbnail_url":"https://infogr.am/i/templates/S/PRO-megaphone.png"
11
+ },
12
+ {
13
+ "id":34,
14
+ "title":"Asketic-new",
15
+ "thumbnail_url":"https://infogr.am/i/templates/S/asketic-black.png"
16
+ }
17
+ ]
data/spec/helper.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'infogram'
1
+ require 'infogram-ruby'
2
2
  require 'rspec'
3
3
  require 'webmock/rspec'
4
4
 
@@ -13,3 +13,19 @@ end
13
13
  def infogram_client(key, secret)
14
14
  Infogram.new(key, secret)
15
15
  end
16
+
17
+ def fixture(file)
18
+ File.read('spec/fixtures/' + file)
19
+ end
20
+
21
+ def with_fixture(file)
22
+ { body: fixture(file), headers: { content_type: 'application/json; charset=utf-8' } }
23
+ end
24
+
25
+ def stub_get(path)
26
+ stub_request(:get, /.*#{Infogram::API_URL + '/' + path}*/)
27
+ end
28
+
29
+ def stub_post(path)
30
+ stub_request(:post, /.*#{Infogram::API_URL + '/' + path}*/)
31
+ end
@@ -0,0 +1,63 @@
1
+ require 'helper'
2
+
3
+ describe 'Infogram' do
4
+ let (:api_key) { 'nMECGhmHe9' }
5
+ let (:api_secret) { 'da5xoLrCCx' }
6
+ let (:client) { infogram_client(api_key, api_secret) }
7
+ let (:params) { {
8
+ content: [
9
+ {
10
+ type: 'h1',
11
+ text: 'Hello infogr.am'
12
+ }
13
+ ],
14
+ theme_id: 45,
15
+ publish: false,
16
+ title: 'Hello'
17
+ }
18
+ }
19
+
20
+ context 'Signature' do
21
+ let (:encoded_params) { 'api_key=nMECGhmHe9&content=%5B%7B%22type%22%3A%22h1%22%2C%22text%22%3A%22Hello%20infogr.am%22%7D%5D&publish=false&theme_id=45&title=Hello' }
22
+
23
+ it 'should encode params' do
24
+ params[:api_key] = api_key
25
+ expect(client.decode_params(params)).to eq(encoded_params)
26
+ end
27
+
28
+ it 'should generate signature' do
29
+ params[:api_key] = api_key
30
+ signature = client.signature('post', 'infographics', params)
31
+ expect(signature).to eq('bqwCqAk1TWDYNy3eqV0BiNuIERQ=')
32
+ end
33
+ end
34
+
35
+ context 'Themes' do
36
+ it 'should return themes list' do
37
+ stub_get('themes').to_return(with_fixture('themes.json'))
38
+ themes = client.get_themes()
39
+ expect(themes[0]['id']).to eq(61)
40
+ expect(themes[1]['title']).to eq('Megaphone')
41
+ end
42
+ end
43
+
44
+ context 'Infographic' do
45
+ it 'GET infographics' do
46
+ stub_get('infographics').to_return(with_fixture('infographics.json'))
47
+ ig = client.get_infographics
48
+ expect(ig[1]['id']).to eq('d819d9b7-67fb-40ec-9400-d63cc209aea8')
49
+ end
50
+
51
+ it 'GET infographics/:id' do
52
+ stub_get('infographics').to_return(with_fixture('infographic.json'))
53
+ ig = client.get_infographic('d819d9b7-67fb-40ec-9400-d63cc209aea8')
54
+ expect(ig['title']).to eq('sample infographic 2')
55
+ end
56
+
57
+ it 'POST infographics' do
58
+ stub_post('infographics').to_return(with_fixture('infographic.json'))
59
+ ig = client.create_infographic(params)
60
+ expect(ig['title']).to eq('sample infographic 2')
61
+ end
62
+ end
63
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: infogram-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maksim Berjoza
@@ -68,7 +68,7 @@ dependencies:
68
68
  version: '1.8'
69
69
  description: Ruby library for Infogr.am
70
70
  email:
71
- - maksim@infogr.am
71
+ - torbjon@gmail.com
72
72
  executables: []
73
73
  extensions: []
74
74
  extra_rdoc_files: []
@@ -81,9 +81,12 @@ files:
81
81
  - README.md
82
82
  - Rakefile
83
83
  - infogram-ruby.gemspec
84
- - lib/infogram.rb
84
+ - lib/infogram-ruby.rb
85
+ - spec/fixtures/infographic.json
86
+ - spec/fixtures/infographics.json
87
+ - spec/fixtures/themes.json
85
88
  - spec/helper.rb
86
- - spec/infogram_spec.rb
89
+ - spec/infogram-ruby_spec.rb
87
90
  homepage: https://github.com/infogram/infogram-ruby
88
91
  licenses:
89
92
  - MIT
@@ -109,5 +112,8 @@ signing_key:
109
112
  specification_version: 4
110
113
  summary: Infogr.am Ruby SDK
111
114
  test_files:
115
+ - spec/fixtures/infographic.json
116
+ - spec/fixtures/infographics.json
117
+ - spec/fixtures/themes.json
112
118
  - spec/helper.rb
113
- - spec/infogram_spec.rb
119
+ - spec/infogram-ruby_spec.rb
@@ -1,34 +0,0 @@
1
- require 'helper'
2
-
3
- describe 'Infogram' do
4
- let (:api_key) { 'nMECGhmHe9' }
5
- let (:api_secret) { 'da5xoLrCCx' }
6
- let (:client) { infogram_client(api_key, api_secret) }
7
- let (:encoded_params) { 'content=%5B%7B%22type%22%3A%22h1%22%2C%22text%22%3A%22Hello%20infogr.am%22%7D%5D&key=nMECGhmHe9&publish=false&template=45&title=Hello' }
8
- let (:params) { {
9
- template: 45,
10
- content: [
11
- {
12
- type: 'h1',
13
- text: 'Hello infogr.am'
14
- }
15
- ],
16
- key: api_key,
17
- publish: false,
18
- title: 'Hello'
19
- }
20
- }
21
-
22
- it 'should encode params' do
23
- expect(client.decode_params(params)).to eq(encoded_params)
24
- end
25
-
26
- it 'should generate signature' do
27
- signature = client.signature('post', 'infographics', params)
28
- expect(signature).to eq('nI2LXdDhKNf7mtdgCHflrcMSluY=')
29
- end
30
-
31
- # it 'should return themes list' do
32
- # client.get_themes()
33
- # end
34
- end