file upload to pnut
This commit is contained in:
parent
5026760fa0
commit
50b58cc16f
4 changed files with 59 additions and 4 deletions
|
@ -3,6 +3,7 @@ import { Nav, Platform } from 'ionic-angular';
|
|||
import { StatusBar } from '@ionic-native/status-bar';
|
||||
import { SplashScreen } from '@ionic-native/splash-screen';
|
||||
import { Storage } from '@ionic/storage';
|
||||
import { Device } from '@ionic-native/device';
|
||||
|
||||
import { LoginPage } from '../pages/login/login';
|
||||
import { StreamPage } from '../pages/stream/stream';
|
||||
|
@ -21,7 +22,7 @@ export class MyApp {
|
|||
pages: Array<{title: string, component: any, params: Object}>;
|
||||
|
||||
constructor(public platform: Platform, public statusBar: StatusBar, public splashScreen: SplashScreen,
|
||||
private storage: Storage) {
|
||||
private storage: Storage, private device: Device) {
|
||||
this.initializeApp();
|
||||
|
||||
// used for an example of ngFor and navigation
|
||||
|
|
|
@ -13,6 +13,10 @@ import { SplashScreen } from '@ionic-native/splash-screen';
|
|||
import { IonicStorageModule } from '@ionic/storage';
|
||||
import { Device } from '@ionic-native/device';
|
||||
import { FileChooser } from '@ionic-native/file-chooser';
|
||||
import { FilePath } from '@ionic-native/file-path';
|
||||
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
|
||||
import { File } from '@ionic-native/file';
|
||||
import { HTTP } from '@ionic-native/http';
|
||||
import { TimeagoPipe } from '../pipes/timeago/timeago';
|
||||
import { ParserPipe } from '../pipes/parser/parser';
|
||||
|
||||
|
@ -48,6 +52,11 @@ import { ParserPipe } from '../pipes/parser/parser';
|
|||
SplashScreen,
|
||||
Device,
|
||||
FileChooser,
|
||||
FilePath,
|
||||
FileTransfer,
|
||||
FileTransferObject,
|
||||
File,
|
||||
HTTP,
|
||||
{provide: ErrorHandler, useClass: IonicErrorHandler}
|
||||
]
|
||||
})
|
||||
|
|
|
@ -30,7 +30,7 @@ export class LoginPage {
|
|||
constructor(public navCtrl: NavController, public navParams: NavParams, private storage: Storage,
|
||||
private device: Device) {
|
||||
|
||||
let scope = ['basic','stream','write_post'];
|
||||
let scope = ['basic','stream','write_post','files'];
|
||||
|
||||
if (this.device.platform === "Android" || this.device.platform === "amazon-fireos") {
|
||||
this.oauth = new OauthCordova();
|
||||
|
|
|
@ -3,6 +3,10 @@ import { ViewController, NavController, NavParams, ModalController, Content, Toa
|
|||
import { ThreadPage } from '../thread/thread';
|
||||
import { Storage } from '@ionic/storage';
|
||||
import { FileChooser } from '@ionic-native/file-chooser';
|
||||
import { FilePath } from '@ionic-native/file-path';
|
||||
import { FileTransfer, FileUploadOptions, FileTransferObject } from '@ionic-native/file-transfer';
|
||||
import { File } from '@ionic-native/file';
|
||||
import { HTTP } from '@ionic-native/http';
|
||||
import { Events } from 'ionic-angular';
|
||||
|
||||
import * as pnut from 'pnut-butter';
|
||||
|
@ -338,7 +342,7 @@ export class StreamPage {
|
|||
<ion-row justify-content-end>
|
||||
<ion-col offset-0>
|
||||
<button ion-button (click)="attachImage()">
|
||||
<ion-icon name="image"></ion-icon>
|
||||
<ion-icon name="attach"></ion-icon>
|
||||
</button>
|
||||
</ion-col>
|
||||
<ion-col col-2><div text-center>{{textCount()}}</div></ion-col>
|
||||
|
@ -356,13 +360,17 @@ export class NewPostModal {
|
|||
title: string;
|
||||
replyid: string;
|
||||
ptext: string = "";
|
||||
fname: string = "";
|
||||
fpath: string = "";
|
||||
options: Object = {};
|
||||
myUsername: string;
|
||||
authToken: string;
|
||||
longpost: Object = {};
|
||||
raw: {type: string, value: Object}[] = [];
|
||||
|
||||
constructor(public navParams: NavParams, public viewCtrl: ViewController, public toastCtrl: ToastController,
|
||||
private fileChooser: FileChooser, public events: Events) {
|
||||
private fileChooser: FileChooser, private storage: Storage, public events: Events, private filePath: FilePath,
|
||||
private transfer: FileTransfer, private file: File, private http: HTTP) {
|
||||
console.log(JSON.stringify(this.navParams));
|
||||
this.myUsername = navParams.data.me;
|
||||
if (navParams.data.type === 'reply') {
|
||||
|
@ -385,6 +393,9 @@ export class NewPostModal {
|
|||
} else {
|
||||
this.title = "New Post";
|
||||
}
|
||||
this.storage.get('token').then((val) => {
|
||||
this.authToken = val;
|
||||
});
|
||||
}
|
||||
|
||||
dismiss() {
|
||||
|
@ -458,9 +469,43 @@ export class NewPostModal {
|
|||
|
||||
attachImage() {
|
||||
console.log('file chooser');
|
||||
const fileTransfer: FileTransferObject = this.transfer.create();
|
||||
|
||||
this.fileChooser.open().then(uri => {
|
||||
console.log('File URI: ' + uri);
|
||||
this.filePath.resolveNativePath(uri).then(filePath => {
|
||||
this.fpath = filePath;
|
||||
this.fname = filePath.split('/').pop();
|
||||
console.log('-filepath-');
|
||||
console.log(this.fpath);
|
||||
console.log(this.fname);
|
||||
|
||||
let options: FileUploadOptions = {
|
||||
fileKey: 'content',
|
||||
fileName: this.fname,
|
||||
params: {
|
||||
name: this.fname,
|
||||
type: 'com.monkeystew.goober_m',
|
||||
is_public: true
|
||||
},
|
||||
headers: {'Authorization': 'Bearer ' + this.authToken}
|
||||
}
|
||||
|
||||
fileTransfer.upload(this.fpath, 'https://api.pnut.io/v0/files', options).then((response) => {
|
||||
console.log('-file created-');
|
||||
console.log(JSON.stringify(response));
|
||||
console.log('-file created-');
|
||||
}).catch((err) => {
|
||||
console.log('-create file error-');
|
||||
console.log(JSON.stringify(err));
|
||||
console.log('-create file error-');
|
||||
});
|
||||
|
||||
}).catch(err => {
|
||||
console.log('-error getting filepath-');
|
||||
console.log(err);
|
||||
});
|
||||
|
||||
}).catch(err => {
|
||||
console.log(err);
|
||||
});
|
||||
|
|
Reference in a new issue