orium / strava-pr

Analysis of your Strava personal records
GNU Lesser General Public License v3.0
12 stars 1 forks source link

Unable to fetch all runs #7

Closed amishwins closed 3 years ago

amishwins commented 3 years ago

Hi!

Set up my api access token and fetching runs for the first time. Encountering the following exception:

Exception in thread "main" java.lang.RuntimeException: Could not parse list of activities
        at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$1(ScravaClient.scala:346)
        at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$1$adapted(ScravaClient.scala:321)
        at scala.collection.immutable.Stream.map(Stream.scala:415)
        at kiambogo.scrava.ScravaClient.listAthleteActivities(ScravaClient.scala:321)
        at stravapr.Strava.$anonfun$populateRunCache$1(Strava.scala:75)
        at stravapr.RateLimiter.run(RateLimiter.scala:26)
        at stravapr.RateLimiter.apply(RateLimiter.scala:39)
        at stravapr.Strava.populateRunCache(Strava.scala:75)
        at stravapr.Main$.stravaFetch(Main.scala:69)
        at stravapr.Main$.$anonfun$main$1(Main.scala:317)
        at stravapr.Main$.$anonfun$main$1$adapted(Main.scala:316)
        at scala.Option.foreach(Option.scala:257)
        at stravapr.Main$.main(Main.scala:316)
        at stravapr.Main.main(Main.scala)
Caused by: net.liftweb.json.MappingException: Expected collection but got JObject(List(JField(message,JString(Authorization Error)), JField(errors,JArray(List(JObject(List(JField(resource,JString(AccessToken)), JField(field,JString(activity:read_permission)), JField(code,JString(missing))))))))) for root JObject(List(JField(message,JString(Authorization Error)), JField(errors,JArray(List(JObject(List(JField(resource,JString(AccessToken)), JField(field,JString(activity:read_permission)), JField(code,JString(missing))))))))) and mapping Constructor(TypeInfo(class kiambogo.scrava.models.PersonalActivitySummary,None),List(DeclaredConstructor(public kiambogo.scrava.models.PersonalActivitySummary(int,int,scala.Option,scala.Option,scala.collection.immutable.Map,java.lang.String,float,int,int,float,java.lang.String,java.lang.String,java.lang.String,java.lang.String,scala.collection.immutable.List,scala.Option,scala.Option,scala.Option,scala.Option,int,int,int,int,int,kiambogo.scrava.models.Polyline,boolean,boolean,boolean,boolean,boolean,scala.Option,float,float,scala.Option,scala.Option,scala.Option,scala.Option,scala.Option,scala.Option,scala.Option,int,boolean,scala.Option),List(Arg(id,Value(int),false), Arg(resource_state,Value(int),false), Arg(external_id,Value(class java.lang.String),true), Arg(upload_id,Value(int),true), Arg(athlete,Dict(Value(int)),false), Arg(name,Value(class java.lang.String),false), Arg(distance,Value(float),false), Arg(moving_time,Value(int),false), Arg(elapsed_time,Value(int),false), Arg(total_elevation_gain,Value(float),false), Arg(type,Value(class java.lang.String),false), Arg(start_date,Value(class java.lang.String),false), Arg(start_date_local,Value(class java.lang.String),false), Arg(timezone,Value(class java.lang.String),false), Arg(start_latlng,Col(TypeInfo(class scala.collection.immutable.List,Some(scala.collection.immutable.List<java.lang.Object>)),Value(float)),false), Arg(end_latlng,Col(TypeInfo(class scala.collection.immutable.List,Some(scala.collection.immutable.List<java.lang.Object>)),Value(float)),true), Arg(location_city,Value(class java.lang.String),true), Arg(location_state,Value(class java.lang.String),true), Arg(location_country,Value(class java.lang.String),true), Arg(achievement_count,Value(int),false), Arg(kudos_count,Value(int),false), Arg(comment_count,Value(int),false), Arg(athlete_count,Value(int),false), Arg(photo_count,Value(int),false), Arg(map,Constructor(TypeInfo(class kiambogo.scrava.models.Polyline,None),List(DeclaredConstructor(public kiambogo.scrava.models.Polyline(java.lang.String,scala.Option,scala.Option,int),List(Arg(id,Value(class java.lang.String),false), Arg(polyline,Value(class java.lang.String),true), Arg(summary_polyline,Value(class java.lang.String),true), Arg(resource_state,Value(int),false))))),false), Arg(trainer,Value(boolean),false), Arg(commute,Value(boolean),false), Arg(manual,Value(boolean),false), Arg(private,Value(boolean),false), Arg(flagged,Value(boolean),false), Arg(gear_id,Value(class java.lang.String),true), Arg(average_speed,Value(float),false), Arg(max_speed,Value(float),false), Arg(average_cadence,Value(float),true), Arg(average_temp,Value(int),true), Arg(average_watts,Value(float),true), Arg(kilojoules,Value(float),true), Arg(device_watts,Value(boolean),true), Arg(average_heartrate,Value(float),true), Arg(max_heartrate,Value(float),true), Arg(total_photo_count,Value(int),false), Arg(has_kudoed,Value(boolean),false), Arg(workout_type,Value(int),true)))))
        at net.liftweb.json.Meta$.fail(Meta.scala:201)
        at net.liftweb.json.Extraction$.newCollection$1(Extraction.scala:309)
        at net.liftweb.json.Extraction$.build$1(Extraction.scala:331)
        at net.liftweb.json.Extraction$.extract0(Extraction.scala:375)
        at net.liftweb.json.Extraction$.extract0(Extraction.scala:200)
        at net.liftweb.json.Extraction$.extract(Extraction.scala:43)
        at net.liftweb.json.JsonAST$JValue.extract(JsonAST.scala:703)
        at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$2(ScravaClient.scala:344)
        at scala.util.Try$.apply(Try.scala:209)
        at kiambogo.scrava.ScravaClient.$anonfun$listAthleteActivities$1(ScravaClient.scala:344)
        ... 13 more
orium commented 3 years ago

Strava deprecated the authentication mechanism we are using (issue #5). Unfortunately I don't have a ton of time to work on this, but I might pick this up when I have some time.

amishwins commented 3 years ago

Thanks for responding :)