bwapi 1.0.0 → 1.0.1

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: d950eb3141a3d094f3a8acda0bcc07fbaca916ca
4
- data.tar.gz: 9461dd2860680d76e8cac1ebe9ad287095ca309b
3
+ metadata.gz: dd2cf79cd157dd2ca6e76738c1424f1a47088df4
4
+ data.tar.gz: 1fac68af86ca4f7d8d210e2ca04614e53311b87d
5
5
  SHA512:
6
- metadata.gz: 5f97eff77c439a33cb972012cce89bacccfbda6540f5022542e300e00e49f6e9741bb1c764acba767dee34f6773ff8314311fd02e1e84c19ee862983fe2888fa
7
- data.tar.gz: fde6d236a3b0b43ea7dce59f91f2032dd83388dc5fb1aa77201aa292f60bd2c71592b0dfe21e5c4bf9f6090da406152ccdd34333531cc5d7db9e4a408cfe8f2a
6
+ metadata.gz: 11abad275db972f85bddf6d43dc398c255291ce65c70cc157755fe4fa1a5ffd711e053863cef5b0cbe1d8ca6e0a6d668c15587fa7a6b02f4b100588e93797860
7
+ data.tar.gz: a65bffa36df961516ac87aaf03566bab6439334df3bca2778ca263e255b7d14a0b56d34f7f2ce80570a64ec645a0c0bfca7e377511bdd03953b13f1e9a4af3d8
data/README.md CHANGED
@@ -1,15 +1,67 @@
1
+ [![Build Status](https://travis-ci.org/jonathanchrisp/bwapi.png?branch=master)](https://travis-ci.org/jonathanchrisp/bwapi)
2
+ [![Dependency Status](https://gemnasium.com/jonathanchrisp/bwapi.png)](https://gemnasium.com/jonathanchrisp/bwapi)
3
+ [![Code Climate](https://codeclimate.com/github/jonathanchrisp/bwapi.png)](https://codeclimate.com/github/jonathanchrisp/bwapi)
4
+
1
5
  # bwapi
2
6
 
3
7
  __PLEASE NOTE THAT THIS PROJECT IS NOT OFFICIALLY SUPPORTED BY BRANDWATCH__
4
8
 
5
- A Ruby interface to the Brandwatch v2 API. The projects design is modelled on the GitHub Octokit wrapper which can be found here: https://github.com/octokit/octokit.rb.
9
+ A Ruby interface to the Brandwatch V2 API. The projects design is modelled on the GitHub Octokit wrapper which can be found here: https://github.com/octokit/octokit.rb.
10
+
11
+ ## Documentation
12
+ http://rubydoc.info/gems/bwapi/
13
+
14
+ ## Getting Started
15
+ All Brandwatch API calls at present require you to be authenticated with the system. Therefore you'll need to create an instance of your client:
16
+
17
+ ```ruby
18
+ bw = BWAPI::Client.new(:username => 'username@example.com', :password => 'pa$$w0rd')
19
+ ```
20
+
21
+ Once you have your instance of your client you can then use a helper method to authenticate with Brandwatch:
22
+
23
+ ```ruby
24
+ bw.login
25
+ ```
26
+
27
+ The wrapper returns a boolean value to state whether you authenticated successfully.
28
+
29
+ ## Example Requests
30
+
31
+ Once authenticated, you are then able to make additional requests. Please see a small selection of examples below:
32
+
33
+ ### Get all projects
34
+ ```ruby
35
+ bw.projects
36
+ => #<Hashie::Mash results=[#<Hashie::Mash clientId=1856278873 clientName="JC BWAPI Demo" creationDate="2013-07-24T17:56:31.074+0000" creatorUserId=158304410 defaultIndustry="general-(recommended)" defaultLangCodes=["en"] description=nil id=1856280126 links=#<Hashie::Mash queries="http://newapi.brandwatch.com//projects/1856280126/queries.json?access_token=bd405bd7-9d1f-4c3d-ab5c-64b77791ae7f"> name="Demo Project">] resultsPage=-1 resultsPageSize=-1 resultsTotal=-1>
37
+ ```
38
+
39
+ ### Get a specific project
40
+ ```ruby
41
+ bw.project 1856280126
42
+ => #<Hashie::Mash clientId=1856278873 clientName="JC BWAPI Demo" creationDate="2013-07-24T17:56:31.074+0000" creatorUserId=158304410 defaultIndustry="general-(recommended)" defaultLangCodes=["en"] description=nil id=1856280126 links=#<Hashie::Mash queries="http://newapi.brandwatch.com//projects/1856280126/queries.json?access_token=bd405bd7-9d1f-4c3d-ab5c-64b77791ae7f"> name="Demo Project">
43
+ ```
44
+
45
+ ### Get a project queries summary
46
+ ```ruby
47
+ bw.queries_summary 1856280126
48
+ => #<Hashie::Mash results=[#<Hashie::Mash id=1856280351 name="LA Lakers">] resultsPage=-1 resultsPageSize=-1 resultsTotal=-1>
49
+ ```
50
+
51
+ ### Get user information
52
+ ```ruby
53
+ bw.me
54
+ => #<Hashie::Mash client=#<Hashie::Mash id=1856278873 name="JC BWAPI Demo" parentId=-1 railsEnabled=false theme="brandwatch"> firstName="BWAPI" id=158304410 lastName="Demo" links=#<Hashie::Mash logout="http://newapi.brandwatch.com/logout?access_token=bd405bd7-9d1f-4c3d-ab5c-64b77791ae7f" user="http://newapi.brandwatch.com//user.json?access_token=bd405bd7-9d1f-4c3d-ab5c-64b77791ae7f"> tags=#<Hashie::Mash notify="true"> uiRole="admin" username="bwapi_demo=jonathan@brandwatch.com">
55
+ ```
6
56
 
7
57
  ## Tests
8
- There are a number of unit tests which are included as part of this project which are run by rspec. Please run:
58
+ There are a number of unit tests which are included as part of this project, please run:
9
59
 
10
- rspec spec
60
+ ```ruby
61
+ rspec spec
62
+ ```
11
63
 
12
- Please note that a number of tests still need to be added so I don't currently have complete coverage.
64
+ Please note that a number of tests still need to be added so I don't currently have complete coverage, subject to workload these will be slowly added over the next few months.
13
65
 
14
66
  ## Feedback
15
- I would be more than happy to recieve feedback, please email me at: jonathan.chrisp@gmail.com
67
+ I would be more than happy to recieve feedback, please email me at: jonathan.chrisp@gmail.com or jonathan@brandwatch.com
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.add_runtime_dependency 'faraday', '~> 0.8.7'
19
19
  s.add_runtime_dependency 'faraday_middleware', '~> 0.9.0'
20
20
  s.add_runtime_dependency 'netrc', '~> 0.7.7'
21
+ s.add_runtime_dependency 'colored', '~> 1.2'
21
22
 
22
23
  s.files = `git ls-files`.split("\n")
23
24
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
@@ -1,4 +1,4 @@
1
- require 'netrc'
1
+ require 'colored'
2
2
 
3
3
  module BWAPI
4
4
  module Authentication
@@ -29,13 +29,18 @@ module BWAPI
29
29
  # @param netrc [Boolean] Netrc status
30
30
  def netrc_credentials netrc=false
31
31
  return unless netrc
32
+
33
+ require 'netrc'
32
34
  file = Netrc.read netrc_file
33
35
 
34
36
  # Get credentials using host
35
37
  netrc_host = URI.parse(api_endpoint).host
36
38
  creds = file[netrc_host]
39
+ raise 'You are missing your .netrc file or the host provided has no credentials!'.red.underline if creds.nil?
37
40
  self.username = creds.shift
38
41
  self.password = creds.shift
42
+ rescue LoadError
43
+ raise "Please install netrc gem for .netrc support".red.underline
39
44
  end
40
45
 
41
46
  end
@@ -15,12 +15,13 @@ module BWAPI
15
15
  :expires_in,
16
16
  :client_id,
17
17
  :client_secret,
18
+ :verify_ssl,
18
19
  :netrc,
19
20
  :netrc_file
20
21
  ].freeze
21
22
 
22
23
  DEFAULT_ADAPTER = Faraday.default_adapter
23
- DEFAULT_API_ENDPOINT = ENV['BWAPI_API_ENDPOINT'] || 'http://newapi.brandwatch.com/'
24
+ DEFAULT_API_ENDPOINT = 'https://newapi.brandwatch.com/'
24
25
  DEFAULT_CLIENT_ID = 'brandwatch-api-client'
25
26
  DEFAULT_USER_AGENT = "BWAPI Ruby Gem #{BWAPI::VERSION}".freeze
26
27
  DEFAULT_NETRC_FILE = File.join(ENV['HOME'], '.netrc')
@@ -32,15 +33,12 @@ module BWAPI
32
33
  base.reset
33
34
  end
34
35
 
36
+ # Set configuration options using a block
35
37
  def configure
36
38
  yield self
37
39
  end
38
40
 
39
- # Convert option_keys to hash and return
40
- def options
41
- OPTION_KEYS.inject({}){|o,k|o.merge!(k => send(k))}
42
- end
43
-
41
+ # Reset the configuration options
44
42
  def reset
45
43
  self.adapter = DEFAULT_ADAPTER
46
44
  self.user_agent = DEFAULT_USER_AGENT
@@ -52,8 +50,14 @@ module BWAPI
52
50
  self.refresh_token = nil
53
51
  self.client_id = DEFAULT_CLIENT_ID
54
52
  self.client_secret = nil
53
+ self.verify_ssl = true
55
54
  self.netrc = false
56
55
  self.netrc_file = DEFAULT_NETRC_FILE
57
56
  end
57
+
58
+ # Convert option_keys to hash and return
59
+ def options
60
+ OPTION_KEYS.inject({}){|o,k|o.merge!(k => send(k))}
61
+ end
58
62
  end
59
63
  end
@@ -25,7 +25,6 @@ module BWAPI
25
25
  end
26
26
 
27
27
  connection.headers[:user_agent] = user_agent
28
-
29
28
  connection
30
29
  end
31
30
 
@@ -57,19 +57,19 @@ module BWAPI
57
57
  # @param opts [Hash] Request parameters
58
58
  # @return [Hashie::Mash] Response
59
59
  def request method, path, opts={}
60
- token = access_token
61
-
62
- force_urlencoded = opts.delete(:force_urlencoded) || false
63
-
64
60
  conn_opts = {
65
- :force_urlencoded => force_urlencoded,
66
- :url => api_endpoint
61
+ :headers => {
62
+ :user_agent => user_agent
63
+ },
64
+ :force_urlencoded => opts.delete(:force_urlencoded) || false,
65
+ :url => api_endpoint,
66
+ :ssl => {:verify => verify_ssl}
67
67
  }
68
68
 
69
69
  response = connection(conn_opts).send(method) do |request|
70
70
  # Add token to the header
71
- if token
72
- request.headers[:authorization] = "bearer #{token}"
71
+ if access_token
72
+ request.headers[:authorization] = "bearer #{access_token}"
73
73
  end
74
74
 
75
75
  case method
@@ -78,7 +78,7 @@ module BWAPI
78
78
  when :delete
79
79
  request.url path, opts
80
80
  when :patch, :post, :put
81
- if force_urlencoded
81
+ if conn_opts[:force_urlencoded]
82
82
  request.url path, opts
83
83
  else
84
84
  request.path = path
@@ -1,3 +1,3 @@
1
1
  module BWAPI
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
@@ -117,8 +117,8 @@ describe BWAPI::Client do
117
117
  expect(BWAPI::Client.new.netrc).to eql(false)
118
118
  end
119
119
 
120
- it 'should allow a user to set a netrc value' do
121
- bw = BWAPI::Client.new :netrc => true
120
+ it 'should allow a user to set true for the netrc value' do
121
+ bw = BWAPI::Client.new :netrc => true, :netrc_file => File.join(fixture_path, '.netrc')
122
122
  expect(bw.netrc).to eql(true)
123
123
  end
124
124
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bwapi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Chrisp
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.7.7
83
+ - !ruby/object:Gem::Dependency
84
+ name: colored
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '1.2'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '1.2'
83
97
  description: A Ruby wrapper for the Brandwatch v2 API
84
98
  email: jonathan@brandwatch.com
85
99
  executables:
@@ -176,3 +190,4 @@ test_files:
176
190
  - spec/bwapi_spec.rb
177
191
  - spec/fixtures/.netrc
178
192
  - spec/helper.rb
193
+ has_rdoc: