bwapi 1.0.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.
Files changed (61) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.travis.yml +10 -0
  4. data/Gemfile +6 -0
  5. data/LICENCE.md +20 -0
  6. data/README.md +15 -0
  7. data/bin/bwapi +2 -0
  8. data/bwapi.gemspec +26 -0
  9. data/lib/bwapi.rb +28 -0
  10. data/lib/bwapi/authentication.rb +42 -0
  11. data/lib/bwapi/client.rb +54 -0
  12. data/lib/bwapi/client/admin.rb +35 -0
  13. data/lib/bwapi/client/admin/become.rb +21 -0
  14. data/lib/bwapi/client/admin/search.rb +41 -0
  15. data/lib/bwapi/client/admin/sub_clients.rb +109 -0
  16. data/lib/bwapi/client/admin/users.rb +95 -0
  17. data/lib/bwapi/client/admin/users/sharing.rb +35 -0
  18. data/lib/bwapi/client/brandwatch.rb +33 -0
  19. data/lib/bwapi/client/brandwatch/become.rb +19 -0
  20. data/lib/bwapi/client/brandwatch/client_modules.rb +26 -0
  21. data/lib/bwapi/client/client.rb +22 -0
  22. data/lib/bwapi/client/error_codes.rb +14 -0
  23. data/lib/bwapi/client/filters.rb +14 -0
  24. data/lib/bwapi/client/logout.rb +24 -0
  25. data/lib/bwapi/client/me.rb +42 -0
  26. data/lib/bwapi/client/oauth.rb +78 -0
  27. data/lib/bwapi/client/ping.rb +42 -0
  28. data/lib/bwapi/client/projects.rb +94 -0
  29. data/lib/bwapi/client/projects/categories.rb +70 -0
  30. data/lib/bwapi/client/projects/data.rb +62 -0
  31. data/lib/bwapi/client/projects/data_download.rb +49 -0
  32. data/lib/bwapi/client/projects/facebook_queries.rb +55 -0
  33. data/lib/bwapi/client/projects/queries.rb +99 -0
  34. data/lib/bwapi/client/projects/queries/backfill.rb +63 -0
  35. data/lib/bwapi/client/projects/queries/date_range.rb +67 -0
  36. data/lib/bwapi/client/projects/queries/mentions.rb +53 -0
  37. data/lib/bwapi/client/projects/query_groups.rb +70 -0
  38. data/lib/bwapi/client/projects/sharing.rb +57 -0
  39. data/lib/bwapi/client/projects/signals.rb +39 -0
  40. data/lib/bwapi/client/projects/summary.rb +21 -0
  41. data/lib/bwapi/client/projects/tags.rb +61 -0
  42. data/lib/bwapi/client/projects/users.rb +17 -0
  43. data/lib/bwapi/client/projects/workflow.rb +17 -0
  44. data/lib/bwapi/client/query_validation.rb +27 -0
  45. data/lib/bwapi/client/sso.rb +18 -0
  46. data/lib/bwapi/client/test_search.rb +14 -0
  47. data/lib/bwapi/client/user.rb +58 -0
  48. data/lib/bwapi/client/user/notifications.rb +36 -0
  49. data/lib/bwapi/configuration.rb +59 -0
  50. data/lib/bwapi/connection.rb +33 -0
  51. data/lib/bwapi/error.rb +42 -0
  52. data/lib/bwapi/request.rb +93 -0
  53. data/lib/bwapi/version.rb +3 -0
  54. data/lib/faraday/response/brandwatch_error.rb +25 -0
  55. data/lib/faraday/utils/utils.rb +25 -0
  56. data/spec/bwapi/authentication_spec.rb +57 -0
  57. data/spec/bwapi/client_spec.rb +205 -0
  58. data/spec/bwapi_spec.rb +23 -0
  59. data/spec/fixtures/.netrc +3 -0
  60. data/spec/helper.rb +12 -0
  61. metadata +178 -0
@@ -0,0 +1,95 @@
1
+ require 'bwapi/client/admin/users/sharing'
2
+
3
+ module BWAPI
4
+ class Client
5
+ module Admin
6
+ module Clients
7
+ module Users
8
+
9
+ # Get all users for client
10
+ #
11
+ # @param id [Integer] Id of the client
12
+ # @param opts [Hash] options hash of parameters
13
+ # @option opts [Integer] page Page of projects to retrieve
14
+ # @option opts [Integer] pageSize Results per page of results
15
+ # @return [Hashie::Mash] All client users
16
+ def client_users id, opts={}
17
+ get "admin/clients/#{id}/users", opts
18
+ end
19
+
20
+ # Get a specific user in client
21
+ #
22
+ # @param client_id [Integer] Id of the client
23
+ # @param user_id [Integer] Id of the user
24
+ # @return [Hashie::Mash] Specific client user
25
+ def get_client_user client_id, user_id
26
+ get "admin/clients/#{client_id}/users/#{user_id}"
27
+ end
28
+ alias :get_user :get_client_user
29
+
30
+
31
+ # Create a new client user
32
+ #
33
+ # @param id [Integer] Id of the client
34
+ # @param opts [Hash] options Hash of parameters
35
+ # @option opts [Integer] id Id of the user
36
+ # @option opts [Hash] tags The users assigned tags
37
+ # @option opts [String] passwordConfirmation The confirmed password
38
+ # @option opts [Boolean] enabled The status of the user
39
+ # @option opts [String] lastName The last name of the user
40
+ # @option opts [String] phone The users phone number
41
+ # @option opts [String] department The users department
42
+ # @option opts [String] job The users job
43
+ # @option opts [String] messenger The users IM details
44
+ # @option opts [String] password The password of the user
45
+ # @option opts [Integer] clientId The users client id
46
+ # @option opts [String] username The users username
47
+ # @option opts [String] address The users address
48
+ # @option opts [String] uiRole The users ui role
49
+ # @option opts [Array] apiRole The users api role
50
+ # @option opts [String] firstName The users first name
51
+ # @option opts [String] mobile The users mobile number
52
+ # @option opts [Date] creationDate Date the user was created on
53
+ # @return [Hashie::Mash] New user
54
+ def create_client_user id, opts
55
+ post "admin/clients/#{id}/users", opts
56
+ end
57
+ alias :create_user :create_client_user
58
+
59
+ # Update an existing client user
60
+ #
61
+ # @param client_id [Integer] Id of the client
62
+ # @param user_id [Integer] Id of the user
63
+ # @param opts [Hash] options Hash of parameters
64
+ # @option opts [Integer] id Id of the user
65
+ # @option opts [Hash] tags The users assigned tags
66
+ # @option opts [String] passwordConfirmation The confirmed password
67
+ # @option opts [Boolean] enabled The status of the user
68
+ # @option opts [String] lastName The last name of the user
69
+ # @option opts [String] phone The users phone number
70
+ # @option opts [String] department The users department
71
+ # @option opts [String] job The users job
72
+ # @option opts [String] messenger The users IM details
73
+ # @option opts [String] password The password of the user
74
+ # @option opts [Integer] clientId The users client id
75
+ # @option opts [String] username The users username
76
+ # @option opts [String] address The users address
77
+ # @option opts [String] uiRole The users ui role
78
+ # @option opts [Array] apiRole The users api role
79
+ # @option opts [String] firstName The users first name
80
+ # @option opts [String] mobile The users mobile number
81
+ # @option opts [Date] creationDate Date the user was created on
82
+ # @return [Hashie::Mash] New user
83
+ def update_client_user client_id, user_id, opts
84
+ put "admin/clients/#{client_id}/users/#{user_id}", opts
85
+ end
86
+ alias :update_user :update_client_user
87
+
88
+
89
+ include BWAPI::Client::Admin::Clients::Users::Sharing
90
+
91
+ end
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,35 @@
1
+ module BWAPI
2
+ class Client
3
+ module Admin
4
+ module Clients
5
+ module Users
6
+ module Sharing
7
+
8
+ # Get a list of project shares for user
9
+ #
10
+ # @param client_id [Integer] Id of the client
11
+ # @param user_id [Integer] Id of the user
12
+ # @return [Hashie::Mash] All shares for client user
13
+ def client_users_sharing client_id, user_id
14
+ get "admin/client/#{client_id}/users/#{user_id}/sharing"
15
+ end
16
+ alias :users_sharing :client_users_sharing
17
+
18
+ # Update a list of project shares for user
19
+ #
20
+ # @param client_id [Integer] Id of the client
21
+ # @param user_id [Integer] Id of the user
22
+ # @param opts [Hash] options Hash of parameters
23
+ # @option opts [Array] ProjectShareDTO The shares of the user
24
+ # @return [Hashie::Mash] Updated shares for client user
25
+ def update_client_users_sharing client_id, user_id, opts
26
+ get "admin/client/#{client_id}/users/#{user_id}/sharing", opts
27
+ end
28
+ alias :update_users_sharing :update_client_users_sharing
29
+
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ require 'bwapi/client/brandwatch/become'
2
+ require 'bwapi/client/brandwatch/client_modules'
3
+
4
+ module BWAPI
5
+ class Client
6
+ module Brandwatch
7
+
8
+ # Create a new data download in project
9
+ #
10
+ # @param id [Integer] Id of project
11
+ # @param opts [Hash] options hash of parameters
12
+ # @option opts [Integer] projectId Id of the project
13
+ # @option opts [Integer] id Id of the data download
14
+ # @option opts [Integer] queryId Id of the query
15
+ # @option opts [Int] percentComplete The percentage complete of data download
16
+ # @option opts [String] status The status of the download
17
+ # @option opts [String] queryName The query name of the data download
18
+ # @option opts [Date] endDate The end date of the data download
19
+ # @option opts [Date] requestDate The request date of the data download
20
+ # @option opts [String] downloadLinkXLS The link to download the XLS format
21
+ # @option opts [String] downloadLinkCSV The link to download the CSV format
22
+ # @option opts [Array] additionalColumns The additional columns for the data download
23
+ # @return [Hashie::Mash] New data download
24
+ def brandwatch_data_download id, opts
25
+ post "brandwatch/#{project_id}/datadownload", opts
26
+ end
27
+
28
+ include BWAPI::Client::Brandwatch::Become
29
+ include BWAPI::Client::Brandwatch::ClientModules
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,19 @@
1
+ module BWAPI
2
+ class Client
3
+ module Brandwatch
4
+ module Become
5
+
6
+ # Become user
7
+ #
8
+ # @note must be a super admin user
9
+ #
10
+ # @param id [Integer] The user id
11
+ # @return [Hashie::Mash] User credentials
12
+ def brandwatch_become id
13
+ get "brandwatch/become/#{id}"
14
+ end
15
+
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,26 @@
1
+ module BWAPI
2
+ class Client
3
+ module Brandwatch
4
+ module ClientModules
5
+
6
+ # Get a specific clients modules
7
+ #
8
+ # @param id [Integer] Id of the client
9
+ # @return [Hashie::Mash] Specific clients modules
10
+ def brandwatch_client_modules id
11
+ get "brandwatch/clientModules/#{id}"
12
+ end
13
+
14
+ # Update brandwatch client modules
15
+ #
16
+ # @param opts [Hash] options Hash of parameters
17
+ # @option opts [Array] ClientModules Client Modules to edit
18
+ # @return [Hashie::Mash] Update client modules
19
+ def update_brandwatch_client_module opts
20
+ put "brandwatch/clientModules", opts
21
+ end
22
+
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,22 @@
1
+ module BWAPI
2
+ class Client
3
+ module Client
4
+
5
+ # Get the current users client
6
+ #
7
+ # @return [Hashie::Mash] Client information
8
+ def client
9
+ get "client"
10
+ end
11
+
12
+ # Get the current users client modules
13
+ #
14
+ # @return [Hashie::Mash] Client module information
15
+ def client_modules
16
+ get "client/modules"
17
+ end
18
+ alias :modules :client_modules
19
+
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,14 @@
1
+ module BWAPI
2
+ class Client
3
+ module ErrorCodes
4
+
5
+ # Get the api error codes
6
+ #
7
+ # @return [Hashie::Mash] Error codes information
8
+ def error_codes
9
+ get "errorCodes"
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module BWAPI
2
+ class Client
3
+ module Filters
4
+
5
+ # Get the currently supported filters
6
+ #
7
+ # @return [Hashie::Mash] Current filters
8
+ def filters
9
+ get "filters"
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,24 @@
1
+ module BWAPI
2
+ class Client
3
+ module Logout
4
+
5
+ # Logout user
6
+ #
7
+ # @return [Hashie::Mash] Logout information
8
+ def logout
9
+ begin
10
+ get "logout"
11
+ ensure
12
+ self.username = nil
13
+ self.password = nil
14
+ self.access_token = nil
15
+ self.client_id = nil
16
+ self.access_token = nil
17
+ self.refresh_token = nil
18
+ self.expires_in = nil
19
+ end
20
+ end
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,42 @@
1
+ module BWAPI
2
+ class Client
3
+ module Me
4
+
5
+ # Get user information
6
+ #
7
+ # @return [Hashie::Mash] User information
8
+ def me
9
+ get 'me'
10
+ end
11
+
12
+ # Get users client name
13
+ #
14
+ # @return [String] Users client name
15
+ def client_name
16
+ me.client.name
17
+ end
18
+
19
+ # Get users client id
20
+ #
21
+ # @return [String] Users client id
22
+ def client_id
23
+ me.client.id
24
+ end
25
+
26
+ # Get users client id
27
+ #
28
+ # @return [String] Users client id
29
+ def client_id
30
+ me.client.id
31
+ end
32
+
33
+ # Get users id
34
+ #
35
+ # @return [String] Users role
36
+ def user_id
37
+ me.id
38
+ end
39
+
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,78 @@
1
+ module BWAPI
2
+ class Client
3
+ module OAuth
4
+
5
+ # Authenticate a user
6
+ #
7
+ # @param opts [Hash] options hash of parameters
8
+ # @option opts [String] username User name of user
9
+ # @option opts [String] password User name of user
10
+ # @option opts [String] grant_type Grant type of user
11
+ # @option opts [String] client_secret Client secret
12
+ # @option opts [String] client_id Client id
13
+ # @option opts [String] force_urlencoded Force urlencoded
14
+ def oauth_token opts={}
15
+ opts = {
16
+ username: username,
17
+ password: password,
18
+ grant_type: 'password',
19
+ client_secret: client_secret,
20
+ client_id: client_id,
21
+ force_urlencoded: true
22
+ }.merge opts
23
+
24
+ begin
25
+ creds = post 'oauth/token', opts
26
+ rescue BWAPI::BWError
27
+ return false
28
+ else
29
+ self.access_token = creds.access_token
30
+ self.expires_in = creds.expires_in
31
+
32
+ if application_client?
33
+ self.refresh_token = creds.refresh_token
34
+ end
35
+
36
+ return true
37
+ end
38
+ end
39
+ alias :login :oauth_token
40
+
41
+ # Refresh a authenticated users oauth_token
42
+ #
43
+ # @param opts [Hash] options hash of parameters
44
+ # @option opts [String] username User name of user
45
+ # @option opts [String] password User name of user
46
+ # @option opts [String] grant_type Grant type of user
47
+ # @option opts [String] client_id Client id
48
+ # @option opts [String] force_urlencoded Force urlencoded
49
+ def oauth_refresh_token opts={}
50
+ opts = {
51
+ username: username,
52
+ password: password,
53
+ refresh_token: refresh_token,
54
+ grant_type: 'refresh_token',
55
+ client_id: client_id,
56
+ force_urlencoded: true
57
+ }.merge opts
58
+
59
+ begin
60
+ creds = post 'oauth/token', opts
61
+ rescue BWAPI::BWError
62
+ return false
63
+ else
64
+ self.access_token = creds.access_token
65
+ self.expires_in = creds.expires_in
66
+
67
+ if application_client?
68
+ self.access_token = creds.access_token
69
+ end
70
+
71
+ return true
72
+ end
73
+ end
74
+ alias :refresh :oauth_refresh_token
75
+
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,42 @@
1
+ module BWAPI
2
+ class Client
3
+ module Ping
4
+
5
+ # Get ping checking access and available HTTP verbs
6
+ #
7
+ # @return [Hashie::Mash] User id and name
8
+ def get_ping
9
+ get "ping"
10
+ end
11
+
12
+ # Post ping checking access and available HTTP verbs
13
+ #
14
+ # @return [Hashie::Mash] User id and name
15
+ def create_ping
16
+ post "ping"
17
+ end
18
+
19
+ # Put ping checking access and available HTTP verbs
20
+ #
21
+ # @return [Hashie::Mash] User id and name
22
+ def update_ping
23
+ put "ping"
24
+ end
25
+
26
+ # Patch ping checking access and available HTTP verbs
27
+ #
28
+ # @return [Hashie::Mash] User id and name
29
+ def patch_ping
30
+ patch "ping"
31
+ end
32
+
33
+ # Delete ping checking access and available HTTP verbs
34
+ #
35
+ # @return [Hashie::Mash] User id and name
36
+ def delete_ping
37
+ delete "ping"
38
+ end
39
+
40
+ end
41
+ end
42
+ end