strava-ruby-client 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 +13 -0
- data/README.md +176 -15
- data/bin/strava-oauth-token.rb +47 -0
- data/lib/strava-ruby-client.rb +22 -1
- data/lib/strava/api/client.rb +150 -3
- data/lib/strava/api/cursor.rb +29 -0
- data/lib/strava/models/activity.rb +90 -4
- data/lib/strava/models/activity_zone.rb +13 -0
- data/lib/strava/models/athlete.rb +8 -0
- data/lib/strava/models/club.rb +26 -0
- data/lib/strava/models/comment.rb +12 -0
- data/lib/strava/models/gear.rb +11 -0
- data/lib/strava/models/lap.rb +26 -0
- data/lib/strava/models/map.rb +1 -0
- data/lib/strava/models/mixins/distance.rb +73 -0
- data/lib/strava/models/mixins/elevation.rb +46 -0
- data/lib/strava/models/mixins/time.rb +99 -0
- data/lib/strava/models/photo.rb +10 -0
- data/lib/strava/models/photos.rb +9 -0
- data/lib/strava/models/segment.rb +33 -0
- data/lib/strava/models/segment_effort.rb +24 -0
- data/lib/strava/models/similar_activities.rb +17 -0
- data/lib/strava/models/split.rb +29 -0
- data/lib/strava/models/timed_zone_range.rb +9 -0
- data/lib/strava/models/trend.rb +12 -0
- data/lib/strava/version.rb +1 -1
- metadata +35 -47
- data/.gitignore +0 -6
- data/.rspec +0 -2
- data/.rubocop.yml +0 -15
- data/.rubocop_todo.yml +0 -47
- data/.travis.yml +0 -9
- data/CONTRIBUTING.md +0 -125
- data/Dangerfile +0 -2
- data/Gemfile +0 -15
- data/RELEASING.md +0 -61
- data/Rakefile +0 -17
- data/bin/oauth-token.rb +0 -28
- data/spec/fixtures/strava/client_athlete.yml +0 -59
- data/spec/fixtures/strava/client_athlete_activities.yml +0 -121
- data/spec/fixtures/strava/oauth_token_authorization_code.yml +0 -53
- data/spec/fixtures/strava/oauth_token_invalid_client.yml +0 -50
- data/spec/fixtures/strava/oauth_token_invalid_code.yml +0 -50
- data/spec/fixtures/strava/oauth_token_refresh_token.yml +0 -52
- data/spec/spec_helper.rb +0 -10
- data/spec/strava/api/client_spec.rb +0 -36
- data/spec/strava/api/config_spec.rb +0 -22
- data/spec/strava/oauth/client_spec.rb +0 -120
- data/spec/strava/oauth/config_spec.rb +0 -24
- data/spec/strava/version_spec.rb +0 -7
- data/spec/strava/web/client_spec.rb +0 -9
- data/spec/strava/web/config_spec.rb +0 -4
- data/spec/support/shared/it_behaves_like_web_client.rb +0 -131
- data/spec/support/vcr.rb +0 -12
- data/strava-ruby-client.gemspec +0 -21
| @@ -1,52 +0,0 @@ | |
| 1 | 
            -
            ---
         | 
| 2 | 
            -
            http_interactions:
         | 
| 3 | 
            -
            - request:
         | 
| 4 | 
            -
                method: post
         | 
| 5 | 
            -
                uri: https://www.strava.com/oauth/token
         | 
| 6 | 
            -
                body:
         | 
| 7 | 
            -
                  encoding: UTF-8
         | 
| 8 | 
            -
                  string: client_id=24523&client_secret=client-secret&grant_type=refresh_token&refresh_token=refresh-token
         | 
| 9 | 
            -
                headers:
         | 
| 10 | 
            -
                  Accept:
         | 
| 11 | 
            -
                  - application/json; charset=utf-8
         | 
| 12 | 
            -
                  User-Agent:
         | 
| 13 | 
            -
                  - Strava Ruby Client/0.1.0
         | 
| 14 | 
            -
                  Content-Type:
         | 
| 15 | 
            -
                  - application/x-www-form-urlencoded
         | 
| 16 | 
            -
                  Accept-Encoding:
         | 
| 17 | 
            -
                  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
         | 
| 18 | 
            -
              response:
         | 
| 19 | 
            -
                status:
         | 
| 20 | 
            -
                  code: 200
         | 
| 21 | 
            -
                  message: OK
         | 
| 22 | 
            -
                headers:
         | 
| 23 | 
            -
                  Date:
         | 
| 24 | 
            -
                  - Thu, 22 Nov 2018 22:31:57 GMT
         | 
| 25 | 
            -
                  Content-Type:
         | 
| 26 | 
            -
                  - application/json; charset=UTF-8
         | 
| 27 | 
            -
                  Transfer-Encoding:
         | 
| 28 | 
            -
                  - chunked
         | 
| 29 | 
            -
                  Connection:
         | 
| 30 | 
            -
                  - keep-alive
         | 
| 31 | 
            -
                  Cache-Control:
         | 
| 32 | 
            -
                  - max-age=0, private, must-revalidate
         | 
| 33 | 
            -
                  Via:
         | 
| 34 | 
            -
                  - 1.1 linkerd
         | 
| 35 | 
            -
                  Status:
         | 
| 36 | 
            -
                  - 200 OK
         | 
| 37 | 
            -
                  X-Request-Id:
         | 
| 38 | 
            -
                  - df1c7766-41ac-44e5-b2a1-fc96486b2c7c
         | 
| 39 | 
            -
                  Etag:
         | 
| 40 | 
            -
                  - W/"0f3eb115bd7d2ef9718c83ece058e3f9"
         | 
| 41 | 
            -
                  X-Frame-Options:
         | 
| 42 | 
            -
                  - SAMEORIGIN,DENY
         | 
| 43 | 
            -
                  X-Content-Type-Options:
         | 
| 44 | 
            -
                  - nosniff
         | 
| 45 | 
            -
                  X-Xss-Protection:
         | 
| 46 | 
            -
                  - 1; mode=block
         | 
| 47 | 
            -
                body:
         | 
| 48 | 
            -
                  encoding: ASCII-8BIT
         | 
| 49 | 
            -
                  string: '{"token_type":"Bearer","access_token":"new-access-token","expires_at":1542940199,"expires_in":14282,"refresh_token":"new-refresh-token"}'
         | 
| 50 | 
            -
                http_version:
         | 
| 51 | 
            -
              recorded_at: Thu, 22 Nov 2018 22:31:57 GMT
         | 
| 52 | 
            -
            recorded_with: VCR 4.0.0
         | 
    
        data/spec/spec_helper.rb
    DELETED
    
    
| @@ -1,36 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            RSpec.describe Strava::Api::Client do
         | 
| 4 | 
            -
              before do
         | 
| 5 | 
            -
                Strava::Api::Config.reset
         | 
| 6 | 
            -
              end
         | 
| 7 | 
            -
              it_behaves_like 'web client'
         | 
| 8 | 
            -
              context 'with a token' do
         | 
| 9 | 
            -
                let(:client) { Strava::Api::Client.new(access_token: ENV['STRAVA_ACCESS_TOKEN'] || 'access-token') }
         | 
| 10 | 
            -
                describe '#athlete', vcr: { cassette_name: 'client_athlete' } do
         | 
| 11 | 
            -
                  let(:athlete) { client.athlete }
         | 
| 12 | 
            -
                  it 'returns athlete' do
         | 
| 13 | 
            -
                    expect(athlete).to be_a Strava::Models::Athlete
         | 
| 14 | 
            -
                    expect(athlete.id).to eq 26_462_176
         | 
| 15 | 
            -
                    expect(athlete.created_at).to eq Time.parse('2017-11-28 19:05:35 UTC')
         | 
| 16 | 
            -
                    expect(athlete.updated_at).to eq Time.parse('2018-11-19 01:44:15 UTC')
         | 
| 17 | 
            -
                    expect(athlete.firstname).to eq 'Daniel'
         | 
| 18 | 
            -
                    expect(athlete.lastname).to eq 'Block'
         | 
| 19 | 
            -
                    expect(athlete.city).to eq 'New York'
         | 
| 20 | 
            -
                    expect(athlete.email).to eq 'dblock@example.com'
         | 
| 21 | 
            -
                  end
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
                describe '#athlete_activities', vcr: { cassette_name: 'client_athlete_activities' } do
         | 
| 24 | 
            -
                  let(:athlete_activities) { client.athlete_activities }
         | 
| 25 | 
            -
                  it 'returns athlete activities' do
         | 
| 26 | 
            -
                    expect(athlete_activities).to be_a Enumerable
         | 
| 27 | 
            -
                    expect(athlete_activities.count).to eq 30
         | 
| 28 | 
            -
                    activity = athlete_activities.first
         | 
| 29 | 
            -
                    expect(activity.id).to eq 1_972_463_847
         | 
| 30 | 
            -
                    expect(activity.athlete).to be_a Strava::Models::Athlete
         | 
| 31 | 
            -
                    expect(activity.map).to be_a Strava::Models::Map
         | 
| 32 | 
            -
                    expect(activity.start_date).to be_a Time
         | 
| 33 | 
            -
                  end
         | 
| 34 | 
            -
                end
         | 
| 35 | 
            -
              end
         | 
| 36 | 
            -
            end
         | 
| @@ -1,22 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe Strava::Api::Config do
         | 
| 4 | 
            -
              before do
         | 
| 5 | 
            -
                Strava::Api.config.reset
         | 
| 6 | 
            -
              end
         | 
| 7 | 
            -
              describe '#defaults' do
         | 
| 8 | 
            -
                it 'sets endpoint' do
         | 
| 9 | 
            -
                  expect(Strava::Api.config.endpoint).to eq 'https://www.strava.com/api/v3'
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
              describe '#configure' do
         | 
| 13 | 
            -
                before do
         | 
| 14 | 
            -
                  Strava::Api.configure do |config|
         | 
| 15 | 
            -
                    config.endpoint = 'updated'
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
                it 'sets endpoint' do
         | 
| 19 | 
            -
                  expect(Strava::Api.config.endpoint).to eq 'updated'
         | 
| 20 | 
            -
                end
         | 
| 21 | 
            -
              end
         | 
| 22 | 
            -
            end
         | 
| @@ -1,120 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            RSpec.describe Strava::OAuth::Client do
         | 
| 4 | 
            -
              before do
         | 
| 5 | 
            -
                Strava::OAuth::Config.reset
         | 
| 6 | 
            -
              end
         | 
| 7 | 
            -
              it_behaves_like 'web client'
         | 
| 8 | 
            -
              context 'with defaults' do
         | 
| 9 | 
            -
                let(:client) { Strava::OAuth::Client.new }
         | 
| 10 | 
            -
                describe '#initialize' do
         | 
| 11 | 
            -
                  it 'sets endpoint' do
         | 
| 12 | 
            -
                    expect(client.endpoint).to eq 'https://www.strava.com/oauth'
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
                  Strava::OAuth::Config::ATTRIBUTES.each do |key|
         | 
| 15 | 
            -
                    it "sets #{key}" do
         | 
| 16 | 
            -
                      expect(client.send(key)).to eq Strava::OAuth::Config.send(key)
         | 
| 17 | 
            -
                    end
         | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                  context '#authorize_url' do
         | 
| 20 | 
            -
                    it 'requires client id' do
         | 
| 21 | 
            -
                      expect { client.authorize_url }.to raise_error ArgumentError, 'Missing Strava client id.'
         | 
| 22 | 
            -
                    end
         | 
| 23 | 
            -
                  end
         | 
| 24 | 
            -
                end
         | 
| 25 | 
            -
              end
         | 
| 26 | 
            -
              context 'with custom settings' do
         | 
| 27 | 
            -
                describe '#initialize' do
         | 
| 28 | 
            -
                  Strava::OAuth::Config::ATTRIBUTES.each do |key|
         | 
| 29 | 
            -
                    context key do
         | 
| 30 | 
            -
                      let(:client) { Strava::OAuth::Client.new(key => 'custom') }
         | 
| 31 | 
            -
                      it "sets #{key}" do
         | 
| 32 | 
            -
                        expect(client.send(key)).to_not eq Strava::OAuth::Config.send(key)
         | 
| 33 | 
            -
                        expect(client.send(key)).to eq 'custom'
         | 
| 34 | 
            -
                      end
         | 
| 35 | 
            -
                    end
         | 
| 36 | 
            -
                  end
         | 
| 37 | 
            -
                end
         | 
| 38 | 
            -
              end
         | 
| 39 | 
            -
              context 'global config' do
         | 
| 40 | 
            -
                after do
         | 
| 41 | 
            -
                  Strava::OAuth::Client.config.reset
         | 
| 42 | 
            -
                end
         | 
| 43 | 
            -
                let(:client) { Strava::OAuth::Client.new }
         | 
| 44 | 
            -
                context 'client id and secret' do
         | 
| 45 | 
            -
                  before do
         | 
| 46 | 
            -
                    Strava::OAuth::Client.configure do |config|
         | 
| 47 | 
            -
                      config.client_id = 'custom client id'
         | 
| 48 | 
            -
                      config.client_secret = 'custom client secret'
         | 
| 49 | 
            -
                    end
         | 
| 50 | 
            -
                  end
         | 
| 51 | 
            -
                  describe '#initialize' do
         | 
| 52 | 
            -
                    it 'sets client id and secret' do
         | 
| 53 | 
            -
                      expect(client.client_id).to eq 'custom client id'
         | 
| 54 | 
            -
                      expect(client.client_secret).to eq 'custom client secret'
         | 
| 55 | 
            -
                    end
         | 
| 56 | 
            -
                  end
         | 
| 57 | 
            -
                end
         | 
| 58 | 
            -
              end
         | 
| 59 | 
            -
              context 'with a client id and secret' do
         | 
| 60 | 
            -
                let(:client) { Strava::OAuth::Client.new(client_id: '12345', client_secret: 'client-secret') }
         | 
| 61 | 
            -
                context '#authorize_url' do
         | 
| 62 | 
            -
                  it 'returns url' do
         | 
| 63 | 
            -
                    expect(client.authorize_url).to eq 'https://www.strava.com/oauth/authorize?approval_prompt=auto&client_id=12345&redirect_uri=http%3A%2F%2Flocalhost&response_type=code&scope=read'
         | 
| 64 | 
            -
                  end
         | 
| 65 | 
            -
                  it 'returns url with custom options' do
         | 
| 66 | 
            -
                    expect(
         | 
| 67 | 
            -
                      client.authorize_url(
         | 
| 68 | 
            -
                        redirect_uri: 'https://example.com/oauth',
         | 
| 69 | 
            -
                        approval_prompt: 'force',
         | 
| 70 | 
            -
                        response_type: 'code',
         | 
| 71 | 
            -
                        scope: 'activity:read_all',
         | 
| 72 | 
            -
                        state: 'magic'
         | 
| 73 | 
            -
                      )
         | 
| 74 | 
            -
                    ).to eq 'https://www.strava.com/oauth/authorize?approval_prompt=force&client_id=12345&redirect_uri=https%3A%2F%2Fexample.com%2Foauth&response_type=code&scope=activity%3Aread_all&state=magic'
         | 
| 75 | 
            -
                  end
         | 
| 76 | 
            -
                end
         | 
| 77 | 
            -
                context '#oauth_token' do
         | 
| 78 | 
            -
                  it 'errors with an invalid client id', vcr: { cassette_name: 'oauth_token_invalid_client' } do
         | 
| 79 | 
            -
                    expect { client.oauth_token(code: 'code') }.to raise_error Strava::Errors::Fault do |e|
         | 
| 80 | 
            -
                      expect(e.message).to eq 'Bad Request'
         | 
| 81 | 
            -
                      expect(e.errors).to eq([{ 'code' => 'invalid', 'field' => 'client_id', 'resource' => 'Application' }])
         | 
| 82 | 
            -
                    end
         | 
| 83 | 
            -
                  end
         | 
| 84 | 
            -
                  it 'errors with an invalid code', vcr: { cassette_name: 'oauth_token_invalid_code' } do
         | 
| 85 | 
            -
                    expect { client.oauth_token(code: 'code') }.to raise_error Faraday::ClientError do |e|
         | 
| 86 | 
            -
                      expect(e.message).to eq 'Bad Request'
         | 
| 87 | 
            -
                      expect(e.errors).to eq([{ 'code' => 'invalid', 'field' => 'code', 'resource' => 'RequestToken' }])
         | 
| 88 | 
            -
                    end
         | 
| 89 | 
            -
                  end
         | 
| 90 | 
            -
                  it 'performs the initial token exchange', vcr: { cassette_name: 'oauth_token_authorization_code' } do
         | 
| 91 | 
            -
                    token = client.oauth_token(code: 'deadbeef585a6edb1f00309d3e1e0fec74973fb0')
         | 
| 92 | 
            -
                    expect(token).to be_a Strava::Models::Token
         | 
| 93 | 
            -
                    expect(token.access_token).to eq 'deadbeefd7ab44704fb2a146bd98c7a349a2b43d'
         | 
| 94 | 
            -
                    expect(token.refresh_token).to eq 'deadbeef9d64b225d0c50db4854a8d6c8757702d'
         | 
| 95 | 
            -
                    expect(token.token_type).to eq 'Bearer'
         | 
| 96 | 
            -
                    expect(token.expires_in).to eq 21_600
         | 
| 97 | 
            -
                    expect(token.expires_at).to eq Time.at(1_542_940_199)
         | 
| 98 | 
            -
                    athlete = token.athlete
         | 
| 99 | 
            -
                    expect(athlete).to be_a Strava::Models::Athlete
         | 
| 100 | 
            -
                    expect(athlete.updated_at).to eq Time.parse('2018-11-19 01:44:15 UTC')
         | 
| 101 | 
            -
                    expect(athlete.firstname).to eq 'Daniel'
         | 
| 102 | 
            -
                    expect(athlete.lastname).to eq 'Block'
         | 
| 103 | 
            -
                    expect(athlete.city).to eq 'New York'
         | 
| 104 | 
            -
                  end
         | 
| 105 | 
            -
                  it 'refreshes the token', vcr: { cassette_name: 'oauth_token_refresh_token' } do
         | 
| 106 | 
            -
                    token = client.oauth_token(
         | 
| 107 | 
            -
                      refresh_token: '8b15b6bb9d64a225d0c50db4854a8d6c8757702d',
         | 
| 108 | 
            -
                      grant_type: 'refresh_token'
         | 
| 109 | 
            -
                    )
         | 
| 110 | 
            -
                    expect(token).to be_a Strava::Models::Token
         | 
| 111 | 
            -
                    expect(token.access_token).to eq 'new-access-token'
         | 
| 112 | 
            -
                    expect(token.refresh_token).to eq 'new-refresh-token'
         | 
| 113 | 
            -
                    expect(token.token_type).to eq 'Bearer'
         | 
| 114 | 
            -
                    expect(token.expires_in).to eq 14_282
         | 
| 115 | 
            -
                    expect(token.expires_at).to eq Time.at(1_542_940_199)
         | 
| 116 | 
            -
                    expect(token.athlete).to be nil
         | 
| 117 | 
            -
                  end
         | 
| 118 | 
            -
                end
         | 
| 119 | 
            -
              end
         | 
| 120 | 
            -
            end
         | 
| @@ -1,24 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            describe Strava::OAuth::Config do
         | 
| 4 | 
            -
              describe '#defaults' do
         | 
| 5 | 
            -
                it 'sets endpoint' do
         | 
| 6 | 
            -
                  expect(Strava::OAuth.config.endpoint).to eq 'https://www.strava.com/oauth'
         | 
| 7 | 
            -
                  expect(Strava::OAuth.config.client_id).to be nil
         | 
| 8 | 
            -
                  expect(Strava::OAuth.config.client_secret).to be nil
         | 
| 9 | 
            -
                end
         | 
| 10 | 
            -
              end
         | 
| 11 | 
            -
              describe '#configure' do
         | 
| 12 | 
            -
                before do
         | 
| 13 | 
            -
                  Strava::OAuth.configure do |config|
         | 
| 14 | 
            -
                    config.client_id = 'client id'
         | 
| 15 | 
            -
                    config.client_secret = 'client secret'
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                end
         | 
| 18 | 
            -
                it 'sets client id and secret' do
         | 
| 19 | 
            -
                  expect(Strava::OAuth.config.endpoint).to eq 'https://www.strava.com/oauth'
         | 
| 20 | 
            -
                  expect(Strava::OAuth.config.client_id).to eq 'client id'
         | 
| 21 | 
            -
                  expect(Strava::OAuth.config.client_secret).to eq 'client secret'
         | 
| 22 | 
            -
                end
         | 
| 23 | 
            -
              end
         | 
| 24 | 
            -
            end
         | 
    
        data/spec/strava/version_spec.rb
    DELETED
    
    
| @@ -1,131 +0,0 @@ | |
| 1 | 
            -
            require 'spec_helper'
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            RSpec.shared_examples 'web client' do
         | 
| 4 | 
            -
              before do
         | 
| 5 | 
            -
                described_class.config.reset
         | 
| 6 | 
            -
                Strava::Web::Config.reset
         | 
| 7 | 
            -
              end
         | 
| 8 | 
            -
              context 'with defaults' do
         | 
| 9 | 
            -
                let(:client) { described_class.new }
         | 
| 10 | 
            -
                context '#initialize' do
         | 
| 11 | 
            -
                  it 'implements endpoint' do
         | 
| 12 | 
            -
                    expect(client.endpoint).to_not be nil
         | 
| 13 | 
            -
                  end
         | 
| 14 | 
            -
                  it 'includes default http configuration' do
         | 
| 15 | 
            -
                    expect(client.user_agent).to eq 'Strava Ruby Client/0.1.0'
         | 
| 16 | 
            -
                  end
         | 
| 17 | 
            -
                  it 'sets user-agent' do
         | 
| 18 | 
            -
                    expect(client.user_agent).to eq Strava::Web::Config.user_agent
         | 
| 19 | 
            -
                    expect(client.user_agent).to include Strava::VERSION
         | 
| 20 | 
            -
                  end
         | 
| 21 | 
            -
                  (Strava::Web::Config::ATTRIBUTES - [:logger]).each do |key|
         | 
| 22 | 
            -
                    it "sets #{key}" do
         | 
| 23 | 
            -
                      expect(client.send(key)).to eq Strava::Web::Config.send(key)
         | 
| 24 | 
            -
                    end
         | 
| 25 | 
            -
                  end
         | 
| 26 | 
            -
                end
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
              context 'with custom settings' do
         | 
| 29 | 
            -
                context '#initialize' do
         | 
| 30 | 
            -
                  Strava::Web::Config::ATTRIBUTES.each do |key|
         | 
| 31 | 
            -
                    context key.to_s do
         | 
| 32 | 
            -
                      let(:client) { described_class.new(key => 'custom') }
         | 
| 33 | 
            -
                      it "sets #{key}" do
         | 
| 34 | 
            -
                        expect(client.send(key)).to_not eq Strava::Web::Config.send(key)
         | 
| 35 | 
            -
                        expect(client.send(key)).to eq 'custom'
         | 
| 36 | 
            -
                      end
         | 
| 37 | 
            -
                    end
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
              end
         | 
| 41 | 
            -
              context 'global config' do
         | 
| 42 | 
            -
                let(:client) { described_class.new }
         | 
| 43 | 
            -
                context 'user-agent' do
         | 
| 44 | 
            -
                  before do
         | 
| 45 | 
            -
                    Strava::Web::Client.configure do |config|
         | 
| 46 | 
            -
                      config.user_agent = 'custom/user-agent'
         | 
| 47 | 
            -
                    end
         | 
| 48 | 
            -
                  end
         | 
| 49 | 
            -
                  context '#initialize' do
         | 
| 50 | 
            -
                    it 'sets user-agent' do
         | 
| 51 | 
            -
                      expect(client.user_agent).to eq 'custom/user-agent'
         | 
| 52 | 
            -
                    end
         | 
| 53 | 
            -
                    it 'creates a connection with the custom user-agent' do
         | 
| 54 | 
            -
                      expect(client.send(:connection).headers).to include(
         | 
| 55 | 
            -
                        'Accept' => 'application/json; charset=utf-8',
         | 
| 56 | 
            -
                        'User-Agent' => 'custom/user-agent'
         | 
| 57 | 
            -
                      )
         | 
| 58 | 
            -
                    end
         | 
| 59 | 
            -
                  end
         | 
| 60 | 
            -
                end
         | 
| 61 | 
            -
                context 'proxy' do
         | 
| 62 | 
            -
                  before do
         | 
| 63 | 
            -
                    Strava::Web::Client.configure do |config|
         | 
| 64 | 
            -
                      config.proxy = 'http://localhost:8080'
         | 
| 65 | 
            -
                    end
         | 
| 66 | 
            -
                  end
         | 
| 67 | 
            -
                  context '#initialize' do
         | 
| 68 | 
            -
                    it 'sets proxy' do
         | 
| 69 | 
            -
                      expect(client.proxy).to eq 'http://localhost:8080'
         | 
| 70 | 
            -
                    end
         | 
| 71 | 
            -
                    it 'creates a connection with the proxy' do
         | 
| 72 | 
            -
                      expect(client.send(:connection).proxy.uri.to_s).to eq 'http://localhost:8080'
         | 
| 73 | 
            -
                    end
         | 
| 74 | 
            -
                  end
         | 
| 75 | 
            -
                end
         | 
| 76 | 
            -
                context 'SSL options' do
         | 
| 77 | 
            -
                  before do
         | 
| 78 | 
            -
                    Strava::Web::Client.configure do |config|
         | 
| 79 | 
            -
                      config.ca_path = '/ca_path'
         | 
| 80 | 
            -
                      config.ca_file = '/ca_file'
         | 
| 81 | 
            -
                    end
         | 
| 82 | 
            -
                  end
         | 
| 83 | 
            -
                  context '#initialize' do
         | 
| 84 | 
            -
                    it 'sets ca_path and ca_file' do
         | 
| 85 | 
            -
                      expect(client.ca_path).to eq '/ca_path'
         | 
| 86 | 
            -
                      expect(client.ca_file).to eq '/ca_file'
         | 
| 87 | 
            -
                    end
         | 
| 88 | 
            -
                    it 'creates a connection with ssl options' do
         | 
| 89 | 
            -
                      ssl = client.send(:connection).ssl
         | 
| 90 | 
            -
                      expect(ssl.ca_path).to eq '/ca_path'
         | 
| 91 | 
            -
                      expect(ssl.ca_file).to eq '/ca_file'
         | 
| 92 | 
            -
                    end
         | 
| 93 | 
            -
                  end
         | 
| 94 | 
            -
                end
         | 
| 95 | 
            -
                context 'logger option' do
         | 
| 96 | 
            -
                  let(:logger) { Logger.new(STDOUT) }
         | 
| 97 | 
            -
                  before do
         | 
| 98 | 
            -
                    Strava::Web::Client.configure do |config|
         | 
| 99 | 
            -
                      config.logger = logger
         | 
| 100 | 
            -
                    end
         | 
| 101 | 
            -
                  end
         | 
| 102 | 
            -
                  context '#initialize' do
         | 
| 103 | 
            -
                    it 'sets logger' do
         | 
| 104 | 
            -
                      expect(client.logger).to eq logger
         | 
| 105 | 
            -
                    end
         | 
| 106 | 
            -
                    it 'creates a connection with a logger' do
         | 
| 107 | 
            -
                      expect(client.send(:connection).builder.handlers).to include ::Faraday::Response::Logger
         | 
| 108 | 
            -
                    end
         | 
| 109 | 
            -
                  end
         | 
| 110 | 
            -
                end
         | 
| 111 | 
            -
                context 'timeout options' do
         | 
| 112 | 
            -
                  before do
         | 
| 113 | 
            -
                    Strava::Web::Client.configure do |config|
         | 
| 114 | 
            -
                      config.timeout = 10
         | 
| 115 | 
            -
                      config.open_timeout = 15
         | 
| 116 | 
            -
                    end
         | 
| 117 | 
            -
                  end
         | 
| 118 | 
            -
                  context '#initialize' do
         | 
| 119 | 
            -
                    it 'sets timeout and open_timeout' do
         | 
| 120 | 
            -
                      expect(client.timeout).to eq 10
         | 
| 121 | 
            -
                      expect(client.open_timeout).to eq 15
         | 
| 122 | 
            -
                    end
         | 
| 123 | 
            -
                    it 'creates a connection with timeout options' do
         | 
| 124 | 
            -
                      conn = client.send(:connection)
         | 
| 125 | 
            -
                      expect(conn.options.timeout).to eq 10
         | 
| 126 | 
            -
                      expect(conn.options.open_timeout).to eq 15
         | 
| 127 | 
            -
                    end
         | 
| 128 | 
            -
                  end
         | 
| 129 | 
            -
                end
         | 
| 130 | 
            -
              end
         | 
| 131 | 
            -
            end
         | 
    
        data/spec/support/vcr.rb
    DELETED
    
    | @@ -1,12 +0,0 @@ | |
| 1 | 
            -
            require 'vcr'
         | 
| 2 | 
            -
            require 'webmock/rspec'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            VCR.configure do |config|
         | 
| 5 | 
            -
              config.cassette_library_dir = 'spec/fixtures/strava'
         | 
| 6 | 
            -
              config.hook_into :webmock
         | 
| 7 | 
            -
              config.default_cassette_options = { record: :new_episodes }
         | 
| 8 | 
            -
              config.configure_rspec_metadata!
         | 
| 9 | 
            -
              config.before_record do |i|
         | 
| 10 | 
            -
                i.response.body.force_encoding('UTF-8')
         | 
| 11 | 
            -
              end
         | 
| 12 | 
            -
            end
         | 
    
        data/strava-ruby-client.gemspec
    DELETED
    
    | @@ -1,21 +0,0 @@ | |
| 1 | 
            -
            $LOAD_PATH.push File.expand_path('lib', __dir__)
         | 
| 2 | 
            -
            require 'strava/version'
         | 
| 3 | 
            -
             | 
| 4 | 
            -
            Gem::Specification.new do |s|
         | 
| 5 | 
            -
              s.name = 'strava-ruby-client'
         | 
| 6 | 
            -
              s.bindir = 'bin'
         | 
| 7 | 
            -
              s.version = Strava::VERSION
         | 
| 8 | 
            -
              s.authors = ['Daniel Doubrovkine']
         | 
| 9 | 
            -
              s.email = 'dblock@dblock.org'
         | 
| 10 | 
            -
              s.platform = Gem::Platform::RUBY
         | 
| 11 | 
            -
              s.required_rubygems_version = '>= 1.3.6'
         | 
| 12 | 
            -
              s.files = `git ls-files`.split("\n")
         | 
| 13 | 
            -
              s.test_files = `git ls-files -- spec/*`.split("\n")
         | 
| 14 | 
            -
              s.require_paths = ['lib']
         | 
| 15 | 
            -
              s.homepage = 'http://github.com/dblock/strava-ruby-client'
         | 
| 16 | 
            -
              s.licenses = ['MIT']
         | 
| 17 | 
            -
              s.summary = 'Strava API Ruby client.'
         | 
| 18 | 
            -
              s.add_dependency 'faraday', '>= 0.9'
         | 
| 19 | 
            -
              s.add_dependency 'faraday_middleware'
         | 
| 20 | 
            -
              s.add_dependency 'hashie'
         | 
| 21 | 
            -
            end
         |