Skip to content

Simple and intuitive client for communication with strava.cz API

License

Notifications You must be signed in to change notification settings

liberatos278/strava.js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

strava.js

Simple and intuitive client for communication with strava.cz API.

Installation

You need Node and NPM (Node Package Manager)

npm install @liberatos/strava.js

How to start

Create new strava.js client

  const client = new Client(username, password, code, options)
  
  client.login((sessionId) => {
    console.log(`Logged in with sessionId: ${sessionId}`)
  })
Parameter Type Required Description
username string Yes Strava.cz credentials (username)
password string Yes Strava.cz credentials (password)
code number Yes Code of canteen
options ClientOptions No Custom client settings

ClientOptions

Parameter Type Default Description
refreshSession boolean false Automatically renews the session if it expires
autoSave boolean false Saves orders immediately after changing

Features

The strava.js client provides several methods for retrieving or modifying data. Most of them are asynchronous.

  • login(callback)
  • logout()
  • getOverpayment()
  • getOrders()
  • getDispensings()
  • getPayments()
  • getMessages()
  • changeOrder(orderId, mealId, state)
  • changeOrders(changes)
  • saveOrders(orders)

async login(callback): Promise

Calling the method is necessary before using other client functions that require user authorization. If the login is successful, it returns the sessionId. Similarly, the callback function will be called with the parameter of the retrieved sessionId, if specified.

async logout(): Promise

This method invalidates the sessionId, thus logging the user out. Returns void.

Authorization is required for use

async getOverpayment(): Promise

Returns the current overpayment on the user's account.

Authorization is required for use

async getOrders(): Promise<Order[]>

Returns all available user's orders and meals.

Authorization is required for use

async getDispensings(): Promise<Dispensing[]>

Returns available order dispensing history.

Authorization is required for use

async getPayments(): Promise<Payment[]>

Returns the payment history of the user's account (top-ups).

Authorization is required for use

async getMessages(): Promise<Message[]>

Returns messages that have been sent to the user. Currently only general information about the message can be retrieved, content is not supported for now.

Authorization is required for use

async changeOrder(orderId, mealId, state): Promise<Order[]>

Returns a modified array of orders as requested. The method has validation implemented, so you can't have two types of meals logged per order. If you try to log two meals, the originally logged meal will be checked out. If you can no longer change the status of the order, you will receive an error. Only one order can be edited at a time using this method.

If autoSave is enabled, the change will be automatically saved on the server - otherwise you have to save it manually.

  const modified = await client.changeOrder(1672500000, 1, true)

Authorization is required for use

async changeOrders(changes): Promise<Order[]>

This method is identical to the previous one, but you can change multiple orders at once.

  const changes: ChangeMealOptions[] = [
    { orderId: 1672500000, mealId: 1, state: false },
    { orderId: 1662430000, mealId: 2, state: false },
    { orderId: 1663800000, mealId: 1, state: true }
  ]

  const modified = await client.changeOrders(changes)

Authorization is required for use

async saveOrders(orders): Promise

The method saves all orders that are passed as a parameter. It is necessary to save all available orders as well as those that have not been changed.

I recommend using the autoSave function, which means you won't have to use this feature at all.

  const modified = await client.changeOrder(1672500000, 1, true)
  await client.saveChanges(modified)

Authorization is required for use

Typing

An overview of the interfaces used by the package.

Order

Parameter Type Description
id number Created from unix timestamp
date Date Date of order
meals Array<Meal> Meals available in order

Meal

Parameter Type Description
id number
name string
description string
selected boolean Is meal selected within the order
canChange boolean If the selected state can be changed
allergens Array<string> | null
details MealDetails Detail infomations

MealDetails

Parameter Type Description
price FinancialAmount | null
endOfCheckIn Date | null
endOfCheckOut Date | null

FinancialAmount

Parameter Type Description
amount number
currency string

Dispensing

Parameter Type Description
description string
date Date
pickupTime number | null Time when the meal was picked up
picked boolean
mealVoucher boolean If the voucher was used to pick up the meal

Payment

Parameter Type Description
description string
date Date
details FinancialAmount

Message

Parameter Type Description
subject string
recipient string Most often email
date Date

ChangeMealOptions

Parameter Type Description
orderId number
mealId number
state boolean

Authors