power_bi_embedded 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 065b65fb446bc18f8ba24f3184f3926e3bc2c5af94596c818527c81293b15370
4
+ data.tar.gz: e1985b72df7af1bd1bf07ea2e3f2a26ec6c43d642e95a9460b1b32aeb5a80386
5
+ SHA512:
6
+ metadata.gz: 74605142e204e3914fff85d5811ae8db4f3debe978c668e9c09ade4f53934b44cd1afdd0a7edd7f260f5ae714ed5ec3bb491a0be8952e0a77fd451d95239e5e9
7
+ data.tar.gz: 54af7a1a3c932c525521c4ab4e7a7c94542ddd4d1f68e55a321eb6c828aba12373f700150c64a58f1aabc129719131d22e8b9a3bcd86a04662880c67ebba16c0
@@ -0,0 +1,37 @@
1
+ module PowerBiEmbedded
2
+ class Authenticate < Base
3
+
4
+ BASE_URL = "https://login.windows.net/common/oauth2/token"
5
+ RESOURCE = "https://analysis.windows.net/powerbi/api"
6
+
7
+ def initialize(username: nil, password: nil, refresh_token: nil, client_id: nil, grant_type: nil)
8
+ @username = username
9
+ @password = password
10
+ @refresh_token = refresh_token
11
+ @client_id = client_id
12
+ @grant_type = grant_type
13
+ end
14
+
15
+ def call
16
+ PowerBiEmbedded::Base.post(BASE_URL, build_body, build_headers)
17
+ end
18
+
19
+ private
20
+
21
+ def build_body
22
+ {
23
+ client_id: @client_id,
24
+ grant_type: @grant_type,
25
+ resource: RESOURCE,
26
+ username: @username,
27
+ password: @password,
28
+ refresh_token: @refresh_token
29
+ }.compact
30
+ end
31
+
32
+ def build_headers
33
+ { 'Content-Type': 'application/x-www-form-urlencoded'}
34
+ end
35
+
36
+ end
37
+ end
@@ -0,0 +1,34 @@
1
+ require 'base64'
2
+ require 'json'
3
+ require 'byebug'
4
+ require 'httparty'
5
+
6
+ module PowerBiEmbedded
7
+ class Base
8
+
9
+ def self.get(endpoint, query = nil, headers = nil)
10
+ response = HTTParty.get(endpoint, headers: headers, query: query)
11
+ parse_response(response)
12
+ end
13
+
14
+ def self.post(endpoint, body = nil, headers = nil)
15
+ response = HTTParty.post(endpoint, headers: headers, body: body)
16
+ parse_response(response)
17
+ end
18
+
19
+ def self.put(endpoint, body = nil, headers = nil)
20
+ response = HTTParty.put(endpoint, headers: headers, body: body)
21
+ parse_response(response)
22
+ end
23
+
24
+ def self.delete(endpoint, headers = nil)
25
+ response = HTTParty.delete(endpoint, headers: headers)
26
+ parse_response(response)
27
+ end
28
+
29
+ def self.parse_response(response)
30
+ response.parsed_response.deep_symbolize_keys
31
+ end
32
+
33
+ end
34
+ end
@@ -0,0 +1,17 @@
1
+ module PowerBiEmbedded
2
+ class Dashboards < Base
3
+
4
+ def self.get(group_id: nil, dashboard_id: nil, access_token: nil)
5
+ url = "https://api.powerbi.com/v1.0/myorg/groups/#{group_id}/dashboards/#{dashboard_id}"
6
+
7
+ get(url, nil, { 'Authorization': "Bearer #{access_token}" })
8
+ end
9
+
10
+ def self.list(group_id: nil, access_token: nil)
11
+ url = "https://api.powerbi.com/v1.0/myorg/groups/#{group_id}/dashboards"
12
+
13
+ get(url, nil, { 'Authorization': "Bearer #{access_token}" })
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,55 @@
1
+ module PowerBiEmbedded
2
+ class EmbedToken < Base
3
+
4
+ def initialize(access_token: nil, group_id: nil, resource: nil, resource_id: nil,
5
+ tile_id: nil, dataset_id: nil, access_level: nil, identities: nil, allow_save_as: false)
6
+ @access_token = access_token
7
+ @group_id = group_id
8
+ @resource = resource
9
+ @resource_id = resource_id
10
+ @dataset_id = dataset_id
11
+ @access_level = access_level
12
+ @identities = identities
13
+ @allow_save_as = allow_save_as
14
+ @accessLevel = accessLevel
15
+ end
16
+
17
+ def call
18
+ url = send(@resource) if @resource.present?
19
+
20
+ post(url, build_body, build_headers)
21
+ end
22
+
23
+ private
24
+
25
+ def report
26
+ build_base_url + "/reports/#{@resource_id}/GenerateToken"
27
+ end
28
+
29
+ def dashboard
30
+ build_base_url + "/dashboards/#{@resource_id}/GenerateToken"
31
+ end
32
+
33
+ def tile
34
+ build_base_url + "/dashboards/#{@resource_id}/tiles/#{@tile_id}/GenerateToken"
35
+ end
36
+
37
+ def build_body
38
+ {
39
+ accessLevel: @access_level,
40
+ allowSaveAs: @allow_save_as,
41
+ datasetId: @dataset_id,
42
+ identities: @identities
43
+ }.compact
44
+ end
45
+
46
+ def build_headers
47
+ { 'Authorization': "Bearer #{@access_token}" }
48
+ end
49
+
50
+ def build_base_url
51
+ "https://api.powerbi.com/v1.0/myorg/groups/#{@group_id}"
52
+ end
53
+
54
+ end
55
+ end
@@ -0,0 +1,10 @@
1
+ module PowerBiEmbedded
2
+ class Groups < Base
3
+ BASE_URL = "https://api.powerbi.com/v1.0/myorg/groups"
4
+
5
+ def self.list(access_token: nil)
6
+ get(BASE_URL, nil, { 'Authorization': "Bearer #{access_token}" })
7
+ end
8
+
9
+ end
10
+ end
@@ -0,0 +1,17 @@
1
+ module PowerBiEmbedded
2
+ class Reports < Base
3
+
4
+ def self.get(group_id: nil, report_id: nil, access_token: nil)
5
+ url = "https://api.powerbi.com/v1.0/myorg/groups/#{group_id}/reports/#{report_id}"
6
+
7
+ get(url, nil, { 'Authorization': "Bearer #{access_token}" })
8
+ end
9
+
10
+ def self.list(group_id: nil, access_token: nil)
11
+ url = "https://api.powerbi.com/v1.0/myorg/groups/#{group_id}/reports"
12
+
13
+ get(url, nil, { 'Authorization': "Bearer #{access_token}" })
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module PowerBiEmbedded
2
+ class Tiles < Base
3
+
4
+ def self.get(group_id: nil, dashboard_id: nil, tile_id: nil, access_token: nil)
5
+ url = "https://api.powerbi.com/v1.0/myorg/groups/#{group_id}/dashboards/#{dashboard_id}/tiles/#{tile_id}"
6
+
7
+ get(url, nil, { 'Authorization': "Bearer #{access_token}" })
8
+ end
9
+
10
+ def self.list(group_id: nil, dashboard_id: nil, access_token: nil)
11
+ url = "https://api.powerbi.com/v1.0/myorg/groups/#{group_id}/dashboards/#{dashboard_id}/tiles"
12
+
13
+ get(url, nil, { 'Authorization': "Bearer #{access_token}" })
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ module PowerBiEmbedded
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,11 @@
1
+ require_relative "power_bi_embedded/version"
2
+ require_relative "power_bi_embedded/base"
3
+ require_relative "power_bi_embedded/authenticate"
4
+ require_relative "power_bi_embedded/dashboards"
5
+ require_relative "power_bi_embedded/embed_token"
6
+ require_relative "power_bi_embedded/groups"
7
+ require_relative "power_bi_embedded/reports"
8
+ require_relative "power_bi_embedded/tiles"
9
+
10
+ module PowerBiEmbedded
11
+ end
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: power_bi_embedded
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Henrique Januário
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-11-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: httparty
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.16'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.16'
27
+ - !ruby/object:Gem::Dependency
28
+ name: sqlite3
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.3'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.3'
41
+ description: ''
42
+ email:
43
+ - riquejanuario@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - lib/power_bi_embedded.rb
49
+ - lib/power_bi_embedded/authenticate.rb
50
+ - lib/power_bi_embedded/base.rb
51
+ - lib/power_bi_embedded/dashboards.rb
52
+ - lib/power_bi_embedded/embed_token.rb
53
+ - lib/power_bi_embedded/groups.rb
54
+ - lib/power_bi_embedded/reports.rb
55
+ - lib/power_bi_embedded/tiles.rb
56
+ - lib/power_bi_embedded/version.rb
57
+ homepage: https://github.com/henriqjanuario/power-bi-embedded
58
+ licenses:
59
+ - MIT
60
+ metadata: {}
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: 2.5.0
70
+ required_rubygems_version: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ requirements: []
76
+ rubyforge_project:
77
+ rubygems_version: 2.7.7
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: Gem to consume Microsoft's PowerBiEmbedded RESTfull API
81
+ test_files: []