gopro-plus-0.3.1.1: GoPro Plus Client API.

Copyright(c) Dustin Sallings 2020
LicenseBSD3
Maintainerdustin@spy.net
Stabilityexperimental
Safe HaskellNone
LanguageHaskell2010

GoPro.Plus.Media

Contents

Description

GoPro Plus media client.

Synopsis

Accessing Data

list Source #

Arguments

:: (HasGoProAuth m, MonadIO m) 
=> Int

Number of items per page.

-> Int

Page number (one-based).

-> m ([Medium], PageInfo) 

List a page worth of media.

listAll :: (HasGoProAuth m, MonadIO m) => m [Medium] Source #

List all media.

listWhile :: (HasGoProAuth m, MonadIO m) => ([Medium] -> Bool) -> m [Medium] Source #

List all media while returned batches pass the given predicate.

medium :: (HasGoProAuth m, FromJSON j, MonadIO m) => MediumID -> m j Source #

Get the current Medium record for the given Medium ID.

retrieve :: (HasGoProAuth m, FromJSON j, MonadIO m) => MediumID -> m j Source #

Get download descriptors for a given medium. The format is typically FileInfo, but it can be useful to map it into something else.

delete :: (HasGoProAuth m, MonadIO m) => MediumID -> m [Error] Source #

Delete an item.

fetchThumbnail :: (HasGoProAuth m, MonadIO m) => Medium -> m ByteString Source #

Fetch a 450px wide thumbnail data for the given medium.

Data Types

data PageInfo Source #

Constructors

PageInfo 
Instances
Eq PageInfo Source # 
Instance details

Defined in GoPro.Plus.Media

Show PageInfo Source # 
Instance details

Defined in GoPro.Plus.Media

Generic PageInfo Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep PageInfo :: Type -> Type #

Methods

from :: PageInfo -> Rep PageInfo x #

to :: Rep PageInfo x -> PageInfo #

FromJSON PageInfo Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep PageInfo Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep PageInfo = D1 (MetaData "PageInfo" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "PageInfo" PrefixI True) ((S1 (MetaSel (Just "_current_page") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_per_page") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) :*: (S1 (MetaSel (Just "_total_items") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_total_pages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))

data Medium Source #

Instances
Show Medium Source # 
Instance details

Defined in GoPro.Plus.Media

Generic Medium Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep Medium :: Type -> Type #

Methods

from :: Medium -> Rep Medium x #

to :: Rep Medium x -> Medium #

ToJSON Medium Source # 
Instance details

Defined in GoPro.Plus.Media

FromJSON Medium Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Medium Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Medium = D1 (MetaData "Medium" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "Medium" PrefixI True) (((S1 (MetaSel (Just "_medium_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MediumID) :*: (S1 (MetaSel (Just "_medium_camera_model") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String)) :*: S1 (MetaSel (Just "_medium_captured_at") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UTCTime))) :*: (S1 (MetaSel (Just "_medium_created_at") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 UTCTime) :*: (S1 (MetaSel (Just "_medium_file_size") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)) :*: S1 (MetaSel (Just "_medium_moments_count") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)))) :*: ((S1 (MetaSel (Just "_medium_ready_to_view") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 ReadyToViewType) :*: (S1 (MetaSel (Just "_medium_source_duration") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe String)) :*: S1 (MetaSel (Just "_medium_type") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 MediumType))) :*: (S1 (MetaSel (Just "_medium_token") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: (S1 (MetaSel (Just "_medium_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)) :*: S1 (MetaSel (Just "_medium_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int)))))))

data Listing Source #

Constructors

Listing 

Fields

Instances
Show Listing Source # 
Instance details

Defined in GoPro.Plus.Media

Generic Listing Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep Listing :: Type -> Type #

Methods

from :: Listing -> Rep Listing x #

to :: Rep Listing x -> Listing #

FromJSON Listing Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Listing Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Listing = D1 (MetaData "Listing" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "Listing" PrefixI True) (S1 (MetaSel (Just "_media") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Medium]) :*: S1 (MetaSel (Just "_pages") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 PageInfo)))

data File Source #

Instances
Show File Source # 
Instance details

Defined in GoPro.Plus.Media

Methods

showsPrec :: Int -> File -> ShowS #

show :: File -> String #

showList :: [File] -> ShowS #

Generic File Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep File :: Type -> Type #

Methods

from :: File -> Rep File x #

to :: Rep File x -> File #

FromJSON File Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep File Source # 
Instance details

Defined in GoPro.Plus.Media

data Variation Source #

Instances
Show Variation Source # 
Instance details

Defined in GoPro.Plus.Media

Generic Variation Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep Variation :: Type -> Type #

FromJSON Variation Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Variation Source # 
Instance details

Defined in GoPro.Plus.Media

data SpriteFrame Source #

Constructors

SpriteFrame 
Instances
Show SpriteFrame Source # 
Instance details

Defined in GoPro.Plus.Media

Generic SpriteFrame Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep SpriteFrame :: Type -> Type #

FromJSON SpriteFrame Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep SpriteFrame Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep SpriteFrame = D1 (MetaData "SpriteFrame" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "SpriteFrame" PrefixI True) (S1 (MetaSel (Just "_frame_count") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: (S1 (MetaSel (Just "_frame_height") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int) :*: S1 (MetaSel (Just "_frame_width") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int))))

data Sprite Source #

Instances
Show Sprite Source # 
Instance details

Defined in GoPro.Plus.Media

Generic Sprite Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep Sprite :: Type -> Type #

Methods

from :: Sprite -> Rep Sprite x #

to :: Rep Sprite x -> Sprite #

FromJSON Sprite Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Sprite Source # 
Instance details

Defined in GoPro.Plus.Media

data FileStuff Source #

Constructors

FileStuff 
Instances
Show FileStuff Source # 
Instance details

Defined in GoPro.Plus.Media

Generic FileStuff Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep FileStuff :: Type -> Type #

FromJSON FileStuff Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep FileStuff Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep FileStuff = D1 (MetaData "FileStuff" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "FileStuff" PrefixI True) ((S1 (MetaSel (Just "_files") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [File]) :*: S1 (MetaSel (Just "_variations") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Variation])) :*: (S1 (MetaSel (Just "_sprites") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Sprite]) :*: S1 (MetaSel (Just "_sidecar_files") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 [Value]))))

data FileInfo Source #

Constructors

FileInfo 
Instances
Show FileInfo Source # 
Instance details

Defined in GoPro.Plus.Media

Generic FileInfo Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep FileInfo :: Type -> Type #

Methods

from :: FileInfo -> Rep FileInfo x #

to :: Rep FileInfo x -> FileInfo #

FromJSON FileInfo Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep FileInfo Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep FileInfo = D1 (MetaData "FileInfo" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "FileInfo" PrefixI True) (S1 (MetaSel (Just "_fileStuff") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 FileStuff) :*: S1 (MetaSel (Just "_filename") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String)))

data Error Source #

Instances
Show Error Source # 
Instance details

Defined in GoPro.Plus.Media

Methods

showsPrec :: Int -> Error -> ShowS #

show :: Error -> String #

showList :: [Error] -> ShowS #

Generic Error Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep Error :: Type -> Type #

Methods

from :: Error -> Rep Error x #

to :: Rep Error x -> Error #

FromJSON Error Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Error Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Error = D1 (MetaData "Error" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "Error" PrefixI True) ((S1 (MetaSel (Just "_error_reason") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: S1 (MetaSel (Just "_error_code") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Int)) :*: (S1 (MetaSel (Just "_error_description") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String) :*: S1 (MetaSel (Just "_error_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 String))))

data Moment Source #

A moment of interestingness in a Medium.

Constructors

Moment 
Instances
Show Moment Source # 
Instance details

Defined in GoPro.Plus.Media

Generic Moment Source # 
Instance details

Defined in GoPro.Plus.Media

Associated Types

type Rep Moment :: Type -> Type #

Methods

from :: Moment -> Rep Moment x #

to :: Rep Moment x -> Moment #

ToJSON Moment Source # 
Instance details

Defined in GoPro.Plus.Media

FromJSON Moment Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Moment Source # 
Instance details

Defined in GoPro.Plus.Media

type Rep Moment = D1 (MetaData "Moment" "GoPro.Plus.Media" "gopro-plus-0.3.1.1-6bWybPHUVtf1tFkF9MPY3T" False) (C1 (MetaCons "Moment" PrefixI True) (S1 (MetaSel (Just "_moment_id") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 Text) :*: S1 (MetaSel (Just "_moment_time") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 (Maybe Int))))

moments :: (HasGoProAuth m, MonadIO m) => MediumID -> m [Moment] Source #

Get the moments for the given medium.

Low-level Junk

updateMedium Source #

Arguments

:: (HasGoProAuth m, MonadIO m, FromJSON j, Putable a) 
=> (j -> a)

Transformation function.

-> MediumID

Medium to update.

-> m () 

Fetch, modify, and store a medium value.

putMedium :: (HasGoProAuth m, MonadIO m, Putable a) => MediumID -> a -> m () Source #

Put a Medium. It's probably best to get a raw JSON Value and update it in place.